88 lines
5.9 KiB
Markdown
88 lines
5.9 KiB
Markdown
# 进度记录:cc-web 使用统计看板计划
|
||
|
||
## 2026-08-03
|
||
|
||
### Phase 1:边界与统计口径确认
|
||
|
||
- **状态:** complete
|
||
- 已确认当前只产出计划,不修改产品代码。
|
||
- 已确认可靠指标及其时间归属。
|
||
- 已排除“活跃会话”和“Skill 实际读取次数”等不可靠指标。
|
||
- 已记录“不影响现有功能”的硬性边界。
|
||
|
||
### Phase 2 至 Phase 6:实施与验收
|
||
|
||
- **状态:** complete
|
||
- 用户已确认进入代码实施,并指定侧栏底部入口位置。
|
||
- 已补充看板视觉主张、内容结构和交互原则;本轮仍未改产品代码。
|
||
- 已把“先记录现有行为基线、功能开关默认关闭”设为实施第一道门禁。
|
||
- 已创建 Trellis 任务 `08-03-usage-statistics-dashboard`。
|
||
- 已记录现有高级会话检索相关脏文件,后续不得覆盖或清理。
|
||
- 计划审查指出缺少独立的全部主题适配阶段;已补充 Phase 5 和对应硬性验收门槛。
|
||
- 已确认 codebase-memory 索引可用,并开始定位会话写入、MCP toolCalls、composerMentions 和前端入口链路。
|
||
- 第二次计划审查已通过;已修正 `created` 字段口径并加入 schema 版本和性能阈值。
|
||
- 已完成后端数据结构、前端入口、回归落点和 11 个主题的并行只读审计。
|
||
- 已确定看板使用 `.chat-main` 局部覆盖、独立状态机、独立请求 ID 和懒加载派生索引。
|
||
- 实施清单第 1 项完成,进入只读统计聚合模块与单元测试实现。
|
||
- 新增 `lib/usage-statistics.js` 和 `scripts/usage-statistics-unit.js`;语法检查、纯夹具单测和 `git diff --check` 通过。
|
||
- 实施清单第 2 项完成,进入独立 WebSocket 统计查询协议接入。
|
||
- 独立协议、指定入口、看板 DOM、前端状态机、趋势/明细交互及基础响应式样式已完成首轮实现。
|
||
- 已通过 `node --check`、统计单测和相关文件 `git diff --check`,进入全部现有主题适配。
|
||
- 已完成 CoolVibe、Carbon/Nocturne/Cinder、Gilded、Wasteland 的限定覆盖;其他主题直接继承看板语义变量。
|
||
- 已新增 `usage-statistics` 回归目标,真实 WebSocket 验证查询不会额外发送 `session_list`,禁用开关返回 `disabled`。
|
||
- 83.3 MB / 134 个真实会话最终首次回填 1.15 秒,查询 P95 51.79 ms,峰值 RSS 116.7 MB,索引占源数据 0.47%。
|
||
- Chrome Headless 151 完成 11 个主题 × 5 个视口共 55 组布局验收;桌面、平板、移动端均无页面级横向溢出。
|
||
- 已验证 loading、MCP 长工具名明细、空态和无效日期错误态;Wasteland 根看板改为实色,避免下层输入框视觉透出。
|
||
- `gilded-theme`、`wasteland-theme`、`advanced-session-search`、统计专项和全量回归均通过。
|
||
|
||
### Phase 7:最终审查与交付
|
||
|
||
- **状态:** complete
|
||
- 两轮独立审查均无高等级问题;提出的 4 个中等级问题已全部修复并补回归合同。
|
||
- 已限制 MCP/Skill 返回规模、公开 total/returned、明确明细“最近 X / 共 Y 条”,回填改为每文件让出事件循环。
|
||
- 已修复异常空文件增量可能保留旧文档,并把聚合核心单测接入统计专项和全量回归。
|
||
- 已修复 CoolVibe 选中按钮对比度和暗色日期原生图标;Chrome computed style 验证通过。
|
||
- PM2 服务已在线加载,用户确认最终效果可用。
|
||
- 最终清理只删除本任务生成的临时浏览器包、截图和根目录 TODO CSV;未清理既有高级检索改动。
|
||
|
||
## 本轮文件变更
|
||
|
||
- `lib/usage-statistics.js`:新增懒加载、可重建的只读统计索引与聚合器。
|
||
- `scripts/usage-statistics-unit.js`:新增统计口径、隐私、增量和损坏文件单测。
|
||
- `server.js`:新增功能开关、安全生命周期钩子和独立查询协议。
|
||
- `public/index.html`:新增固定 footer 入口和 chat-main 局部看板 DOM。
|
||
- `public/app.js`:新增独立看板状态、查询、渲染和恢复交互。
|
||
- `public/style.css`:新增基础响应式看板与现有主题限定覆盖。
|
||
- `scripts/regression.js`:新增统计专项合同和真实 WebSocket 回归。
|
||
- 计划、Trellis 和临时 CSV 仅用于过程记录;现有高级检索脏改动全部保留。
|
||
|
||
## 验证结果
|
||
|
||
| 验证项 | 预期 | 实际 | 状态 |
|
||
|---|---|---|---|
|
||
| 单元与专项 | 统计口径、隐私、协议隔离 | 全部通过 | 通过 |
|
||
| 全量回归 | 现有功能不回归 | `Regression checks passed.` | 通过 |
|
||
| 性能 | 回填 ≤3s、P95 ≤100ms、RSS ≤160MB、索引 ≤35% | 1.15s / 51.79ms / 116.7MB / 0.47% | 通过 |
|
||
| 浏览器 | 11 主题 × 5 视口、动态状态 | 55 组 + loading/detail/empty/error | 通过 |
|
||
| 风险隔离 | 独立入口、协议、索引和关闭开关 | `CC_WEB_USAGE_STATISTICS=0` 可即时关闭 | 通过 |
|
||
|
||
## 错误日志
|
||
|
||
| 时间 | 错误 | 尝试 | 处理 |
|
||
|---|---|---:|---|
|
||
| 2026-08-03 | 无 | 1 | — |
|
||
| 2026-08-03 | `task.py list-context` 不接受 action 位置参数 | 1 | 已有 `task.py validate` 通过结果,改为由实现代理读取 `implement.jsonl` |
|
||
| 2026-08-03 | Wasteland 回归把三暗色统计 selector 识别为五主题共享层 | 1 | 将统计暗色组改用等价 `:where(...)`,保留既有共享层合同 |
|
||
| 2026-08-03 | 浏览器验收把局部表格 scrollWidth 误报为页面溢出 | 1 | 以 document/body/dashboard body 为页面口径,表格保留明确的局部横向滚动 |
|
||
| 2026-08-03 | 动态状态脚本刚完成查询即刷新,命中 250ms 限流 | 1 | 按真实操作节奏增加 350ms 间隔,协议行为符合设计 |
|
||
|
||
## 5 问检查
|
||
|
||
| 问题 | 答案 |
|
||
|---|---|
|
||
| 当前在哪? | 功能与验收完成,正在最终独立审查和清理 |
|
||
| 接下来去哪? | 审查结论、运行服务激活、交付记录 |
|
||
| 目标是什么? | 不影响现有功能地增加只读使用统计看板 |
|
||
| 已学到什么? | 见 `findings.md` |
|
||
| 已完成什么? | 整体功能、全主题适配、专项/全量回归、性能和浏览器验收 |
|