fix(pbl_evidence): gen_pk 注册三处同步——补包 __init__.py 导出 + init.py load_pbl_evidence() 挂 env.gen_pk(消 QC #5)

- 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)
This commit is contained in:
agent.develop 2026-09-23 00:32:04 +08:00
parent 90449ad478
commit d35de3e0b0
2 changed files with 13 additions and 0 deletions

View File

@ -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'

View File

@ -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