基于最新“搭子”设计稿逐页收敛后的 MVP 数据模型。只持久化真实协作数据;固定文案、探索演示内容和创建前 AI 临时会话由前端或外部接口承担。
优先支撑“登录—创建行程—邀请—群聊—搭搭推荐 POI—更新正式行程”的闭环。
“前端承担”表示符合当前 MVP 取舍,不代表未来不能服务端化。
| 页面 | 处理方式 | 数据库落点 | 本轮调整 |
|---|---|---|---|
| 01 首页 · 我的行程 | 后端数据 | outings、outing_members、vibemate_users | 新增成员头像、行程封面 |
| 02 邀请 · 快速加入 | 后端数据 | outing_invitations、outing_members | 统一随机 invite_code;未登录先跳登录 |
| 03 已有行程 · 详情 | 后端数据 | outings、outing_events | POI 展示快照保存在 poi_json |
| 04 AI 简单聊 | 前端临时 | 创建后仅保存 raw_intent | 不引入草稿行程或 AI 会话表 |
| 05 AI 推荐 · 创建行程 | 创建时落库 | outings、outing_members、outing_events | 事件时间允许暂未确定 |
| 06 多人群聊 | 后端数据 | outing_messages、outing_events | 不增加 last_read_message_id |
| 07 搭搭推荐 POI | 消息卡片 | outing_messages.payload_json | 暂不做投票和确认 |
| 09 探索 | 前端 / 外部接口 | 采纳后才进入 outing_events | 不建设社区内容域 |
点击表可高亮相关关系;再次点击同一张表或点击画布空白即可取消。连线说明统一放在图下,避免遮挡关系线。
未登录用户不能进入任何应用页面。打开邀请链接也先登录,成功后返回原邀请地址。
redirect_uriAuthing JWTBearer TokenJWT verifySELECT userbusiness APIAuthing 负责签发和刷新 Token,业务服务本地验证 JWT,所以当前不需要服务器会话表。设备管理、强制下线以后再按需求补充。
只保留 MVP 真正执行的链路。
planning正在讨论和安排。
ongoing行程正在进行。
completed行程已经结束。
cancelled行程被取消。
active当前有效成员。
left主动退出。
removed被组织者移出。
拒绝邀请属于邀请状态,不创建成员记录。
directpending → accepted / rejected,也可 revoked / expired。
share_linkactive → revoked / expired;单个用户加入不会使共享链接失效。
UNIQUE(outing_id, user_id),重复加入不会产生重复成员。
invite_code 随机且唯一;后端仍校验登录、邀请类型、接收人和有效期。
UNIQUE(outing_id, client_message_id),发送重试不会重复写入。
同一行程使用应用锁或 MySQL GET_LOCK,避免两次更新互相覆盖。
选择表查看完整字段、约束及索引用途。
未登录用户不能进入应用,包括邀请页;登录成功后返回原目标地址。Token 由 Authing 签发,业务服务本地验签。