docs(tasks): combined progress, lawyer list and device checklist for the compliance round
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
4c40b4152d
commit
2f6581fff3
@@ -0,0 +1,46 @@
|
||||
# PROGRESS · 合规五项合并交付(2026-09-30)
|
||||
|
||||
> 产品 2026-09-30「合规与法律的前四个你可以帮我做吗」+「点踩要收集这一轮对话」。执行:Claude 直接执行,五个 fork 子代理各自在独立分支完成,Claude 合并到 `codex/compliance-launch-20260930` 并整体复验。
|
||||
> 各项细节:`PROGRESS-legal-consent-20260930.md`、`PROGRESS-feedback-complaints-20260930.md`、`PROGRESS-account-deletion-20260930.md`、`PROGRESS-content-moderation-20260930.md`、`PROGRESS-reply-quality-20260930.md`。真机:`docs/testing/compliance-launch-20260930.md`。
|
||||
|
||||
## 产品决定
|
||||
|
||||
| 项 | 决定 |
|
||||
|---|---|
|
||||
| 注销 | 7 天冷静期,期间重新登录可撤销;到期删除个人内容与账号;订单、支付、点数流水等 16 张表保留但去身份;剩余点数作废 |
|
||||
| 主体与联系方式 | 先用占位(`frontend/src/lib/legal-entity.ts` 一处),正式发布前以 `JYOTISHA_REQUIRE_LEGAL_ENTITY=1` 跑测试拦住占位与草稿 |
|
||||
| 客服 | 站内反馈表单 + 后台处理;投诉在注销时保留处理记录、清空联系方式(Claude 合并时按常规做法定,已写进注销弹窗与隐私政策草稿) |
|
||||
| 审核 | 输入命中不送模型不扣点;输出命中整段替换并退点;日志不存原文。自伤类改回求助句(12356)而非「不能讨论」,待法务确认 |
|
||||
| 点踩 | 保存这一轮 + 模型当时读到的上下文(点踩时由服务端按同一段拼接代码还原);90 天后清空正文只留统计;注销即删 |
|
||||
|
||||
## 合并中处理的问题
|
||||
|
||||
- 注销会自动删除所有带 user_id 的表,包括新建的 `user_feedback`:改为保留并在清除时置空 `contact`(迁移、TS 镜像、弹窗文案、隐私政策草稿四处一致)。
|
||||
- `tests/test_api_server_security.py` 的全站页面清单:A/B/C/E 新增的 `terms`、`privacy`、`admin/account-deletions`、`admin/feedback`、`admin/reply-quality` 未登记,已补(三栏注释)。
|
||||
|
||||
## 验证(Claude 实跑,基线 origin/staging `f898df55`,前端与 `5208f19b` 相同)
|
||||
|
||||
| 项 | 结果 |
|
||||
|---|---|
|
||||
| tsc | 0 错 |
|
||||
| lint | 0 error / 126 warning(同基线) |
|
||||
| npm test 全量 | 4,470 / fail 24,失败名单与基线逐条相同;新增 52 条,消失 0 条 |
|
||||
| next build | `/` `○ Static`;`/terms`、`/privacy` 静态 |
|
||||
| 首屏 gzip-9 | 646,480 → 652,948 B(+1.0%,在 ±2% 内;首屏多一个脚本,是外壳里的协议重新同意检查) |
|
||||
| Python 快速门 | 1000 passed / 2 skipped;门内 npm 步用系统 Node 20,属已知环境失败 |
|
||||
|
||||
## 新增数据库表(均只加不改;本机无 Docker,未跑 test:db,部署到 staging 时第一次真实执行)
|
||||
|
||||
`user_consents`(20260930010000)、`account_deletion_requests` 及清除函数(20260930020000)、`user_feedback` + `reply_ratings`(20260930030000)、`moderation_events`(20260930040000)、`reply_quality_snapshots`(20260930050000)。
|
||||
|
||||
## 带给律师 / 需要产品提供
|
||||
|
||||
1. 运营主体全称、联系地址、客服邮箱(电话 / 微信可选)、ICP 备案号。
|
||||
2. 协议与隐私政策草稿里 13 处【待确认】:在线支付是否开放与方式、退款规则与时限、管辖法院、服务器日志是否记 IP 与保存期、正式站启用的模型服务商及所在国、出生地点搜索服务商、是否启用 VedAstro、支付服务商名称、数据出境合规路径、订单与点数流水保存年限、内容审核日志保存期、备份与加密覆盖范围;另加投诉记录保存年限。
|
||||
3. 接收用户数据的第三方:模型服务商(OpenAI / Anthropic / 兼容接口,后台配置)、Resend(境外)、Geoapify / Mapbox / GeoNames(可能境外)、VedAstro(境外,是否启用待确认)、易支付。
|
||||
4. 内容审核:本地词表(12 条规则 5 类)与自伤求助热线待法务审;正式审核服务(阿里云内容安全)需要开通账号与密钥。
|
||||
5. 生成式 AI 标识、算法备案(本轮未做)。
|
||||
|
||||
## 环境缺口
|
||||
|
||||
无 Docker(数据库测试);无 staging 测试账号与真机(浏览器全流程、注销 7 天后真实清除);阿里云密钥;协议文本未经律师审定。
|
||||
@@ -263,6 +263,7 @@
|
||||
| `TASK-report-reader-polish-20260929.md` | `PROGRESS-report-reader-polish-20260929.md` | **报告页打磨**:生成入口挪进页面主体(删标题栏按钮)、详情页到底部按钮(懒渲染一次到底)、导出按钮带文字、目录一级/二级分层、去掉「字段」与 RL/NL 缩写表头、状态列同义重复去重、报告表格淡底色、分块导出显示真实文件大小 | Claude 直接执行并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +7 B、快速门 Python 1000 passed),已部署 staging `d7772011`,真机欠 | BUG-1092~1094 |
|
||||
| `TASK-report-english-edition-20260929.md` | `PROGRESS-report-english-edition-20260929.md` | **报告中英两版**:同一次引擎计算渲染 zh/en 两遍(不用模型翻译),瑜伽库 477 条补英文、模板与前端表头英文化;中文逐字节不变、英文零汉字、两版数字序列一致;阅读页 `?lang=en` 切换,导出当前语言 + 「问 AI 建议导出英文版」提示;旧报告不补英文 | Claude 直接执行(含两个 fork 子代理)并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +0.06%、Python 定向全绿),已部署 staging `d7772011`,真机欠 | — |
|
||||
| —(产品晚间反馈,直接执行) | `PROGRESS-surface-feedback-20260929.md` | **星盘气泡 / 外框 / 天空按钮 / 报告卡片 / 新建对话提速**:图标说明改锚定气泡(手机轻点、3 秒自关)、删提示句;印度盘外框贴合;「那一刻的天空」随星盘出现;报告卡片间距与文案;次级页空闲时预取首页暖快照 | Claude 直接执行 + fork 并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +0.13%),已推 staging,真机欠 | BUG-1100~1104 |
|
||||
| —(产品要求合规前四项 + 点踩收集,直接执行) | `PROGRESS-compliance-launch-20260930.md` | **合规五项**:用户协议 / 隐私政策 / 登录同意(草稿、占位主体);自助注销(7 天冷静期);反馈与投诉 + 后台;内容审核(本地词表 + 阿里云接口);点踩快照 + 后台「对话质量记录」 | Claude 直接执行 + 5 个 fork 并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +1.0%、快速门 Python 1000 passed),已推 staging,真机与律师审定欠 | — |
|
||||
| `TASK-serif-headings-20260928.md` | `PROGRESS-serif-headings-20260928.md` | **全站标题改用自托管宋体、正文保持黑体**:产品推翻 BUG-737「CJK 不用衬线」结论(保留「声明的字体必须可加载」「不落系统宋体」两条);Noto Serif SC SemiBold 按通用规范汉字表 6500 字 unicode-range 切片自托管(改名 Jyotisha Serif SC),swap 不 preload;首页宋体流量 ≤300 KB;先于天空封面单 | 已实现待验收(分支 `codex/serif-headings-20260928`,未推送) | 不开新 BUG;BUG-737 追加说明 |
|
||||
| `TASK-cend-ui-claude-alignment-20260916.md` | `PROGRESS-cend-ui-r1/r2/r3-20260916.md` | **C 端界面向 claude.ai 产品界面对齐(三轮串行 R1→R2→R3,都动 `globals.css`,不得并行)**:根因是 `frontend/CLAUDE_DESIGN.md` 扒的是 **claude.com 营销官网**,它自己在 Known Gaps 里写明 claude.ai 产品界面不在范围内,而 `DESIGN.md:3` 把它当成了产品界面的实现契约。**R1**:`--font-display` 里 Tiempos Headline / StyreneB **从未加载**(无 `@font-face`、`public/` 无字体、`layout.tsx` 只 vendor 了 Inter),中文标题全站落到 **宋体 / SimSun**,波及 20 处含助手回答的 h2/h3(BUG-737);亮色强调色 `#85432f` 与暗色 `#d78064` 不同源,产品拍板亮色换 **Claude coral `#cc785c`**,**易漏点**是 `globals.css:16` 的 `--color-ring` 硬编码在 `@theme inline` 里不跟随 `:root`,另有第四个 `:root` 亮色块(`:4358`)必须同步(BUG-738);`.composer-footer` 常驻 44px + 顶栏 68px + `--composer-reserve` 148px,每屏固定吃掉 216px,模型选择器移进输入框内部、删掉底栏、顶栏收到 46px 并删「分析对象」副标题。**R2**:空状态是营销落地页(hero 卡 + 两张 132px 入口大卡 + 3 列 156px 主题卡),输入框被压在 **800px 以上**内容之下,重排成「问候 + 居中输入框 + 两枚入口 pill + 一排 chip」。**R3**:侧栏两个 `<details>` 拍平成一条「最近」、星盘的两个入口(侧栏分组 + 账户菜单)收敛到一处、删掉逐条助手头像。**决策记录 D3 推翻 DESIGN.md「报告强调色与应用同源」一句**(报告刻意保留深棕)。原型图 https://claude.ai/code/artifact/da275da6-2954-4f50-99aa-32bb8694d38b(三套画面 + 明暗,页面标题就是建议字体栈的实际渲染)。环境缺口:无登录态无 Chrome,四项真机观感留 `docs/testing/`。BUG 段 737–738 | 待领取 | — |
|
||||
| `TASK-cend-surfaces-claude-alignment-20260916.md` | `PROGRESS-cend-shell-20260916.md`、`PROGRESS-cend-report-20260916.md`、`PROGRESS-cend-rectification-20260916.md`、`PROGRESS-cend-chart-eph-20260916.md` | **次级页面对齐(上一单的续篇,R4→R5/R6,R7、R8 可并行)**:星盘 `/chart`、星历 `/ephemeris`、报告 `/reports` **各是脱离 app 外壳的独立全屏页**,顶部只有一个「返回对话」链接、侧栏整个消失,且三家各写了一套一模一样的 `*-shell`/`*-topbar`/`*-hero` 骨架——与上一单 E5 同根因(营销站 band 结构被套到产品界面)。**R4** 抽只读导航外壳 `AppNavRail`(只用现成的 `GET /api/sessions` + `GET /api/account`,会话行走 `sessionHref` 跳 `/?c=<uuid>`;**刻意不带**重命名/删除/收藏/归档——那套连着 `Home()` 的乐观更新与回滚,搬过来会撞 useState 增长门禁)。**R5** 星盘五 tab 下划线化 + 参数合表 + 行星表横向滚动;星历日期导航改 `‹ 日期 ›`。**R6** 报告中心卡片网格改行式列表;阅读页加常驻目录。**R7** 生时校正把可信区间从盘面板标题行提成常驻条(窄屏 `.is-compact` 下盘面板是 overlay,现在默认看不到区间),五个 `technique-audit` 折叠块收成两段。**R8** 设置内容区收窄(880px 弹窗里表单铺了 690px)、套餐卡三修饰符收敛成两态。**已解锁**:原挡路的设置单已于 `111b4a84`(BUG-698)合入。**两条不得回退**:BUG-698 的 `@supports (height: 1dvh)` 写法(重复声明回退会被 Lightning CSS 折叠)、BUG-616/617 的报告盘面 grid 实现。默认不占 BUG 号 | **R4–R8 全部已实现并验收合入** | R4:抽出 `AppNavRail`(只读,两个 GET,零写操作)+ `SecondaryShell`,三个次级页并入 app 外壳并删掉各自的 shell/topbar/hero;四个路由渲染标记**完全不变**(`/` `/chart` `/ephemeris` 仍 Static);CSS gzip −0.25%。`/reports/[reportId]` 留给 R6 与目录一起做。两处自身健壮性问题被测试抓到:`usePathname()` 可为 null、`fetch` 可能不存在。差点弄丢 BUG-717 的 eyebrow 文案(已放回)。R8:表单分区收窄到 440px(列表分区不变)、套餐卡三修饰符收敛成互斥的 `is-current` / `is-recommended`,`--highlighted` 删除改为滚动定位;手机端 `order:-1` 改挂 `[data-plan-alias]`(版位不是状态)。测试 3350→3354(净增 4),失败清单与基线逐条一致;`/` 仍 Static;我的干净构建实测 CSS gzip −3 字节。**遗留待产品拍板**:`?plan=` 深链现在完全没有视觉指向,只有滚动位置。R6:报告中心卡片网格改行式列表、阅读页并入外壳并把目录挪到右侧常驻。**任务书 E10 过期**——目录在 `cfcd369d` 就已存在,本轮是挪位置定稿而非从零加。挂外壳带出一个真实打印风险已处理:`.chat-app`/`.chat-panel` 是 `height:100%;overflow:hidden`,裸 `window.print()` 会把九节报告裁成一页,阅读页因此多挂一条只在挂载期生效的 print 样式解锁外壳。「生成中的分节进度」做不了——`REPORT_LIST_COLUMNS` 不返回节数,按 VOICE.md 不许前端编。R7:区间常驻条与盘面折叠收敛。**任务书 E9 也不准确**——对话区顶部早有常驻条 `RectificationTimeline` 且窄屏可见,真正只在盘面标题行的是**代表分钟**;因此没另造第二条,在既有条上补齐代表分钟与已答题数(与盘面同一次 `workingRectificationTime()` 调用)。折叠块实际是 **8 个**不是 5 个。**触发让步顺序第 5 条**:收窄进度未做——服务端无该字段,且 `candidate_range` 会放宽(BUG-572),前端相减会把一次放宽报成收窄,已写进 `BLOCKED.md`。顺带修掉一个**静默失效的旧断言**(`slice(indexOf(A), indexOf(B))` 在 B 改名后变成几乎整份文件,四条 `doesNotMatch` 假通过)|
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# 真机清单 · 合规五项(2026-09-30)
|
||||
|
||||
对应 `docs/tasks/PROGRESS-compliance-launch-20260930.md`。需要一个 staging 测试账号(不要用真实个人资料);第 9~11 步会让这个账号进入注销流程,最后记得撤销。电脑和手机各走一遍。
|
||||
|
||||
| # | 操作 | 应该看到 | 结果 |
|
||||
|---|---|---|---|
|
||||
| 1 | 退出登录,打开登录页 | 底部有「用户协议」「隐私政策」链接;输入框下方有一个未勾选的「我已阅读并同意《用户协议》和《隐私政策》」 | |
|
||||
| 2 | 不勾选直接点发送验证码 | 发不出去,框下出现一行提示 | |
|
||||
| 3 | 点两个链接 | 未登录也能打开,顶部写「草稿 · 版本 2026-09-30-draft,待律师审定」,手机上排版正常 | |
|
||||
| 4 | 勾选后登录 | 正常进入首页 | |
|
||||
| 5 | 头像菜单 | 有「反馈与投诉」,底部有协议和隐私政策链接 | |
|
||||
| 6 | 「反馈与投诉」选「内容举报」写 10 个字以上提交 | 提示「已收到」;后台「反馈与投诉」里看到这条,排在最前并标红,可以改状态和写备注 | |
|
||||
| 7 | 咨询里发一句普通问题,对回答点 👎,选「答非所问」 | 回答下方出现原因面板,写着「会把这一轮对话发给我们排查」;提交后致谢 | |
|
||||
| 8 | 后台「对话质量记录」 | 看到这条,点「查看」能看到问题和回答;审计日志里有这次查看;把 👎 改成 👍 后这条消失 | |
|
||||
| 9 | 设置 → 通用设置最底下「注销账号」 | 说明会删什么、保留什么、剩余点数作废;必须输入「注销」才能提交 | |
|
||||
| 10 | 提交后 | 立即退出登录;重新登录只看到「账号注销中,X 月 X 日永久删除」,有「撤销注销」 | |
|
||||
| 11 | 点「撤销注销」 | 账号恢复,对话和档案都还在 | |
|
||||
| 12 | 后台「注销申请」 | 看到这次申请与撤销,不显示邮箱 | |
|
||||
| 13 | 咨询里发一句明显违规的话(用词表里的测试短语,见 PROGRESS-content-moderation) | 回复「这个话题我们不能讨论,换个问题试试。」,点数没有减少;后台「内容审核记录」多一条,不含原文 | |
|
||||
| 14 | 咨询里问一个含「第八宫」「凶星」「死亡宫」的正常占星问题 | 正常回答,没有被拦 | |
|
||||
Reference in New Issue
Block a user