Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2.5 KiB
2.5 KiB
TASK · 生时校正匿名聚合统计(2026-09-26)
基线
origin/staging(TASK-rectification-fewer-probes-card-20260926合入之后)。分支codex/rectification-telemetry-20260926。
背景
线上没有任何校正会话的聚合数据:交付宽度、问了几题、停在哪条规则、门槛是否达标、是否补过经历都不知道(盘点 09-26)。后续所有决策(领域门槛 2→3、引导题是否再调、默认窗口宽度)都缺证据。
决策记录(产品 2026-09-26)
- D1 加匿名聚合统计,只存数字与枚举,不存出生资料、姓名、邮箱、用户 / 案例 id 以外的任何身份信息、对话内容、模型原文。
- D2 每个校正会话在交付(或放弃 / 超时结束)时写一行:起始窗口半径、出生时间来源类别、提问总数(按类型:定向 / 引导 / 带年月探针 / 性格 / 开放)、用户补经历次数、最终区间宽度(分钟)、候选数、第一名与第二名差距(百分点)、停止原因枚举(收敛 / 题源问空 / 用户说没有了 / 8 轮上限 / 用户中止 / 错误)、精度门槛是否达标、耗时(秒)、算法与策略版本。
- D3 数据只供产品负责人在管理后台看汇总(中位、分布、按周),不提供逐条导出;保留期 180 天。
- D4 用户 id 只用于去重与删除联动(账户删除时一并删除),汇总视图不显示。
硬红线
- 隐私:AGENTS §8;字段白名单写进测试(新增字段必须改测试);日志与表中不得出现出生日期 / 时间 / 地点 / 姓名 / 对话文本。
- 动表:迁移必须向后兼容(加表,不改旧表);必须真跑
npm run test:db(本机无 Docker 时以门禁 DB job 结果为准,写进 PROGRESS 并附 run 号);RLS:普通用户不可读写,只有服务端写、管理员读。 - 写入失败不得影响用户会话(异步 / 吞错并记录)。
- 全量前端测试(Node 22)与基线逐条一致、新增 0;改动断言三栏。
任务分解
- T1 迁移(表 + RLS + 保留期清理函数)+ 真实 Postgres 测试。
- T2 写入点:交付 / 结束路径,字段计算纯函数 + 单测(白名单)。
- T3 管理后台汇总页(沿用 admin 现有框架):宽度分布、提问数分布、停止原因占比、门槛达标率、按周趋势。
- T4 记录:CHANGELOG、PROGRESS、
docs/testing/(产品在后台看到汇总的步骤)、隐私说明写进docs/operations/。