Files
Jyotisha/docs/tasks/TASK-consult-gender-optional-20260927.md
T

55 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TASK · 星盘资料加「性别(选填)」,接到婚恋数据卡(2026-09-27)
## 基线
- **串行在 `TASK-consult-evidence-card-v2-20260927` 之后**:开工时核对该单已合入 `origin/staging`,以最新 `origin/staging` 为基线,写进 PROGRESS。
- 分支 `codex/consult-gender-optional-20260927`,工作树 `.worktrees/consult-gender-optional-20260927`。
## 背景
- 顾问意见(请教单 https://claude.ai/artifact/TTLEGmYt6m9R9sFnzynVJU ):婚恋判断须先确认性别与昼夜盘,性别决定夫星 / 妻星取法(`strict-workflow-router.md` §4「Confirm gender and day/night context before spouse significator analysis」)。
- 现状(Claude 2026-09-27 核实):数据库迁移与资料页均无性别字段;数据卡 v2 婚恋卡写「性别未知」,模型同时看金星与木星、不按性别下定论。
## 决策记录(产品 2026-09-27)
- G1 在星盘资料里加**选填**「性别」:本人资料与星盘档案里的每个人都可以填;不填不影响任何功能,不在注册 / 开场流程里强制询问。
- G2 取值:女 / 男 / 不填(存为空)。文案对照 `frontend/docs/VOICE.md`,给一句说明「用于婚恋解读里判断夫星 / 妻星,不填也能用」。
- G3 填了就写进婚恋数据卡(基础段或婚恋段的一个字段),精简清单里的「性别未知」规则只在未填时生效;已填时按 `strict-workflow-router.md` §4 的取法。
- G4 性别属于个人资料,按出生资料同等隐私级别处理:不进日志、遥测、反馈记录、BUG 历史、测试夹具里的真实数据。
## 硬红线
1. 数据库只做**加法**(AGENTS §7.6):给现有资料表加可空列(带取值 CHECK),不改旧列、不收紧约束;迁移对当前已部署代码向后兼容。**动表必须真跑 `npm run test:db`**(本机无 Docker 时以门禁 DB job 结果为准,写进 PROGRESS 并附 run 号);RLS 与现有资料列一致(只有本人可读写自己的资料)。
2. 本人资料、星盘档案(多人物,BUG-1034~1036 相关)两处读写一致;切换当前星盘时婚恋卡用的是**当前人物**的性别,不串人(参考人物档案 P0 教训:他人报告用了用户主资料)。
3. 不改引擎计算;性别只影响数据卡字段与清单规则。
4. 前端红线全套 + 全量 Python 门禁集;改 UI 同步 `frontend/DESIGN.md`、新文案对照 `VOICE.md`;改既有断言写三栏。
5. 禁止 `git stash`;只 `git add <具体路径>`,提交前看 `git diff --cached --stat`(ERR-112);不推送。
## 任务分解
### T1 数据层
- 迁移:可空列 + CHECK(女 / 男);读写 API(本人资料、星盘档案增改查)带上该字段;类型与 zod 同步。
- **验收**:DB 测试覆盖读写、RLS、他人不可读;旧数据为空正常工作。
### T2 界面
- 星盘档案编辑表单与本人资料编辑处加选填单选(女 / 男 / 不填),附一句说明;详情页展示(未填不展示或展示「未填」,按 DESIGN 口径)。
- **验收**:组件测试;390 / 1280 截图(虚构数据)存 `docs/testing/consult-gender-optional-20260927/`。
### T3 接入婚恋卡
- 数据卡带当前人物的性别;精简清单的性别规则按有无切换。
- **验收**:记录提示词的假模型测试:已填时卡里有性别、清单不出现「性别未知」规则;未填时相反;切换人物后取对应人物的值。
### T4 记录
- CHANGELOG;`docs/tasks/PROGRESS-consult-gender-optional-20260927.md`;`docs/testing/consult-gender-optional-20260927.md`(真机:给本人和另一人分别填 / 不填性别,各问一次婚恋,看回答是否按性别取夫星 / 妻星、未填时是否两边都看);`docs/tasks/README.md` 本单一行改「待验收」。
## 开工前置命令
```bash
cd /workspace/Jyotisha && git fetch origin --prune
git worktree add -b codex/consult-gender-optional-20260927 .worktrees/consult-gender-optional-20260927 origin/staging
ln -s /workspace/Jyotisha/frontend/node_modules .worktrees/consult-gender-optional-20260927/frontend/node_modules
export PATH=/exec-daemon:$PATH
```
先读:`AGENTS.md`(§5–§8,尤其 §7.6 迁移两轮规则)、`deploy/README.md` 迁移一节、人物档案相关 BUG(搜索「人物档案」「chart_subject」「他人报告」)、最近一次加列迁移的写法(`frontend/supabase/migrations/2026092*`)。开工先跑基线全量前端测试(Node 22)与全量 Python 门禁集。