微信小程序页面迁移校验之前 P5任务处理之前
This commit is contained in:
@@ -8,7 +8,8 @@
|
||||
},
|
||||
"then": {
|
||||
"type": "runCommand",
|
||||
"command": "python .kiro/scripts/agent_on_stop.py"
|
||||
"command": "python C:/NeoZQYY/.kiro/scripts/agent_on_stop.py",
|
||||
"timeout": 360
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "agent-on-stop"
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Audit Flagger (Prompt Submit)",
|
||||
"description": "每次提交 prompt 时,基于 git status 判断是否存在高风险改动;若需要审计则写入 .kiro/.audit_state.json(无 stdout)。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "promptSubmit"
|
||||
},
|
||||
"then": {
|
||||
"type": "runCommand",
|
||||
"command": "python .kiro/scripts/audit_flagger.py"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "audit-flagger"
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Audit Reminder (Agent Stop, 15min)",
|
||||
"description": "若检测到高风险改动且未审计,则在 agentStop 以 stderr+非0 形式提醒(15 分钟限频;不写 stdout)。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "agentStop"
|
||||
},
|
||||
"then": {
|
||||
"type": "runCommand",
|
||||
"command": "python .kiro/scripts/audit_reminder.py"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "audit-reminder"
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Change Compliance Check (Agent Stop)",
|
||||
"description": "对话结束时,审查本次变更的合规性:DB 迁移是否已执行、DDL 是否合并至基线、新增文件是否遵循 doc-map、代码修改是否有对应文档/审计记录。先运行预扫描脚本过滤,无需审查时静默跳过以节省 Token。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "agentStop"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "先运行 `python .kiro/scripts/change_compliance_prescan.py` 获取预扫描结果。\n\n如果输出为 `NO_CHECK_NEEDED`,则回复「✅ 合规检查:无需审查项」,不做任何其他操作。\n\n如果输出为 JSON,则根据以下清单逐项审查并输出简短结论(每项一行,用 ✅/⚠️ 标记):\n\n1. **DB 迁移执行**:检查 `new_migration_sql` 中的 SQL 文件,连接测试库(pg_etl_test / pg_app_test)验证对应表/字段是否已存在。若未执行,标记 ⚠️ 并列出待执行文件。\n2. **DDL 基线合并**:若有迁移 SQL 但 `has_ddl_baseline` 为 false,检查 `docs/database/ddl/` 下对应基线文件是否已更新。\n3. **目录规范**:检查变更文件列表中的新增文件路径是否符合 doc-map 规范(模块专属放模块内、项目级放根目录、审计产物放 docs/audit/)。\n4. **文档同步**:检查 `code_without_docs` 列表,列出缺少对应文档更新的代码文件及其应更新的文档路径。\n\n输出格式极简,不超过 15 行。"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "change-compliance"
|
||||
}
|
||||
16
.kiro/hooks/cwd-guard-shell.kiro.hook
Normal file
16
.kiro/hooks/cwd-guard-shell.kiro.hook
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "CWD Guard for Shell",
|
||||
"description": "在 AI 执行 shell 命令前,检查是否在运行 Python 脚本。如果是,提醒 AI 确认 cwd 是否正确(仓库根 C:\\NeoZQYY),避免相对路径解析到错误位置。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "preToolUse",
|
||||
"toolTypes": [
|
||||
"shell"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "如果即将执行的命令包含 `python` 且涉及 scripts/ops/、.kiro/scripts/、apps/etl/connectors/feiqiu/scripts/ 下的脚本,请确认:1) cwd 参数是否设置为仓库根目录 C:\\NeoZQYY;2) 脚本是否已有 ensure_repo_root() 校验。如果 cwd 不对且脚本无校验,请修正 cwd 后再执行。对于非 Python 命令或不涉及上述目录的命令,直接放行。"
|
||||
}
|
||||
}
|
||||
15
.kiro/hooks/daily-revenue-report.kiro.hook
Normal file
15
.kiro/hooks/daily-revenue-report.kiro.hook
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "每日经营数据报告",
|
||||
"description": "手动触发后执行 daily_revenue_report.py,统计 3月1日至当天的每日经营数据(实收、充值、团购结算、到店人次、新会员、充值人数等),输出到 docs/reports/daily-revenue-latest.md",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "执行 python C:\\NeoZQYY\\scripts\\ops\\daily_revenue_report.py"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "daily-revenue-report"
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Data Flow Structure Analysis",
|
||||
"description": "手动触发数据流结构分析:先执行 Python 脚本采集 API JSON、DB 表结构、三层字段映射和 BD_manual 业务描述,再由报告生成器输出带锚点链接、业务描述、多示例值、白名单折叠和字段差异报告的 Markdown 文档。",
|
||||
"version": "4.0.0",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "执行数据流结构分析,按以下步骤完成。若发现已完成或有历史任务痕迹则清空,重新执行:\n\n第一阶段:数据采集\n1. 运行 `python scripts/ops/analyze_dataflow.py` 完成数据采集(如需指定日期范围,加 --date-from / --date-to 参数)\n2. 确认采集结果已落盘,包括:\n - json_trees/(含 samples 多示例值)\n - db_schemas/\n - field_mappings/(三层映射 + 锚点)\n - bd_descriptions/(BD_manual 业务描述)\n - collection_manifest.json(含 json_field_count、date_from、date_to)\n\n第二阶段:报告生成\n3. 运行 `python scripts/ops/gen_dataflow_report.py` 生成 Markdown 报告\n4. 报告包含以下增强内容:\n - 报告头含 API 请求日期范围(date_from ~ date_to)和 JSON 数据总量\n - 总览表含 API JSON 字段数列\n - 1.1 API↔ODS↔DWD 字段对比差异报告(白名单字段折叠汇总,不展开详细表格行)\n - 2.3 覆盖率表含业务描述列\n - API 源字段表含业务描述列 + 多示例值(枚举值解释)\n - ODS 表结构含业务描述列 + 上下游双向映射锚点链接\n - DWD 表结构含业务描述列 + ODS 来源锚点链接\n5. 输出文件路径和关键统计摘要\n\n白名单规则(v4):\n- ETL 元数据列(source_file, source_endpoint, fetched_at, payload, content_hash)\n- DWD 维表 SCD2 管理列(valid_from, valid_to, is_current, etl_loaded_at, etl_batch_id)\n- API siteProfile 嵌套对象字段\n- 白名单字段仍正常参与检查和统计,仅在报告中折叠显示并注明原因\n\n注意:当前仅分析飞球(feiqiu)连接器。未来新增连接器时,应自动发现并纳入分析范围。"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "dataflow-analyze"
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Manual: DB 文档全量同步",
|
||||
"description": "按需触发:对比 Postgres 实际 schema 与 docs/database/ 下的文档,自动补全或更新缺失/过时的表结构说明,并输出变更摘要。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "执行一次按需的数据库文档全量同步。\n\n步骤:\n1) 检查当前 Postgres schema(使用环境中可用的工具/命令,例如 pg_dump --schema-only 或查询 information_schema)。\n2) 与 docs/database 下现有文档进行对比。\n3) 更新缺失或过时的 schema/表结构文档。\n4) 输出对账摘要:哪些文档被修改了、修改原因。输出路径遵循.env路径定义。\n\n注意:如果需要执行 shell 命令,请通过 agent 的 shell 工具调用。"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "db-docs-sync"
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "ETL Data Consistency Check",
|
||||
"description": "手动触发 ETL 全链路数据一致性黑盒检查:获取最近一次成功的 ETL 任务,对 API→ODS→DWD→DWS/INDEX 逐表逐字段进行实际数据比对,输出详细的数据差异报告。",
|
||||
"version": "1.0.0",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "执行 ETL 全链路数据一致性黑盒检查,按以下步骤完成,若发现已完成或有历史任务痕迹则清空,重新执行:\n\n1. 运行 `python scripts/ops/etl_consistency_check.py`\n2. 脚本会自动:\n a. 从 LOG_ROOT 找到最近一次成功的 ETL 日志,解析本次执行的任务列表\n b. 从 FETCH_ROOT 读取本次 ETL 落盘的 API JSON 文件\n c. 连接数据库(PG_DSN),对本次任务涉及的每张表逐字段比对:\n - API JSON vs ODS:字段完整性、值采样比对(随机 5 条记录的关键字段)\n - ODS vs DWD:字段映射正确性、值转换验证(采样比对)\n - DWD vs DWS/INDEX:聚合逻辑验证(行数、关键指标抽查)\n d. 输出 Markdown 报告到 ETL_REPORT_ROOT\n3. 检查报告输出,汇总关键发现\n\n报告结构:\n- 1. ETL 执行概览(任务列表、成功/失败/跳过统计)\n- 2. API↔ODS 数据一致性(逐表逐字段值比对)\n- 3. ODS↔DWD 数据一致性(映射验证 + 值采样)\n- 4. DWD↔DWS 数据一致性(聚合逻辑验证)\n- 5. 异常汇总与建议\n\n注意:使用正式库 PG_DSN 连接(只读模式),不修改任何数据。"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "etl-data-consistency"
|
||||
}
|
||||
15
.kiro/hooks/etl-fullstack-integration.kiro.hook
Normal file
15
.kiro/hooks/etl-fullstack-integration.kiro.hook
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "ETL FULL TEST",
|
||||
"description": "一键执行 ETL 全流程前后端联调:启动服务 → Playwright 浏览器提交任务 → 实时监控 → 性能报告 → 黑盒一致性测试 → 服务清理。详细步骤参考 .kiro/specs/[ETL]-fullstack-integration/tasks.md",
|
||||
"version": "1.1.0",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "执行 ETL 全栈联调运维任务。先读取 `.kiro/specs/[ETL]-fullstack-integration/tasks.md` 获取完整步骤细节,然后严格按以下 6 大步骤依次执行。全程使用 Playwright 浏览器模拟真实用户操作,不直接调用 API。\n\n## 步骤 1:服务启动与健康检查\n- 用 controlPwshProcess 启动后端:uvicorn app.main:app --host 0.0.0.0 --port 8000,cwd=apps/backend/\n- 用 controlPwshProcess 启动前端:pnpm dev,cwd=apps/admin-web/\n- 等待服务就绪,验证 http://localhost:8000/docs 和 http://localhost:5173 可访问\n- Playwright 打开 http://localhost:5173,登录(用户名 admin,密码 admin123)\n- 验证登录成功后跳转到任务配置页,侧边栏菜单正常渲染\n\n## 步骤 2:浏览器操作 - 任务配置与提交\n- 在任务配置页(/)依次操作:\n - Flow 选择 api_full(API → ODS → DWD → DWS → INDEX)\n - 处理模式选择 full_window\n - 时间窗口模式设为【自定义】,开始 2025-7-01,结束为当前时间\n - 窗口切分【按天】,切分天数 30\n - 勾选 force_full(强制全量)\n - 任务选择区域全选 is_common=True 的常用任务(共 41 个)\n- 确认 CLI 命令预览区显示完整参数\n- 点击【直接执行】按钮(SendOutlined 图标),触发 POST /api/execution/run\n- 确认提交成功提示,记录 execution_id\n\n## 步骤 3:执行监控与 DEBUG\n- 导航到【任务管理】页面(/task-manager)\n- 在【队列】Tab 确认任务状态为 running\n- 点击 running 任务行,打开 WebSocket 实时日志流抽屉\n- 按需以 30秒~20分钟 弹性间隔检查页面状态\n- 检测日志中的 ERROR / CRITICAL / Traceback / Exception / WARNING 关键字\n- 连续 20 分钟无新日志输出则报超时警告\n- 任务完成(success/failed/cancelled)时停止监控\n- 收集所有 ERROR 和 WARNING 日志行及上下文,分析错误类型\n- 如果任务失败,切换到【历史】Tab 查看完整执行详情\n\n## 步骤 4:性能计时与报告生成\n- 在【历史】Tab 点击已完成任务查看执行详情\n- 通过 GET /api/execution/{id}/logs 获取完整日志\n- 从日志提取每个窗口切片(30天)的开始/结束时间,计算耗时\n- 识别 ODS / DWD / DWS / INDEX 各阶段耗时,标注 Top-5 瓶颈\n- 生成综合联调报告到 {SYSTEM_LOG_ROOT}/{date}__etl_integration_report.md\n- 报告包含:执行概要、性能报告(各切片耗时对比、Top-5)、DEBUG 报告\n\n## 步骤 5:黑盒数据一致性测试\n- 运行全链路检查器:uv run python scripts/ops/etl_consistency_check.py(cwd=C:\\\\NeoZQYY)\n - 脚本自动从 LOG_ROOT 找最近 ETL 日志,从 FETCH_ROOT 读 API JSON\n - 连接数据库(PG_DSN)逐表逐字段比对:API vs ODS、ODS vs DWD、DWD vs DWS\n - 白名单:ETL_META_COLS、SCD2_COLS 排除;API 空字符串 vs DB None 视为等价\n - 报告输出到 ETL_REPORT_ROOT\n- 检查 FlowRunner 内置一致性报告(ETL_REPORT_ROOT 下已自动生成)\n- 对比两份报告结论是否一致\n- 将黑盒测试结果摘要追加到步骤 4 的综合报告中(通过/失败统计、白名单差异、失败表清单)\n\n## 步骤 6:服务清理\n- 关闭 Playwright 浏览器实例\n- 停止 uvicorn 后端进程(controlPwshProcess stop)\n- 停止 pnpm dev 前端进程(controlPwshProcess stop)\n- 报告联调完成状态\n\n## 环境与规范要求\n- 环境变量从根 .env 加载(load_dotenv),缺失必须报错,禁止静默回退\n- 数据库使用测试库(PG_DSN 指向 test_etl_feiqiu)\n- 报告路径遵循 export-paths 规范,从环境变量读取\n- 需要的环境变量:PG_DSN、FETCH_ROOT、LOG_ROOT、ETL_REPORT_ROOT、SYSTEM_LOG_ROOT"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "etl-fullstack-integration"
|
||||
}
|
||||
15
.kiro/hooks/etl-unified-analysis.kiro.hook
Normal file
15
.kiro/hooks/etl-unified-analysis.kiro.hook
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "ETL Unified Analysis",
|
||||
"description": "手动触发 ETL 统一分析:合并数据流结构分析和数据一致性检查为一个流程。支持 --mode structure|consistency|full(默认 full),支持 --source api|etl-log(默认 api 主动采集最近 60 天)。",
|
||||
"version": "1.0.0",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "执行 ETL 统一分析,按以下步骤完成。若发现已完成或有历史任务痕迹则清空,重新执行:\n\n运行 `python scripts/ops/etl_unified_analysis.py`\n\n默认行为(full 模式):\n1. 第一阶段:数据流结构分析\n - 运行 analyze_dataflow.py 采集 API JSON、DB 表结构、三层字段映射、BD_manual 业务描述(默认最近 60 天)\n - 运行 gen_dataflow_report.py 生成结构分析报告\n2. 第二阶段:ETL 数据一致性检查\n - 运行 etl_consistency_check.py 对 API→ODS→DWD→DWS 逐表逐字段比对\n - 每张表展示数据截止日期(create_time/createtime/fetched_at 的 MAX 值)\n3. 第三阶段:报告合并\n - 将两份报告合并为一份统一报告,输出到 ETL_REPORT_ROOT\n\n可选参数:\n- `--mode structure` 仅执行结构分析\n- `--mode consistency` 仅执行一致性检查\n- `--source etl-log` 切换为读 ETL 落盘 JSON(而非主动调 API)\n- `--date-from YYYY-MM-DD` 指定起始日期\n- `--date-to YYYY-MM-DD` 指定截止日期\n- `--limit N` 每端点最大记录数\n- `--tables t1,t2` 指定分析的表\n\n白名单规则(继承 v5):\n- ETL 元数据列(source_file, source_endpoint, fetched_at, payload, content_hash)\n- DWD 维表 SCD2 管理列(valid_from, valid_to, is_current, etl_loaded_at, etl_batch_id)\n- API siteProfile 嵌套对象字段\n- 时间格式等价:同一时刻的不同格式表示视为内容相同\n- 白名单字段仍正常参与检查和统计,仅在报告中折叠显示并注明原因\n\n注意:\n- 当前仅分析飞球(feiqiu)连接器\n- 数据库使用测试库(TEST_DB_DSN),只读模式"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "etl-unified-analysis"
|
||||
}
|
||||
13
.kiro/hooks/h5-screenshot.kiro.hook
Normal file
13
.kiro/hooks/h5-screenshot.kiro.hook
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "H5 原型截图",
|
||||
"description": "手动触发:启动 HTTP 服务器 → 运行 screenshot_h5_pages.py 批量截取 docs/h5_ui/pages/ 下所有 H5 原型页面(iPhone 15 Pro Max, 430×932, DPR:3),输出到 docs/h5_ui/screenshots/。完成后关闭服务器。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "执行 H5 原型页面批量截图流程:\n1. 启动 HTTP 服务器:`python -m http.server 8765 --directory docs/h5_ui/pages`(用 controlPwshProcess 后台启动,cwd 为 C:\\NeoZQYY)\n2. 等待 2 秒确认服务器就绪\n3. 运行截图脚本:`python C:\\NeoZQYY\\scripts\\ops\\screenshot_h5_pages.py`(cwd 为 C:\\NeoZQYY,timeout 180s)\n4. 检查输出:列出 docs/h5_ui/screenshots/*.png 的文件名和大小,确认数量和关键交互态截图大小合理\n5. 停止 HTTP 服务器(controlPwshProcess stop)\n6. 简要汇报结果:总截图数、像素尺寸验证(应为 1290×N)、异常文件(如有)"
|
||||
}
|
||||
}
|
||||
16
.kiro/hooks/pre-change-guard.kiro.hook
Normal file
16
.kiro/hooks/pre-change-guard.kiro.hook
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Pre-Change Research Guard",
|
||||
"description": "在写操作执行前检查:是否已完成逻辑改动前置调研(审计历史、文档阅读、上下文摘要)。若未完成则阻止写入,先完成调研流程。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "preToolUse",
|
||||
"toolTypes": [
|
||||
"write"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "你即将执行写操作。请确认:\n\n1. 本次写操作是否涉及逻辑改动(ETL/业务规则/API/数据模型/前端交互)?\n2. 如果涉及逻辑改动,你是否已通过 context-gatherer 子代理完成前置调研,并向用户输出了上下文摘要且获得确认?\n\n若属于例外情况(纯格式/注释/文档纯文字/配置文件/.kiro 目录/用户明确跳过/新建不涉及已有逻辑),可直接继续。\n若未完成前置调研,必须先停止写操作,使用 context-gatherer 子代理完成调研流程后再继续。"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Prompt Audit Log (Shell)",
|
||||
"description": "每次提交 prompt 时,用本地 Shell 在 docs/audit/prompt_logs/ 生成独立日志文件(按时间戳命名);不触发 LLM,避免上下文膨胀。",
|
||||
"version": "3",
|
||||
"when": {
|
||||
"type": "promptSubmit"
|
||||
},
|
||||
"then": {
|
||||
"type": "runCommand",
|
||||
"command": "python .kiro/scripts/prompt_audit_log.py"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "prompt-audit-log"
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
},
|
||||
"then": {
|
||||
"type": "runCommand",
|
||||
"command": "python .kiro/scripts/prompt_on_submit.py"
|
||||
"command": "python C:/NeoZQYY/.kiro/scripts/prompt_on_submit.py"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "prompt-on-submit"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Manual: Run /audit (via audit-writer subagent)",
|
||||
"description": "按需触发:读取 agent-on-stop 预构建的审计上下文,启动 audit-writer 子代理执行审计落盘+文档校对。上下文过期时自动重建。",
|
||||
"version": "5",
|
||||
"description": "按需触发:读取 agent-on-stop 预构建的审计上下文 + Session 索引,启动 audit-writer 子代理执行审计落盘+文档校对+DB文档全量对账+Session关联。上下文过期时自动重建。",
|
||||
"version": "11",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "执行 /audit 审计流程:\n\n**前置检查**:读取 `.kiro/.audit_context.json`,检查 `built_at` 时间戳。若文件不存在或 `built_at` 超过 30 分钟,先运行 `python .kiro/scripts/agent_on_stop.py` 重建上下文,再重新读取。\n\n**主流程**:启动名为 audit-writer 的子代理,传入以下指令:\n\n> 读取 `.kiro/.audit_context.json` 作为唯一输入,不要自行运行 git status/diff/扫描文件。该文件已包含:变更文件列表、高风险文件 diff、合规检查清单(文档缺失/迁移状态/DDL 基线)、外部变更文件列表(external_files)、Prompt-ID 溯源。按 audit-writer.md 中定义的执行策略完成审计落盘+文档校对补齐。\n\n约束:\n- 子代理禁止重复运行 git status --porcelain 或 git diff 全量扫描,所有信息已在 .audit_context.json 中预备好。\n- 子代理需要读取具体文件内容时(如更新文档),可以直接读取对应文件,但不要做全仓库遍历。\n- 子代理必须按需调用 skill:steering-readme-maintainer、change-annotation-audit、bd-manual-db-docs(仅在满足触发条件时)。\n- 子代理必须根据 compliance.code_without_docs 自动补齐缺失的文档同步。\n- 若 external_files 非空,在审计记录中增加「外部变更」段落,列出这些文件并标注来源为非 Kiro 操作。\n- 所有审计产物统一写入 docs/audit/,不写入子模块内部。\n- 完成后把 .kiro/.audit_state.json 中 audit_required 置为 false。\n- 执行 `python scripts/audit/gen_audit_dashboard.py` 刷新审计一览表。\n- 最终回复必须是极短回执:done/files_written/next_step。"
|
||||
"prompt": "执行 /audit 审计流程:\n\n**第零步:获取当前时间**:运行 `python -c \"from datetime import datetime, timezone, timedelta; print(datetime.now(timezone(timedelta(hours=8))).isoformat())\"` 获取当前北京时间,记为 `now`。后续所有「超过 30 分钟」的判断以此 `now` 为基准。\n\n**前置检查**:读取 `.kiro/state/.audit_context.json`,检查 `built_at` 时间戳。若文件不存在或 `built_at` 距 `now` 超过 30 分钟,先运行 `python .kiro/scripts/agent_on_stop.py --force-rebuild` 重建上下文,再重新读取。\n\n**Session 索引读取**:读取 `docs/audit/session_logs/_session_index.json`,找到与本次对话时间最接近的 entry(按 `startTime` 匹配),提取其 `description`(LLM 操作摘要)和 `summary`(结构化摘要)。这些信息将用于:\n- 作为审计记录头部的「操作摘要」来源(比从 diff 推断更准确)\n- 交叉验证 audit_context.json 中的 session_diff(files_modified/created)\n- 记录本次审计关联的 session executionId,建立双向链接\n\n**主流程**:启动名为 audit-writer 的子代理,传入以下指令:\n\n> 读取 `.kiro/state/.audit_context.json` 作为主输入,同时参考 Session 索引中匹配的 entry。不要自行运行 git status/diff/扫描文件。audit_context.json 已包含:变更文件列表、高风险文件 diff、合规检查清单(文档缺失/迁移状态/DDL 基线/接口变更/OpenAPI spec 状态)、本次对话精确变更(session_diff: added/modified/deleted)、Prompt-ID 溯源。按 audit-writer.md 中定义的执行策略完成审计落盘+文档校对补齐。\n\n约束:\n- 子代理禁止重复运行 git status --porcelain 或 git diff 全量扫描,所有信息已在 .audit_context.json 中预备好。\n- 子代理需要读取具体文件内容时(如更新文档),可以直接读取对应文件,但不要做全仓库遍历。\n- 子代理必须按需调用 skill:steering-readme-maintainer、change-annotation-audit、bd-manual-db-docs(仅在满足触发条件时)。\n- 子代理必须根据 compliance.code_without_docs 自动补齐缺失的文档同步。\n- 当 reasons 含 db-schema-change 时,子代理必须执行 DB 文档全量对账:连接测试库(TEST_DB_DSN)查询 information_schema,与 docs/database/ 下现有文档全量对比,补全或更新所有缺失/过时的表结构说明(不仅限于本次变更涉及的表),输出对账摘要。\n- 子代理应参考 session_diff 中的 added/modified/deleted 列表,精确定位本次对话的变更范围。\n- **Session 关联**:在审计记录(docs/audit/changes/*.md)头部增加 `session_id` 字段(executionId 前 8 位),并将 Session 索引中的 description 作为「操作摘要」写入审计记录。这建立了审计记录 ↔ Session 日志的双向链接。\n- 子代理必须为所有变更文件生成改动注解(步骤 5),写入审计记录的「改动注解」段落,包含:变更类型、原始原因、思路分析、修改结果。高风险文件写详细注解,普通修改写简要一行,删除文件只记录原因。\n- 若 compliance.api_changed=true 且 compliance.openapi_spec_stale=true,运行 `python scripts/ops/_export_openapi.py` 重新导出 OpenAPI spec;导出失败则在审计记录标注待手动导出;导出成功则提醒用户重连 OpenAPI Power MCP server。\n- 所有审计产物统一写入 docs/audit/,不写入子模块内部。\n- 完成后把 .kiro/state/.audit_state.json 中 audit_required 置为 false。\n- 执行 `python scripts/audit/gen_audit_dashboard.py` 刷新审计一览表。\n- **文档地图更新**:审计完成后,自动更新 `docs/DOCUMENTATION-MAP.md`:\n - 检查本次审计涉及的文档变更(从审计记录中识别)\n - 扫描 `docs/` 目录和各模块内部文档的变化(新增、修改、删除)\n - 特别关注数据库文档(`docs/database/`)是否有新增的 BD_Manual 文件\n - 根据发现的文档变更,更新文档地图中的相应条目\n - 确保文档地图的结构完整,所有重要文档都有记录\n- 最终回复必须是极短回执:done/files_written/next_step。"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "audit"
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Session Log (Agent Stop)",
|
||||
"description": "每次对话结束时,记录本次对话的完整日志(用户输入、agent 输出、变更文件、git diff stat)到 docs/audit/session_logs/。纯 Shell 执行,不触发 LLM。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "agentStop"
|
||||
},
|
||||
"then": {
|
||||
"type": "runCommand",
|
||||
"command": "python .kiro/scripts/session_log.py"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "session-log"
|
||||
}
|
||||
15
.kiro/hooks/session-summary.kiro.hook
Normal file
15
.kiro/hooks/session-summary.kiro.hook
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "Session description maker",
|
||||
"description": "手动触发:为缺少 description 的 session log 调用百炼千问 API 生成摘要,写入双索引。askAgent 模式可看到实时输出。",
|
||||
"version": "1",
|
||||
"when": {
|
||||
"type": "userTriggered"
|
||||
},
|
||||
"then": {
|
||||
"type": "askAgent",
|
||||
"prompt": "请在后台运行以下命令并展示实时输出:python -B C:/NeoZQYY/scripts/ops/batch_generate_summaries.py"
|
||||
},
|
||||
"workspaceFolderName": "NeoZQYY",
|
||||
"shortName": "session-summary"
|
||||
}
|
||||
Reference in New Issue
Block a user