#!/usr/bin/env python3 """PostToolUse hook: 编辑 backend router 后提醒重抓 OpenAPI 历史教训(2026-04-06 commit 779b2f6): 脚本 scripts/ops/_export_openapi.py 被 Claude Opus 4.6 误归档到 _DEL/, 导致 28 天内 docs/contracts/openapi/backend-api.json 与代码漂移 (137 paths stale → 实际 167 paths,缺 30 个端点)。 Wave 1 F2-1A 恢复脚本 + F2-1B(本 hook)建立防御机制, 任何 router 改动后提醒重抓,确保 OpenAPI 静态导出不再 stale。 """ import json import re import sys try: data = json.load(sys.stdin) except Exception: sys.exit(0) fp = (data.get("tool_input") or {}).get("file_path", "") if not fp: sys.exit(0) rel = re.sub(r"^.*?NeoZQYY[/\\]", "", fp.replace("\\", "/")) if re.search(r"^apps/backend/app/routers/.*\.py$", rel): print(json.dumps({ "hookSpecificOutput": { "hookEventName": "PostToolUse", "additionalContext": ( f"[openapi-sync] 已编辑后端 router: {rel} — " "如有新增/修改/删除端点,完成后须重抓 OpenAPI: " "`.venv/Scripts/python.exe scripts/ops/_export_openapi.py` " "(更新 docs/contracts/openapi/backend-api.json,避免静态导出 stale)" ) } }))