# 变更审计记录:dev-trace-log 全栈开发调试全链路日志系统 | 字段 | 值 | |------|-----| | 日期 | 2026-03-22 21:03:24 | | Prompt-ID | P20260322-205347 | | Session-ID | 93568fb4 | | Session 路径 | docs/audit/session_logs/2026-03/22/66_5460a155_203419 | ## 操作摘要 执行 `.kiro/specs/dev-trace-log/` 全部 25 个任务,实现开发调试全链路日志系统(dev-trace-log)。这是一个全栈 feature,覆盖: - 后端 trace 采集层:HTTP 请求(ASGI 中间件)、SSE 流式响应、WebSocket 连接、后台 Job 执行 - JSON Lines 日志写入器(按日期/小时分文件,10MB 轮转,自动清理) - 8 个 admin API 端点(含覆盖率扫描、运行时开关) - admin-web 前端 DevTrace 页面(覆盖率条、过滤器、请求表格、Span 树、设置抽屉) - 40 个属性测试全部通过(19.69s) 风险评估:低。trace 模块通过 `DEV_TRACE_ENABLED` 开关控制,关闭时零开销。所有采集逻辑 try/except 包裹,不影响正常请求处理。无 DB schema 变更。 ## 本次对话文件变更 ### 新增文件(Session 日志 + Prompt 日志) - `docs/audit/prompt_logs/prompt_log_20260322_205347.md` - `docs/audit/session_logs/2026-03/22/66_5460a155_203419/main_01_93568fb4.md` - `docs/audit/session_logs/2026-03/22/66_5460a155_203419/sub_01_93568fb4.md` - `docs/audit/session_logs/2026-03/22/66_5460a155_203419/sub_02_93568fb4.md` - `docs/audit/session_logs/2026-03/22/67_f11b5687_205015/main_01_761a13a1.md` - `docs/audit/session_logs/2026-03/22/67_f11b5687_205015/sub_01_93568fb4.md` - `docs/audit/session_logs/2026-03/22/68_a233cc02_205218/main_01_c0515e2b.md` ## 改动注解 ### 后端 trace 模块(新建) #### `apps/backend/app/trace/__init__.py` - 变更类型:新增 - 原始原因:dev-trace-log spec Task 1,建立 trace 模块入口 - 思路分析:模块入口文件,导出核心组件供外部使用 - 修改结果:trace 模块可通过 `from app.trace import ...` 引用 #### `apps/backend/app/trace/config.py` - 变更类型:新增 - 原始原因:Task 1,集中管理 trace 配置(环境变量 + 运行时开关) - 思路分析:TraceConfig 数据类,从环境变量读取 `DEV_TRACE_ENABLED`、`DEV_TRACE_LOG_DIR`、`DEV_TRACE_RETENTION_DAYS` 等,支持运行时动态开关 - 修改结果:所有 trace 组件统一从 TraceConfig 读取配置,关闭时零开销 #### `apps/backend/app/trace/context.py` - 变更类型:新增 - 原始原因:Task 2,定义 TraceContext 和 TraceSpan 数据模型 - 思路分析:使用 Python contextvars 实现请求级隔离,TraceContext 持有 trace_id + span 列表,TraceSpan 记录单个操作的耗时和元数据 - 修改结果:所有采集点通过 contextvars 自动关联到当前请求的 trace #### `apps/backend/app/trace/writer.py` - 变更类型:新增 - 原始原因:Task 3,JSON Lines 日志写入器 - 思路分析:按日期/小时分文件写入,单文件 10MB 轮转,异步写入不阻塞请求。提供 `_sync_write()` 供同步上下文(WS/Job wrapper)调用 - 修改结果:trace 数据持久化到 `DEV_TRACE_LOG_DIR` 目录 #### `apps/backend/app/trace/cleanup.py` - 变更类型:新增 - 原始原因:Task 4,日志自动清理 - 思路分析:按 `DEV_TRACE_RETENTION_DAYS` 配置删除过期日志文件 - 修改结果:防止日志无限增长占满磁盘 #### `apps/backend/app/trace/middleware.py` - 变更类型:新增 - 原始原因:Task 6,ASGI 中间件拦截 HTTP 请求 - 思路分析:TraceMiddleware 拦截 `xcx_*` 路由的请求,创建 TraceContext,记录请求/响应元数据,请求结束时写入 trace - 修改结果:所有小程序 API 请求自动被 trace 采集 #### `apps/backend/app/trace/decorators.py` - 变更类型:新增 - 原始原因:Task 7,`@trace_service` 装饰器 - 思路分析:装饰器自动为 service 函数创建 span,记录入参摘要、返回值类型、异常信息 - 修改结果:service 层函数加一行装饰器即可接入 trace #### `apps/backend/app/trace/db_wrapper.py` - 变更类型:新增 - 原始原因:Task 8,数据库连接生命周期追踪 - 思路分析:包装数据库连接获取/释放,记录连接耗时和 SQL 执行信息 - 修改结果:数据库操作在 trace 中可见 #### `apps/backend/app/trace/error_handler.py` - 变更类型:新增 - 原始原因:Task 9,异常/错误全链路追踪 - 思路分析:捕获未处理异常,在当前 trace 中记录错误堆栈和上下文 - 修改结果:错误信息自动关联到触发请求的 trace #### `apps/backend/app/trace/sse_wrapper.py` - 变更类型:新增 - 原始原因:Task 12,SSE 流式响应追踪 - 思路分析:包装 SSE 事件生成器,记录每个事件的发送时间和数据摘要 - 修改结果:AI 聊天等 SSE 接口的流式响应过程可追踪 #### `apps/backend/app/trace/ws_wrapper.py` - 变更类型:新增 - 原始原因:Task 13,WebSocket 连接追踪 - 思路分析:包装 WS 连接的 accept/send/receive/close,使用 `_sync_write()` 避免异步上下文问题 - 修改结果:WebSocket 日志推送连接的生命周期可追踪 #### `apps/backend/app/trace/job_wrapper.py` - 变更类型:新增 - 原始原因:Task 14,后台 Job 执行追踪 - 思路分析:包装后台任务执行函数,记录 job 名称、耗时、成功/失败状态。同样使用 `_sync_write()` 处理同步上下文 - 修改结果:后台定时任务和一次性 job 的执行过程可追踪 #### `apps/backend/app/trace/coverage.py` - 变更类型:新增 - 原始原因:Task 16.2,覆盖率扫描器 - 思路分析:grep 方式扫描代码库,统计已接入 trace 的路由/service/WS 端点占比 - 修改结果:admin API 可查询当前 trace 覆盖率 ### 后端 API(新建) #### `apps/backend/app/routers/admin_dev_trace.py` - 变更类型:新增 - 原始原因:Task 16.1,admin API 端点 - 思路分析:8 个端点:查询 trace 列表、trace 详情、覆盖率、运行时开关、清理日志等。所有端点需 admin 鉴权 - 修改结果:管理后台可通过 API 查看和管理 trace 数据 ### 前端(新建) #### `apps/admin-web/src/types/devTrace.ts` - 变更类型:新增 - 原始原因:Task 18.2,TypeScript 类型定义 - 思路分析:定义 TraceRecord、TraceSpan、CoverageReport 等接口类型,与后端 API 响应对齐 - 修改结果:前端类型安全 #### `apps/admin-web/src/api/devTrace.ts` - 变更类型:新增 - 原始原因:Task 18.1,API 调用层 - 思路分析:8 个 API 函数对应 8 个后端端点,使用 apiClient 统一处理鉴权和错误 - 修改结果:前端页面可调用 trace API #### `apps/admin-web/src/pages/DevTrace.tsx` - 变更类型:新增 - 原始原因:Task 19-20,DevTrace 页面 + 设置抽屉 - 思路分析:完整页面包含覆盖率进度条、时间/路由/状态过滤器、请求列表表格、Span 树展开、SettingsDrawer 运行时配置面板 - 修改结果:管理后台新增 DevTrace 功能页面 ### 测试文件(新建) #### `tests/test_trace_*.py`(10 个文件) - 变更类型:新增 - 原始原因:Task 5/11/15 各阶段 checkpoint 要求的属性测试 - 思路分析:使用 hypothesis 框架,覆盖 TraceContext 创建/嵌套、Writer 写入/轮转、Cleanup 过期删除、Middleware 路由匹配、Decorator 异常处理、DB/SSE/WS/Job wrapper 等 40 个属性 - 修改结果:40/40 属性测试通过,验证 trace 模块核心逻辑正确性 ### 已有文件修改(简要注解) - `apps/backend/app/main.py` — 注册 TraceMiddleware、job trace wrappers、admin_dev_trace router - `apps/backend/app/database.py` — 集成 trace db_wrapper - `apps/backend/app/auth/dependencies.py` — 添加 AUTH span 记录 - `apps/backend/app/middleware/response_wrapper.py` — 集成 error_handler 调用 - `apps/backend/app/routers/xcx_chat.py` — SSE trace 集成 - `apps/backend/app/routers/xcx_auth.py` — 添加 @trace_service - `apps/backend/app/routers/xcx_tasks.py` — 添加 @trace_service - `apps/backend/app/routers/xcx_notes.py` — 添加 @trace_service - `apps/backend/app/routers/xcx_performance.py` — 添加 @trace_service - `apps/backend/app/routers/xcx_ai_cache.py` — 添加 @trace_service - `apps/backend/app/routers/xcx_customers.py` — 添加 @trace_service - `apps/backend/app/routers/xcx_coaches.py` — 添加 @trace_service - `apps/backend/app/routers/xcx_board.py` — 添加 @trace_service - `apps/backend/app/routers/xcx_config.py` — 添加 @trace_service - `apps/backend/app/services/task_manager.py` — 添加 @trace_service - `apps/backend/app/services/note_service.py` — 添加 @trace_service - `apps/backend/app/services/performance_service.py` — 添加 @trace_service - `apps/backend/app/services/coach_service.py` — 添加 @trace_service - `apps/backend/app/services/customer_service.py` — 添加 @trace_service - `apps/backend/app/services/board_service.py` — 添加 @trace_service - `apps/backend/app/services/chat_service.py` — 添加 @trace_service - `apps/backend/app/ws/logs.py` — WS trace 集成 - `apps/admin-web/src/App.tsx` — DevTrace 路由 + 菜单项 - `.env` — 添加 trace 环境变量(DEV_TRACE_ENABLED 等) - `.env.template` — 添加 trace 环境变量模板 - `apps/backend/docs/API-REFERENCE.md` — admin_dev_trace 路由文档 - `apps/backend/README.md` — trace 模块说明 - `docs/architecture/backend-architecture.md` — trace 模块架构 - `docs/DOCUMENTATION-MAP.md` — 新增 trace 相关条目 - `docs/deployment/EXPORT-PATHS.md` — DEV_TRACE_LOG_DIR ## 合规检查 | 检查项 | 状态 | |--------|------| | 文档同步 | ✅ 无缺失(code_without_docs 为空) | | 新增迁移 SQL | ✅ 无(纯应用层,无 DB 变更) | | DDL 基线 | ⚠️ has_ddl_baseline=false,但本次无新增迁移,不影响 | | OpenAPI spec | ✅ 无需同步(api_changed=false) | | BD 手册 | ✅ 无需更新(无 DB schema 变更) | ## 验证结果 - 40 个属性测试全部通过(19.69s) - 无 DB 变更 - 无安全风险(admin 鉴权保护所有 trace API) - trace 模块通过开关控制,关闭时零开销