sync: HP_BOWEI 2026-10-15

This commit is contained in:
Myfro9
2026-10-15 01:59:40 +08:00
parent 771acd4171
commit a0a3445bfd
21 changed files with 3042 additions and 16 deletions
+17 -1
View File
@@ -58,6 +58,9 @@ DEFAULT_GRAPH_ROOT = _env_lookup("KICAD_FLOW_ROOT", r"E:\LangGraph_Design\kicad-
RETRY_LIMITS = {
"partition": 3, "material": 5, "layout": 5, "vivado": 3, "mcu": 3,
"footprint": 5, "drawio-sync": 3, "recheck": 3, "requirement": 3,
"pcb-rules": 3,
# adjust 超限不是 safety_end,而是 d144「放弃调整原理图」,按原原理图继续布线
"adjust": 3,
}
@@ -165,7 +168,7 @@ def report(graph, thread: dict, before_len: int) -> int:
_out("先解决这个卡点,再用 `start --restart` 重跑,或用 --max-*-retry 调高上限。")
return 0
_out("[DONE] 图已跑完:原理图设计完成并已导入 PCB。")
_out("[DONE] 图已跑完:原理图完成、PCB 已布局、关键线(阻抗/差分/等长)已布完。")
_out(f"[REPORT] {values.get('report_path', '(未生成)')}")
_out(f"[PCB] {values.get('pcb_path', '(未回填)')}")
return 0
@@ -250,6 +253,17 @@ def cmd_resume(args):
snap = graph.get_state(thread)
if not snap.next:
_fatal("当前没有挂起的 interrupt,无需回填。先跑 status 看状态。")
# 判定键缺失时节点会把它当 False 处理、悄悄走另一条边(2026-09-23 DVBS2_dmod 的 d20
# 就这样被跳到了 d22)。所以 interrupt 声明的第一个键(判定/主结论键)必须给。
want = None
for task in snap.tasks:
if task.interrupts and isinstance(task.interrupts[0].value, dict):
want = task.interrupts[0].value.get("resume")
if isinstance(want, dict) and want and not args.allow_partial:
key0 = next(iter(want))
if key0 not in payload:
_fatal(f"回填缺少本节点的主键 {key0}({want[key0]})。"
f"本节点声明的键:{list(want)}。确实只想填部分键就加 --allow-partial")
before = len((snap.values or {}).get("history", []))
_out(f"[RESUME] {json.dumps(payload, ensure_ascii=False)}")
graph.invoke(Command(resume=payload), thread)
@@ -342,6 +356,8 @@ def main() -> int:
p.add_argument("--set", action="append", metavar="KEY=VALUE",
help="免转义回填;true/false→bool,纯数字→int,[ 或 { 开头→JSON")
p.add_argument("--json", help="直接给 JSON 对象(与 --set 可混用)")
p.add_argument("--allow-partial", action="store_true",
help="允许不填 interrupt 声明的主键(默认缺主键直接报错)")
p.set_defaults(func=cmd_resume)
p = sub.add_parser("list", help="列出该工程库里的所有线程")