feat(migration): m0021删llm_usage token冗余列+m0025加project_id列索引(2026-09-10用户定夺,配对pipeline-llm@427cd7c)

- m0021: usages JSON全量不截断为计费唯一事实源,req_tokens/resp_tokens同源冗余删除,
  统计查询走JSON_EXTRACT+JSON_VALID守卫;backup_tables含llm_usage,dmig幂等(列不存在跳过)
- m0025: 按项目统计费用,project_id NOT NULL DEFAULT '0'(哨兵=非项目调用,对齐org_id平台约定),
  idx_llm_usage_project(project_id,created_at);token绑定project_id全链透传落库
- 两迁移id字段与文件名一致性已校验;llm_call_trace新表走create_tables.py动态扫描models建表,无需迁移
This commit is contained in:
yumoqing 2026-09-11 15:30:24 +08:00
parent e294fc7a6b
commit 220901ff61
2 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1,13 @@
{
"id": "m0021",
"title": "llm_usage 删除 req_tokens/resp_tokens 冗余列2026-09-10 用户定夺usages JSON 是计费唯一事实源token 计数在其中;两列与 usages 同源冗余且曾被截断病根牵连,统计查询改 JSON_EXTRACT。dmig 幂等守卫:列已不存在自动跳过",
"backup_tables": ["llm_usage"],
"up": [
{"op": "sql", "sql": "ALTER TABLE llm_usage DROP COLUMN req_tokens"},
{"op": "sql", "sql": "ALTER TABLE llm_usage DROP COLUMN resp_tokens"}
],
"down": [
{"op": "sql", "sql": "ALTER TABLE llm_usage ADD COLUMN req_tokens INT NOT NULL DEFAULT 0 COMMENT '请求token(历史冗余列,计费看usages)'"},
{"op": "sql", "sql": "ALTER TABLE llm_usage ADD COLUMN resp_tokens INT NOT NULL DEFAULT 0 COMMENT '响应token(历史冗余列,计费看usages)'"}
]
}

View File

@ -0,0 +1,27 @@
{
"id": "m0025",
"title": "llm_usage 加 project_id 列+索引2026-09-10 用户定夺:按项目统计费用;非项目调用哨兵值'0'NOT NULL DEFAULT对齐org_id '0'平台约定查询不传project_id=不区分项目。token绑定的project_id沿llm_bridge→token→推理端点→govern_settle全链透传落库。dmig 幂等守卫:列/索引已存在自动跳过create_tables.py 也会按 models 自动补列)",
"backup_tables": [
"llm_usage"
],
"up": [
{
"op": "sql",
"sql": "ALTER TABLE llm_usage ADD COLUMN project_id VARCHAR(32) NOT NULL DEFAULT '0' COMMENT '项目ID(sd_projects.id;''0''=非项目调用,查询不传=不区分项目)' AFTER ppid"
},
{
"op": "sql",
"sql": "CREATE INDEX idx_llm_usage_project ON llm_usage (project_id, created_at)"
}
],
"down": [
{
"op": "sql",
"sql": "DROP INDEX idx_llm_usage_project ON llm_usage"
},
{
"op": "sql",
"sql": "ALTER TABLE llm_usage DROP COLUMN project_id"
}
]
}