From d35de3e0b02bf2f48d4a1a85b31098cb43579cff Mon Sep 17 00:00:00 2001 From: "agent.develop" Date: Wed, 23 Sep 2026 00:32:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(pbl=5Fevidence):=20gen=5Fpk=20=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E4=B8=89=E5=A4=84=E5=90=8C=E6=AD=A5=E2=80=94=E2=80=94?= =?UTF-8?q?=E8=A1=A5=E5=8C=85=20=5F=5Finit=5F=5F.py=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=20+=20init.py=20load=5Fpbl=5Fevidence()=20=E6=8C=82=20env.gen?= =?UTF-8?q?=5Fpk=EF=BC=88=E6=B6=88=20QC=20#5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pbl_evidence/__init__.py:48 新增 from pbl_evidence.pk import gen_pk,:64 加入 __all__ - pbl_evidence/init.py:45 import gen_pk,:77 env.gen_pk = gen_pk(宿主/其他模块可经 env 复用同一主键口径) - 不改 pk.py 的 gen_pk 实现、不改 models/*.json 与 DDL、不改 collector.py/api.py 业务逻辑 - 验证:grep 命中定义(pk.py:45)/导出(__init__.py:48)/env 挂载(init.py:77) 三处;py_compile 五文件 RC=0; bash scripts/run_tests.sh 8 passed 1 skipped;python3 tests/m5a_live_db_harness.py LIVE DB HARNESS ALL PASS RC=0 - 本任务为收口重做(QC 退回 #1~#7) --- pbl_evidence/__init__.py | 6 ++++++ pbl_evidence/init.py | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/pbl_evidence/__init__.py b/pbl_evidence/__init__.py index 8bcfa19..6f6f62b 100644 --- a/pbl_evidence/__init__.py +++ b/pbl_evidence/__init__.py @@ -42,6 +42,10 @@ from pbl_evidence.evidence_map import ( EVENT_TO_EVIDENCE, evidence_types_for_events, ) +# 主键生成器(三处同步之 ②:定义在 pk.py:45,包内导出,init.py 里挂 env.gen_pk)。 +# 缺本行 → 宿主/其他模块 `from pbl_evidence import gen_pk` ImportError; +# 缺 init.py 的 env 挂载 → .dspy 里调用 NameError(M5a 事故根因)。 +from pbl_evidence.pk import gen_pk __all__ = [ 'pbl_artifact_create', 'pbl_artifact_read', 'pbl_artifact_update', @@ -56,6 +60,8 @@ __all__ = [ 'pbl_evidence_collect_idempotent', 'pbl_evidence_aggregate', 'pbl_evidence_query', 'pbl_evidence_subject_summary', 'resolve_idempotency_key', 'apply_default_filters', 'aggregate_rows', + # 主键生成器(collector.py:235 / api.py:102 / api.py:278 三条插入路径共用) + 'gen_pk', ] __version__ = '1.2.0' diff --git a/pbl_evidence/init.py b/pbl_evidence/init.py index 6e98525..8812431 100644 --- a/pbl_evidence/init.py +++ b/pbl_evidence/init.py @@ -41,6 +41,8 @@ from pbl_evidence.crud_api import ( pbl_evidence_update, ) from pbl_evidence.evidence_map import EVIDENCE_TYPES, EVENT_TO_EVIDENCE +# 主键生成器(三处同步之 ③ 的 import 侧:定义 pk.py:45 / 导出 __init__.py / 本文件挂 env) +from pbl_evidence.pk import gen_pk def load_pbl_evidence(): @@ -68,6 +70,11 @@ def load_pbl_evidence(): env.pbl_evidence_aggregate = pbl_evidence_aggregate env.pbl_evidence_query = pbl_evidence_query env.pbl_evidence_subject_summary = pbl_evidence_subject_summary + # ── 主键生成器(三处同步之 ③:env 挂载)──────────────────────── + # collector.py:235 / api.py:102 / api.py:278 三条插入路径都靠它显式生成 id, + # 挂 env 后宿主与其他模块可经 env.gen_pk('ev') 复用同一口径,避免各自造主键 + # 导致 STRICT_TRANS_TABLES 下 1364 Field 'id' doesn't have a default value 复发。 + env.gen_pk = gen_pk # ── 复数别名(硬门禁 5:CRUD 生成端点按复数表名取函数,单复数都要可达)── env.pbl_artifact_lists = pbl_artifact_list env.pbl_artifact_options_plural = pbl_artifact_options