Files
digital-psychology/.ai/domain/erd.md
T
jackyu66gitandCursor dd94e57277 docs: freeze YuXinGu lexicon, journey, and P1 engineering sources
Establish product language contract, user journey with dual growth engines,
ERD/OpenAPI/Go boundaries, and H5 routes (/profile, /portrait, /relation,
/membership) before P1 implementation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-02 16:12:10 +08:00

173 lines
4.0 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.
# ERD — P1 Schema(冻结草案)
实现时用 migration 落地;列名可微调但**表/聚合关系不得偏离**。
类型:Postgres。敏感:生日等属 Profile,需可删账号级联。
---
## Tables
### users
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| created_at | timestamptz | |
| status | text | active/deleted |
### device_identities
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| device_key | text unique | Visitor |
| user_id | uuid null FK→users | 升级后绑定 |
### profiles
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK→users | |
| relation | text | self \| other |
| display_name | text | |
| birth_date | date | required P1 |
| birth_time | time null | optional |
| birth_place | text null | optional |
| gender | text null | |
| relation_type | text null | partner/family/friend… when other |
| created_at | timestamptz | |
### scales
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| slug | text unique | |
| title | text | 探索测试标题 |
| status | text | published/draft |
### scale_questions
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| scale_id | uuid FK | |
| sort | int | |
| body | jsonb | 题干与选项 |
### scale_results
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK | |
| scale_id | uuid FK | |
| profile_id | uuid FK | |
| answers | jsonb | |
| result | jsonb | 探索结果摘要(可公开字段) |
| created_at | timestamptz | |
### growth_reports
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK | |
| profile_id | uuid FK | |
| type | text | portrait \| relation \| … |
| summary | jsonb | **基础版**,始终可按规则返回 |
| detail | jsonb | **深度版**,服务端按权益剥离 |
| created_at | timestamptz | |
### relation_insights
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK | |
| profile_a_id | uuid FK | usually self |
| profile_b_id | uuid FK | other |
| summary | jsonb | 对比标签等基础 |
| report_id | uuid null FK→growth_reports | 深度建议所在报告 |
| created_at | timestamptz | |
### ask_threads
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK | |
| profile_id | uuid FK | 当前解读对象 |
| created_at | timestamptz | |
### ask_messages
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| thread_id | uuid FK | |
| role | text | user \| assistant |
| content | text | |
| created_at | timestamptz | |
### memberships
| column | type | notes |
|---|---|---|
| user_id | uuid PK FK→users | |
| plan | text | month/quarter/year |
| status | text | active/expired |
| expires_at | timestamptz | |
| ask_quota_left | int | |
### orders
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK | |
| kind | text | membership \| deep_access |
| amount_cents | int | |
| status | text | created/paid/failed |
| created_at | timestamptz | |
### payments
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| order_id | uuid FK | |
| channel | text | mock \| wechat… |
| status | text | |
| raw | jsonb null | |
### deep_accesses
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK | |
| report_id | uuid FK→growth_reports | |
| order_id | uuid FK | |
| created_at | timestamptz | |
### moodsP2 可先建表空用)
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK | |
| day | date | |
| score | int null | |
| note | text null | |
### memory_itemsP3
| column | type | notes |
|---|---|---|
| id | uuid PK | |
| user_id | uuid FK | |
| kind | text | |
| payload | jsonb | |
| created_at | timestamptz | |
---
## Relationship sketch
```
users 1──* profiles
users 1──* scale_results
users 1──* growth_reports
users 1──0..1 memberships
users 1──* orders 1──* payments
growth_reports 1──* deep_accesses
profiles ── relation_insights ── profiles
users 1──* ask_threads 1──* ask_messages
```