补强 F1-5a runtime_context 落地后的测试覆盖,防止未来 PR 回归。 测试文件本地通过,因 .gitignore:71 不入仓(同 T1 / T2 /af02446处理)。 BE-3 ai_run_logs runtime 写入回归(5 case,本地 PASS): - apps/backend/tests/test_ai_run_logs_runtime.py - 覆盖 AIRunLogService.create_log() 在 live / sandbox 模式下分别写入 正确的 runtime_mode + sandbox_instance_id 字段 - 边界:prompt 截断、INSERT 失败 rollback、bind_to_session=True 调用 T3 dispatcher runtime 单测(5 case,本地 PASS): - apps/backend/tests/test_dispatcher_runtime.py - 覆盖 AIDispatcher._run_step 在 4 条路径(circuit_open / rate_limited / budget_exceeded / 正常)下都把 context["site_id"] 正确传给 run_log_svc.create_log - 防御目标:dispatcher 内部不该意外丢失 site_id,否则 sandbox 切换 在 dispatcher 路径上失效 依赖 F1-5b A3(commitaf02446)的 RuntimeContext 接口契约。 两份测试与 T2(test_admin_ai_batch_runtime,af02446 已 PASS)互补, 一起构成 F1-5a 落地后的回归守护网。 审计: - docs/audit/changes/2026-05-05__wave1_f1_5b_be3_run_log_runtime_regression.md - docs/audit/changes/2026-05-05__wave1_f1_5b_t3_dispatcher_runtime.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
审计目录(docs/audit/)
项目级统一审计落地点。所有模块(ETL、后端、小程序、管理后台等)的审计产物均写入此目录。
子目录与文件
| 目录/文件 | 说明 |
|---|---|
changes/ |
AI 逐次变更审计记录(<YYYY-MM-DD>__<slug>.md) |
prompt_logs/ |
Prompt 日志文件(每次 prompt 生成一个独立文件,按时间戳命名) |
session_logs/ |
全量会话记录(按 YYYY-MM/DD/ 分层),含双索引和 LLM 操作摘要。详见 SESSION-LOG-GUIDE.md |
audit_dashboard.md |
审计一览表(自动生成,勿手动编辑) |
SESSION-LOG-GUIDE.md |
Session 日志使用指南(索引字段、查询方法、典型场景) |
维护约定
prompt_logs/由prompt-audit-logHook 自动管理,请勿手动编辑session_logs/由agentStopHook 自动提取,索引由提取脚本自动更新audit_dashboard.md由/audit流程自动刷新,也可通过python scripts/audit/gen_audit_dashboard.py手动重新生成- 变更审计记录由
/audit流程(audit-writer 子代理)生成,包含session_id字段与 Session 日志双向关联 - 历史记录(迁移前 ETL 子项目的审计)已合并至此目录
审计追溯链
Prompt 日志 ←→ Session 日志 ←→ 变更审计记录
(用户说了什么) (AI 做了什么) (正式变更文档)
通过 Prompt-ID 和 Session-ID 可在三者之间双向追溯。详见 SESSION-LOG-GUIDE.md。