fix(bot-bridge): subjects 写入端点编码长度收敛到 DB 列宽20 — 21~32字符编码原穿过校验触发 MySQL 1406 整批500, 改为400拒绝 (dama-cma-subjects-write-endpoint-20260912 复核)
This commit is contained in:
@@ -493,6 +493,24 @@ class TestSubjectsWrite:
|
||||
assert resp.status_code == 400
|
||||
assert "subject_name" in str(resp.json())
|
||||
|
||||
def test_code_too_long_400(self, client: TestClient, db: Session):
|
||||
"""编码长度上限 = min(任务规格 32, DB varchar(20)) = 20
|
||||
|
||||
生产实测(2026-09-12):按 32 放行时 21 字符编码穿过校验 → MySQL 1406 Data too long
|
||||
→ 整批 500;收敛到 DB 列宽后应 400 拒绝且零落库。
|
||||
"""
|
||||
resp = client.post(self.URL, json={"subjects": [
|
||||
self._row("9" * 21, "验证科目")]}, headers=BOT_KEY)
|
||||
assert resp.status_code == 400, resp.json()
|
||||
assert "超长" in str(resp.json())
|
||||
assert db.query(Subject).filter(Subject.subject_code == "9" * 21).count() == 0
|
||||
|
||||
def test_parent_code_too_long_400(self, client: TestClient):
|
||||
resp = client.post(self.URL, json={"subjects": [
|
||||
self._row("9402", "验证子科目", parent_code="9" * 21, level=2)]}, headers=BOT_KEY)
|
||||
assert resp.status_code == 400, resp.json()
|
||||
assert "超长" in str(resp.json())
|
||||
|
||||
# ── 落库语义 ──
|
||||
def test_dry_run_zero_write(self, client: TestClient, db: Session):
|
||||
before = db.query(Subject).count()
|
||||
|
||||
Reference in New Issue
Block a user