fix(bot-bridge): subjects 写入端点编码长度收敛到 DB 列宽20 — 21~32字符编码原穿过校验触发 MySQL 1406 整批500, 改为400拒绝 (dama-cma-subjects-write-endpoint-20260912 复核)
This commit is contained in:
@@ -987,7 +987,10 @@ _SUBJ_FIELDS = ("subject_code", "subject_name", "parent_code", "level", "categor
|
||||
_SUBJ_CATEGORIES = ("asset", "liability", "equity", "cost", "income", "expense", "detail", "other")
|
||||
_SUBJ_LEVELS = (1, 2, 3)
|
||||
_SUBJ_MAX_ROWS = 2000
|
||||
_SUBJ_CODE_MAXLEN = 32
|
||||
# subject_code / parent_code 长度上限:任务规格为 ≤32,但 DB 列 subjects.subject_code /
|
||||
# parent_code 实为 varchar(20) —— 取交集 20。若按 32 放行,21~32 字符的编码会穿过校验直达
|
||||
# MySQL,报 (1406, Data too long) → 整批 500(2026-09-12 生产实测),故此处收敛到 DB 列宽。
|
||||
_SUBJ_CODE_MAXLEN = 20
|
||||
_SUBJ_NAME_MAXLEN = 200
|
||||
|
||||
|
||||
@@ -1006,7 +1009,7 @@ def _validate_subject_rows(rows, db):
|
||||
"""行级全量校验(任一错误 → 400 且零落库),返回标准化行 [{字段}]
|
||||
|
||||
规则(任务 dama-cma-subjects-write-endpoint-20260912):
|
||||
subject_code 非空且 ≤32 字符 + 批次内去重;subject_name 非空(DB NOT NULL)且 ≤200;
|
||||
subject_code 非空且 ≤_SUBJ_CODE_MAXLEN(=20,DB varchar(20) 列宽)+ 批次内去重;subject_name 非空(DB NOT NULL)且 ≤200;
|
||||
level ∈ {1,2,3}(缺省 1);parent_code 为空或存在于本表(或本批次内,支持层级同批导入);
|
||||
category 限枚举;is_active ∈ {0,1}(缺省 1)。
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user