feat(deploy): 生产增量上线批次(2026-09-09)——dmig补DROP COLUMN幂等守卫(生产llm表由create_tables按最新models建出无旧列,m0009/m0010类删列迁移直跑1091中止);m0009_llm_model_drop_price_fields改号m0015(与m0009_rag_pipeline_access撞号被dict静默覆盖从未执行,实测两文件id同为m0009);m0016种子迁移14表(pricing_program/timing+product/category+discount+acctres/storres规格映射+pipeline_pricing_map+llm_vendor/model/api_profile/org_policy仅org0,mysqldump导出INSERT IGNORE幂等,api_key密文不进git走隔离通道);m0017(env=prod)business_date播种CURDATE+切日交accounting新端点dayend.dspy;rp.json注册dayend(any段,cron本机调用)

This commit is contained in:
yumoqing 2026-09-09 13:46:25 +08:00
parent f0d32f3be1
commit 58b37588f4
6 changed files with 144 additions and 18 deletions

View File

@ -19,7 +19,8 @@
"/unipay/usermenu.ui",
"/univer-office",
"/univer-office/**",
"/accounting/api/fetch_forex_rates.dspy"
"/accounting/api/fetch_forex_rates.dspy",
"/accounting/api/dayend.dspy"
],
"logined": [
"/idfile",

View File

@ -167,6 +167,14 @@ def render_step(conf, step, direction):
if m:
if column_exists(conf, m.group(1), m.group(3)):
return [], "列已存在: %s.%s" % (m.group(1), m.group(3))
# DROP COLUMN 幂等守卫:列已不存在则跳过(生产表由 create_tables.py 按最新
# models 建出、天然没有旧列m0009/m0010 类删列迁移直跑会 1091 中止)
m = re.match(r"ALTER\s+TABLE\s+`?(\w+)`?\s+DROP\s+(COLUMN\s+)?`?(\w+)`?", sql, re.I)
if m:
if not table_exists(conf, m.group(1)):
return [], "表不存在: %s" % m.group(1)
if not column_exists(conf, m.group(1), m.group(3)):
return [], "列已不存在: %s.%s" % (m.group(1), m.group(3))
m = re.match(r"CREATE\s+(UNIQUE\s+)?INDEX\s+`?(\w+)`?\s+ON\s+`?(\w+)`?", sql, re.I)
if m:
if index_exists(conf, m.group(3), m.group(2)):

View File

@ -1,17 +0,0 @@
{
"id": "m0009",
"title": "llm_model 删除价格/成本四字段price_input/price_output/cost_input/cost_output——定价统一走 ppid 定价平台模型表不再存单价2026-09-04 用户定夺)",
"backup_tables": ["llm_model"],
"up": [
{"op": "sql", "sql": "ALTER TABLE llm_model DROP COLUMN price_input"},
{"op": "sql", "sql": "ALTER TABLE llm_model DROP COLUMN price_output"},
{"op": "sql", "sql": "ALTER TABLE llm_model DROP COLUMN cost_input"},
{"op": "sql", "sql": "ALTER TABLE llm_model DROP COLUMN cost_output"}
],
"down": [
{"op": "sql", "sql": "ALTER TABLE llm_model ADD COLUMN price_input DECIMAL(12,6) NOT NULL DEFAULT 0 COMMENT '输入单价(元/千token)'"},
{"op": "sql", "sql": "ALTER TABLE llm_model ADD COLUMN price_output DECIMAL(12,6) NOT NULL DEFAULT 0 COMMENT '输出单价(元/千token)'"},
{"op": "sql", "sql": "ALTER TABLE llm_model ADD COLUMN cost_input DECIMAL(12,6) NOT NULL DEFAULT 0 COMMENT '输入成本(元/千token)'"},
{"op": "sql", "sql": "ALTER TABLE llm_model ADD COLUMN cost_output DECIMAL(12,6) NOT NULL DEFAULT 0 COMMENT '输出成本(元/千token)'"}
]
}

View File

@ -0,0 +1,43 @@
{
"id": "m0015",
"title": "llm_model 删除价格/成本四字段price_input/price_output/cost_input/cost_output——定价统一走 ppid 定价平台模型表不再存单价2026-09-04 用户定夺原编号m0009与rag迁移撞号被静默覆盖从未执行2026-09-09改号测试库列已不存在守卫将全skip",
"backup_tables": [
"llm_model"
],
"up": [
{
"op": "sql",
"sql": "ALTER TABLE llm_model DROP COLUMN price_input"
},
{
"op": "sql",
"sql": "ALTER TABLE llm_model DROP COLUMN price_output"
},
{
"op": "sql",
"sql": "ALTER TABLE llm_model DROP COLUMN cost_input"
},
{
"op": "sql",
"sql": "ALTER TABLE llm_model DROP COLUMN cost_output"
}
],
"down": [
{
"op": "sql",
"sql": "ALTER TABLE llm_model ADD COLUMN price_input DECIMAL(12,6) NOT NULL DEFAULT 0 COMMENT '输入单价(元/千token)'"
},
{
"op": "sql",
"sql": "ALTER TABLE llm_model ADD COLUMN price_output DECIMAL(12,6) NOT NULL DEFAULT 0 COMMENT '输出单价(元/千token)'"
},
{
"op": "sql",
"sql": "ALTER TABLE llm_model ADD COLUMN cost_input DECIMAL(12,6) NOT NULL DEFAULT 0 COMMENT '输入成本(元/千token)'"
},
{
"op": "sql",
"sql": "ALTER TABLE llm_model ADD COLUMN cost_output DECIMAL(12,6) NOT NULL DEFAULT 0 COMMENT '输出成本(元/千token)'"
}
]
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,12 @@
{
"id": "m0017",
"env": "prod",
"title": "business_date 生产播种(=部署当日CURDATE)+切日交 cron(/accounting/api/dayend.dspy 每日00:05)——生产 params 从未有此参数,get_business_date 直接抛 BusinessDateParamsError,记账链路(consume/bill)全断;值环境专属不从测试迁(测试停在2026-08-26);不可逆(回退走备份恢复)",
"backup_tables": ["params"],
"up": [
{"op": "sql", "sql": "INSERT INTO params (id, params_name, params_value) SELECT 'business_date', 'business_date', CURDATE() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM params WHERE params_name='business_date')"}
],
"down": [
{"op": "sql", "sql": "DELETE FROM params WHERE params_name='business_date'"}
]
}