按交叉评审对齐文档与代码口径,并挡住 reference 下的密钥文件
表名、配额种子和字段名以产品方案与架构为准;文档仓库补 .gitignore,避免 git add -A 把 API Key 推进远端。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+38
-26
@@ -54,32 +54,43 @@
|
||||
|
||||
### 2.2 用户数据模型
|
||||
|
||||
#### 用户主表 `user`
|
||||
> 表名与列清单以《技术架构文档》§6.2 为唯一事实源。本节只写产品语义,**不再自造表名**。
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `user_id` | string | 全局唯一 ID(雪花号) |
|
||||
| `phone` | string | 手机号(加密存储,脱敏展示) |
|
||||
| `huawei_open_id` | string | 华为账号标识 |
|
||||
| `nickname` / `avatar` | string | 昵称、头像 |
|
||||
| `gender` | enum | 女 / 男 / 不便告知 |
|
||||
| `birthday` | date | 生日。**用途限于生日权益与年龄段判断**,五行推算已取消(`TD-31`) |
|
||||
| `member_level` | enum | free / member / premium。**V1 恒为 `free`**,字段预留 |
|
||||
| `member_expire_at` | datetime | 会员到期时间。**V1 恒为空**,字段预留 |
|
||||
| ~~`points_balance`~~ | — | **不放在主表**。余额统一存 `bl_wallet.balance`,以 `bl_ledger` 流水为真相(架构 §6.2)。在主表冗余余额会引入两处数据不一致的风险,而余额是最不能出错的字段 |
|
||||
| `register_channel` | string | 注册渠道(归因) |
|
||||
| `status` | enum | active / frozen / deleting / deleted |
|
||||
| `created_at` / `last_active_at` | datetime | — |
|
||||
#### 账号主表 `id_user`
|
||||
|
||||
#### 授权记录表 `user_consent`(合规必需)
|
||||
内部主键与账号状态,与外部身份解耦。
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| `consent_type` | 隐私政策 / 人脸信息处理 / 个性化推荐 / 推送通知 |
|
||||
| `version` | 协议版本号 |
|
||||
| `user_id` | 雪花号,全局唯一。**不用手机号或 UnionID 做主键** |
|
||||
| `nickname` / `avatar_key` | 昵称、头像 |
|
||||
| `register_source` | 注册渠道(归因) |
|
||||
| `status` | `active` / `frozen` / `deleting` / `deleted` |
|
||||
| `created_at` / `last_active_at` | — |
|
||||
|
||||
**不在本表的字段(此前误画在主表上)**:
|
||||
|
||||
| 数据 | 实际位置 | 原因 |
|
||||
| --- | --- | --- |
|
||||
| 手机号 | `id_user_identity`(`provider='phone'`,`phone_enc` + `phone_hash`) | 登录凭证,不是用户属性;加密与检索要和华为身份走同一张映射表 |
|
||||
| 华为账号 | `id_user_identity`(`provider='huawei'`,`union_id` / `open_id`) | 同上 |
|
||||
| 性别 / 生日 | 画像与问卷(`pf_profile` / 报告问卷),不进账号主表 | 生日用途限于权益与年龄段,五行推算已取消(`TD-31`) |
|
||||
| 会员档位 / 到期 | V2 的 `bl_membership`;V1 不建 | V1 全员同一套配额,主表预留会员字段会造成「看起来能升级」的假接口 |
|
||||
| 余额 | `bl_wallet.balance`,以 `bl_ledger` 为真相 | 主表冗余余额会引入两处不一致 |
|
||||
|
||||
#### 登录身份表 `id_user_identity`
|
||||
|
||||
一个用户可有多条外部身份。`UNIQUE(provider, union_id)`。手机号检索用 `phone_hash`,展示用解密后掩码。
|
||||
|
||||
#### 授权记录表 `id_consent`(合规必需)
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| `consent_type` | `privacy` / `face` / `personalization` / `push` / `minor`。**人脸必须独立成行** |
|
||||
| `doc_version` | 协议版本号 |
|
||||
| `granted` | 是否同意 |
|
||||
| `granted_at` / `revoked_at` | 授权与撤回时间 |
|
||||
| `evidence` | 授权来源页面与操作记录 |
|
||||
| `client_ip` / `ua` | 授权来源留证 |
|
||||
|
||||
> 人脸信息属敏感个人信息,必须**单独授权**并可**单独撤回**;撤回后停止相关功能并删除派生数据。
|
||||
|
||||
@@ -340,15 +351,15 @@
|
||||
|
||||
### 3.9 存储与技术形态
|
||||
|
||||
> 选型结论见《[技术选型与调研报告](./技术选型与调研报告.md)》`TD-02`/`TD-08`;表结构见《[技术架构文档](./技术架构文档.md)》§5.2。
|
||||
> 选型结论见《[技术选型与调研报告](./技术选型与调研报告.md)》`TD-02`/`TD-08`;表结构见《[技术架构文档](./技术架构文档.md)》§6.2。
|
||||
|
||||
| 数据 | 存储 | 说明 |
|
||||
|------|------|------|
|
||||
| L0 / L1 / L2 结构化画像 | PostgreSQL | 强一致、可索引、可审计 |
|
||||
| L0 / L1 / L2 结构化画像 | PostgreSQL(`pf_profile` / `pf_diagnosis` / `pf_memory`) | 强一致、可索引、可审计 |
|
||||
| L3 事件与对话摘要 | PostgreSQL + pgvector | 同一库内完成硬过滤与语义召回,不引入专用向量库 |
|
||||
| L4 会话状态 | Redis(带 TTL) | 高频读写 |
|
||||
| L4 会话状态 | Redis(带 TTL)+ `ag_conversation.rolling_summary` | 高频读写 |
|
||||
| L5 衣橱单品 | PostgreSQL + COS(图片)+ pgvector(图像向量) | 支持图搜与属性筛选 |
|
||||
| 变更审计 | 追加写日志表 `memory_audit` | 记录每次记忆变更的 before/after 与操作者 |
|
||||
| 变更审计 | 追加写 `pf_memory_event` | 记录每次记忆变更的 before/after 与操作者 |
|
||||
|
||||
- 端侧仅缓存画像**摘要**,支持弱网/离线时的基础个性化展示;**不缓存记忆明文**(含体型尺寸等敏感项)
|
||||
- 所有记忆读写走统一 `MemoryService`,禁止各业务模块直连表,保证冲突消解与审计逻辑唯一
|
||||
@@ -436,7 +447,7 @@
|
||||
|
||||
| **V1 是否收费** | **完全不收费**(`TD-28`)。无会员、无点数购买、无 IAP。用配额硬限制控成本,额度用尽只有「等恢复」与「做任务换额度」两条路径,文案不出现价格字样 | `TD-28`、`FR-BILL-07` |
|
||||
| **登录方式** | V1 用「华为账号授权登录 + 手机号验证码」双通道;**一键登录降级为 P1 推至 V2**(需企业资质,属体验优化非能力缺口) | `TD-29`、`FR-ACC-13` |
|
||||
| **余额字段位置** | 余额存 `bl_wallet`,**不在 `user` 主表冗余** `points_balance`;以 `bl_ledger` 流水为真相 | 架构 §6.2 |
|
||||
| **余额字段位置** | 余额存 `bl_wallet`,**不在 `id_user` 冗余** `points_balance`;以 `bl_ledger` 流水为真相 | 架构 §6.2 |
|
||||
| **配额账本与点数账本的关系** | **同一张表**。V1 用 `system_grant`/`consume`/`refund` 三种 `tx_type`,V2 增加 `purchase`/`gift`,V2 上支付**无需数据迁移** | 架构 §6.2、§7.4 |
|
||||
|
||||
### 6.2 仍待业务输入
|
||||
@@ -461,12 +472,13 @@
|
||||
|
||||
---
|
||||
|
||||
**文档版本**:v1.2
|
||||
**文档版本**:v1.3
|
||||
**创建日期**:2026-08-11
|
||||
**更新日期**:2026-08-13
|
||||
**更新日期**:2026-08-14
|
||||
**作者**:产品团队
|
||||
**状态**:待评审
|
||||
**变更说明**:
|
||||
- v1.3(2026-08-14):§2.2 / §3.9 表名与架构 §6.2、实际代码对齐。原 `user` / `user_consent` / `memory_audit` 以及把手机号、华为账号画在主表上,是概念模型残留;现改为 `id_user` / `id_user_identity` / `id_consent` / `pf_memory_event`,并写明性别生日归画像、会员归 V2 `bl_membership`
|
||||
- v1.2 rev.2(2026-08-13):文档一致性评审修订
|
||||
- **§3.8 的记忆注入分项预算被采纳为全局唯一事实源**。评审发现架构 §7.2 与本节存在两套口径(会话 400 vs 800、合计 3700 vs 1400),**错在架构表** —— 本节的 800 是「最近 6 轮原文 + 更早轮次滚动摘要」,架构表只算了滚动摘要、漏掉近轮原文。故以本节分项为准,架构侧总输入合计由 3700 修正为 **4200**;`FR-MEM-04` 的「≤ 500」为误写,已改为 ≤ 1400(V1 实际 ≤ 1200,L3 为 V2 能力)
|
||||
- **§2.4.1 配额数值改为引用产品方案 §3.2**,不再复述。同时**游客额度已补入产品方案 §3.2 的配额表**(此前只写在本文 §2.1 的叙述里,导致 `FR-ACC-02` 的验收标准无法判定),并明确它是**设备维度的终身额度而非每日额度**
|
||||
|
||||
Reference in New Issue
Block a user