问题1(部署早于开发启动):
- _check_orchestration_gaps 重构为结构化缺口(kind/fingerprint/task_id/fix_ids)
- 缺口不再只打日志:派发后当场回给PM + 持久化pipeline_pm_notices注入PM下回合上下文
- 新增 update_task_deps 原语:PM核实缺口后补依赖(修正是LLM决策,代码只查漏)
问题2(env补齐后waiting不唤醒):
- _bubble_deploy_env_missing 从自建人工任务死胡同迁移到统一问题通道(raise_problem)
- owner在待办回答→resolve_problem自动唤醒任务→QA注入agent prompt,信息真正交给LLM
问题3(task_title错位+重复确认):
- SDL_ROLES task_title 各归其位(需求分析/架构设计/脚手架开发/部署测试/功能测试)
- 确认去重:同迭代已确认且非回退重做→跳过重复确认直接派发
- _create_next_task 单例阶段幂等:requirement/design复用同迭代任意活跃任务
机制增强:
- 依赖启动策略 params.dep_policy: all(默认)/any/at_least{n},纯函数_eval_deps_policy
- init.py poller 手写依赖求值收敛到同一纯函数(消除两处语义漂移)
27 lines
1.4 KiB
JSON
27 lines
1.4 KiB
JSON
{
|
|
"summary": [
|
|
{
|
|
"name": "pipeline_pm_notices",
|
|
"title": "PM 编排查漏通知表",
|
|
"primary": ["id"],
|
|
"catelog": "entity"
|
|
}
|
|
],
|
|
"fields": [
|
|
{"name": "id", "title": "主键ID", "type": "str", "length": 32, "nullable": "no"},
|
|
{"name": "tenant_id", "title": "项目ID", "type": "str", "length": 32, "nullable": "no"},
|
|
{"name": "task_id", "title": "关联任务ID", "type": "str", "length": 32, "nullable": "yes"},
|
|
{"name": "fingerprint", "title": "缺口指纹(去重)", "type": "str", "length": 64, "nullable": "no"},
|
|
{"name": "gap_kind", "title": "缺口类型(G1/G2/G3)", "type": "str", "length": 8, "nullable": "yes"},
|
|
{"name": "gap_text", "title": "缺口事实描述", "type": "text"},
|
|
{"name": "status", "title": "通知状态", "type": "str", "length": 16, "nullable": "no", "default": "pending"},
|
|
{"name": "created_at", "title": "创建时间", "type": "timestamp", "nullable": "no"},
|
|
{"name": "updated_at", "title": "更新时间", "type": "timestamp", "nullable": "no"}
|
|
],
|
|
"indexes": [
|
|
{"name": "idx_ppn_tenant", "idxtype": "index", "idxfields": ["tenant_id"]},
|
|
{"name": "idx_ppn_status", "idxtype": "index", "idxfields": ["status"]},
|
|
{"name": "idx_ppn_fp", "idxtype": "unique", "idxfields": ["tenant_id", "fingerprint"]}
|
|
]
|
|
}
|