CODE 小宇宙
ER & SCHEMA · DRAFT
实体关系(ER)图 与 字段级 Schema 草案
给研发的落地草案(方向性、非最终):13 张表,一切围绕主产品 decision(决策卡/认知轨迹) 旋转。能力画像 / 成长等级 是派生视图,由 decision 聚合而来,不重复真源。多租户隔离靠 org_id 贯穿全表。
1
关系总览
主链 + 派生
course(课程) 1—N 喂入 → project(给项目一条有体系的路径)
decision 聚合派生 →
另:project 1—N app(作品/应用,可发布造物星球)· course N—N app / ability / milestone · user(parent) —relation→ user(student)。
2
表结构 Schema
字段 · 类型 · 键 · 说明
组织与身份多租户地基
org组织树(总部/校区/班级)
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| type | ENUM | | hq / partner / class |
| name | VARCHAR | | 名称 |
| parent_id | BIGINT | FK→org | 自引用,构成树 |
| region | VARCHAR | | 区域(授权) |
| created_at | TIMESTAMP | | — |
user用户 · 身份
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| role | ENUM | | student/teacher/parent/partner/hq |
| name | VARCHAR | | — |
| org_id | BIGINT | FK→org | 所属(隔离键) |
| sso_sub | VARCHAR | IDX | 统一登录 subject |
relation用户关系(家长↔孩子 / 老师↔班)
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| from_user_id | BIGINT | FK→user | — |
| to_user_id | BIGINT | FK→user | — |
| type | ENUM | | parent_of / teacher_of |
课程付费载体 · 总部中心化
course课程 = 能力+里程碑+成果+应用
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| title | VARCHAR | | — |
| stage | ENUM | | 启蒙/入门/成长/深入/收获 |
| goal / deliverable | TEXT | | 目标 / 交付成果 |
| weeks | TINYINT | | 时长 |
| owner_id | BIGINT | FK→user | NULL=官方;否则老师自开 |
| status / version | ENUM/INT | | draft/published · 版本 |
course_milestone课程里程碑(有序)
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| course_id | BIGINT | FK→course | — |
| ord | TINYINT | | 顺序 |
| title / desc | VARCHAR/TEXT | | 里程碑 |
course_ability课程 ↔ 能力(N:N)
| 字段 | 类型 | 键 | 说明 |
| course_id | BIGINT | FK PK | 复合主键 |
| ability_key | ENUM | PK | 六维之一(见 ability_profile) |
course_app课程 ↔ 应用(N:N)
| 字段 | 类型 | 键 | 说明 |
| course_id | BIGINT | FK PK | — |
| app_id | BIGINT | FK→app PK | 课程含哪些可动手应用 |
创造与认知主链 · 主产品
project项目 · 一次创造
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| student_id | BIGINT | FK→user | — |
| course_id | BIGINT | FK→course | 可空(自由创作) |
| title | VARCHAR | | — |
| current_ring | TINYINT | | 0–5(六环;对孩子隐藏) |
| status | ENUM | | creating/stuck/review/published |
| created_at / updated_at | TIMESTAMP | | — |
decision决策卡 / 认知轨迹◆ 主产品
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| project_id | BIGINT | FK→project | — |
| student_id | BIGINT | FK→user IDX | 冗余便于聚合 |
| ring | TINYINT | IDX | 0–5 所属环 |
| type | ENUM | | 评判/划界/求证/选择/改意图/反思/负责 |
| summary | VARCHAR | | 决定内容 |
| why | TEXT | | "为什么这么决定" |
| source | ENUM | | auto(管线抽取)/ manual |
| created_at | TIMESTAMP | IDX | — |
app作品 / 应用(可发布造物星球)
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| project_id | BIGINT | FK→project | — |
| owner_id | BIGINT | FK→user | — |
| title / preview_meta | VARCHAR/JSON | | 元数据 |
| publish_status | ENUM | | draft/published |
| plays / likes / impact | INT/TEXT | | 造物星球指标 |
| source_kind | ENUM | | native / 3rd-party(填地址接入 + 统计插件) |
派生 · 评价由 decision 聚合,非真源
ability_profile能力画像派生
| 字段 | 类型 | 键 | 说明 |
| student_id | BIGINT | FK PK | 复合主键 |
| ability_key | ENUM | PK | 看清目标/独立求证/善用资源/动手落地/听取反馈/自我认知 |
| mastery | TINYINT | | 0–100(按 ring 聚合) |
| updated_at | TIMESTAMP | | 管线更新 |
growth_level成长等级(事件)派生
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | 升级事件 |
| student_id | BIGINT | FK→user | — |
| level | TINYINT | | 1–5 |
| evidence | JSON | | 佐证的 decision_ids / app_ids |
| upgraded_at | TIMESTAMP | | — |
growth_report成长报告(老师生成 → 家长)
| 字段 | 类型 | 键 | 说明 |
| id | BIGINT | PK | — |
| student_id / teacher_id | BIGINT | FK→user | — |
| period | VARCHAR | | 周/月 |
| summary / suggestion | TEXT | | 摘要 + 家庭建议 |
| source_snapshot | JSON | | 生成时的 decision/level 快照 |
| generated_at / delivered_to | TIMESTAMP/JSON | | 推送去向 |
3
关键设计要点
主产品单表化
decision 是唯一真源,追加写、不更新;ability_profile/growth_level 都是它的物化视图(可重算),避免重复真相。
多租户隔离
org_id 贯穿;查询按角色注入租户过滤(家长=自家娃 / 老师=自己班 / 伙伴=本校区 / 总部=全网)。
写入来自数据管线
decision.source=auto 由创作台对话经 Skill/LLM 抽取写入(详见「数据流时序图」);manual 为孩子"记入我的决定"。
六环对孩子隐藏
project.current_ring、decision.ring 存在但孩子端不展示;仅老师/家长端与派生能力用它。
JSON 柔性字段
preview_meta/evidence/source_snapshot 用 JSON,避免早期强 schema 束缚快速迭代。
第三方应用接入
app.source_kind=3rd-party + 统一登录 + 统计插件回传,纳入造物星球与数据。
说明:本 schema 为方向性草案,用于研发对齐;字段类型/索引/分库分表策略待与后端确认。核心不变量:decision 是主产品、能力/等级是派生、org_id 做隔离。