Files
digital-me-history/digital-me-web/docs/ROUTE-FLOW-YUANQI-TO-ZHAOMING.md
admin 0593ff7e62
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s
数字我 Digital Me:全量入库(大文件走 Git LFS)
2026-10-10 16:24:43 +08:00

365 lines
7.8 KiB
Markdown
Raw Permalink 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.
# 缘起到照命:前端路由流程
> 更新时间:2026-08-28
> 范围:完整项目入口、第一章「缘起」、第二章「铸身」、第三章「照命」
> 权威配置:`src/router.ts`
这三个新页面不是独立项目,也没有另起一套路由;它们直接接替 `digitme.cn` 原项目中缘起、铸身、照命的正式位置。
## 1. 当前主流程
```text
打开完整项目
/
│
└─ 六章总入口
│
└─ 进入第一章
/menmian?start=1
第一章 · 缘起
│
├─ 选择主业、第二擅长、性情
├─ 推演历朝结果
└─ 继续这一生 · 把我铸完整
/shishi/zhushen
第二章 · 铸身
│
├─ 本事
├─ 性情
├─ 分量
├─ 来处
└─ 持此身,进入照命
├─ 游客:/shishi/zhaoming
└─ 已登录分身:/twin/:id/verdict
第三章 · 照命
```
## 2. 路由总表
| 阶段 | 地址 | 路由名 | 页面组件 | 说明 |
|---|---|---|---|---|
| 完整项目首页 | `/` | `shishi` | `src/views/ShishiHome.vue` | 六章总入口,不被本分支替换 |
| 缘起 | `/menmian` | `menmian` | `src/views/Menmian.vue` | 第一章正文;加 `?start=1` 时先显示无字卷序幕 |
| 旧六章目录地址 | `/shishi` | 无 | 无 | 兼容地址,重定向到 `/` |
| 铸身 | `/shishi/zhushen` | `shishi-zhushen` | `src/views/shishi/Zhushen.vue` | 第二章;游客和登录用户共用 |
| 游客照命 | `/shishi/zhaoming/:dynasty?` | `zhaoming-guest` | `src/views/Verdict.vue` | 第三章;无分身也可进入 |
| 分身照命 | `/twin/:id/verdict/:dynasty?` | `verdict` | `src/views/Verdict.vue` | 登录分身使用,带分身 ID |
## 3. 完整项目首页与分支入口
### 地址
```text
/
```
### 当前行为
根地址继续渲染完整项目原有的六章总入口:
```text
/
```
我们的新流程不占用根地址。从总入口选择第一章「缘起」后才进入:
```text
/menmian?start=1
```
旧六章目录地址继续兼容:
```text
/shishi → /
```
## 4. 第一章:缘起
### 标准入口
```text
/menmian?start=1
```
### 可用查询参数
| 参数 | 示例 | 作用 |
|---|---|---|
| `start` | `?start=1` | 先显示无字卷序幕;用户点击后进入缘起正文 |
| `q` | `?q=医生` | 预填当前职业,并尝试映射职业签 |
可以组合:
```text
/menmian?start=1&q=医生
```
### 页面内流程
1. 进入无字卷序幕。
2. 点击继续,隐藏序幕并回到缘起正文顶部。
3. 选择主业。
4. 可补充第二擅长和性情。
5. 点击推演,生成历朝身份对照。
6. 推演成功后调用 `shishi.markYuanqi()`,标记缘起已阅。
7. 把以下草稿写入本机 `localStorage`:
```text
key: yuanqi_draft
profId 主业 ID
profName 主业名称
portraitDynasty 缘起题像朝代
chipTalents 第二擅长
chipTraits 性情
```
8. 点击“继续这一生 · 把我铸完整”进入:
```text
/shishi/zhushen
```
### 顶部导航
```text
一 · 缘起 当前页
二 · 铸身 /shishi/zhushen
三 · 照命 /shishi/zhaoming
四 · 入局 /shishi/ruju
六 · 传世 /shishi/chuanshi
```
## 5. 第二章:铸身
### 地址
```text
/shishi/zhushen
```
### 数据承接
铸身页会读取缘起写下的 `yuanqi_draft`,用于回显或补齐:
- 主业
- 第二擅长
- 性情
- 缘起题像朝代
游客铸身的稳定本地状态写入:
```text
key: shishi.guest.zhushen
```
### 页面内四步
```text
1 · 本事
2 · 性情
3 · 分量
4 · 来处
```
四步完成后合炉定身,显示人物名帖。
### 进入照命的分支
铸身页根据是否存在当前分身 ID 生成不同目标地址。
#### 游客
```text
/shishi/zhaoming
```
#### 已登录且有分身
```text
/twin/:id/verdict
```
例如:
```text
/twin/abc123/verdict
```
### 顶部导航
```text
一 · 缘起 /menmian?start=1
二 · 铸身 当前页
三 · 照命 /shishi/zhaoming
四 · 入局 /shishi/ruju
六 · 传世 /shishi/chuanshi
```
## 6. 第三章:照命
照命的游客版和分身版都复用:
```text
src/views/Verdict.vue
```
### 游客地址
```text
/shishi/zhaoming
```
可选 path 参数:
```text
/shishi/zhaoming/:dynasty?
```
例如:
```text
/shishi/zhaoming/nanchao
```
### 分身地址
```text
/twin/:id/verdict
```
可选朝代 path 参数:
```text
/twin/:id/verdict/:dynasty?
```
例如:
```text
/twin/abc123/verdict/nanchao
```
### 正式朝代参数
朝代沿用原项目的 path 参数:
```text
/shishi/zhaoming/:dynasty?
/twin/:id/verdict/:dynasty?
```
例如:
```text
/shishi/zhaoming/nanchao
/twin/abc123/verdict/nanchao
```
命盘连续切换朝代时使用 `router.replace()` 更新 path 参数:
- 保留原项目可复制、可回退的正式地址
- `App.vue` 对同一游客照命或同一分身照命使用稳定 `RouterView key`,不重新挂载整个页面
- 不制造大量浏览器历史记录
- `router.ts` 对同一照命页的朝代切换保持滚动位置
此前短暂生成过的 `?dyn=朝代ID` 链接只作为兼容入口;页面打开后会自动归一到正式 path,不再继续生成 query 形式的新链接。
### 其他查询参数
照命页会保留并向后传递现有 query,例如:
| 参数 | 作用 |
|---|---|
| `tier` | 当前位阶 |
| `twin` | 当前分身 ID |
| `chushen` | 选定的出身分支 |
### 从照命返回
```text
返回缘起:/menmian?start=1
返回铸身:/shishi/zhushen
```
### 从照命继续
游客点击“展开这朝命局”后,进入入局流程:
```text
/ruju/:code/:year?tier=...&dyn=...
```
登录分身点击后,先创建或续接一部传,再进入:
```text
/twin/:id/lineage/:lid
```
如果创建时已经直接成传,则进入:
```text
/twin/:id/zhuan/:lid
```
## 7. 游客与登录分身的区别
| 环节 | 游客 | 登录分身 |
|---|---|---|
| 缘起 | `/menmian?start=1` | `/menmian?start=1` |
| 铸身 | `/shishi/zhushen` | `/shishi/zhushen` |
| 铸身数据 | `localStorage` | 分身数据与接口 |
| 照命 | `/shishi/zhaoming` | `/twin/:id/verdict` |
| 照命计算 | 游客铸身预览数据 | 当前分身画像 |
| 展开命局 | 进入游客入局 | 创建或续接一部传 |
## 8. 推荐验收地址
```text
# 完整项目首页,应该显示六章总入口
http://127.0.0.1:5173/
# 我们分支的正式起点:缘起无字卷序幕
http://127.0.0.1:5173/menmian?start=1
# 带职业预填的缘起入口
http://127.0.0.1:5173/menmian?start=1&q=医生
# 铸身
http://127.0.0.1:5173/shishi/zhushen
# 照命
http://127.0.0.1:5173/shishi/zhaoming
# 指定朝代的照命
http://127.0.0.1:5173/shishi/zhaoming/nanchao
# 旧六章目录兼容地址,应该回到完整项目首页
http://127.0.0.1:5173/shishi
```
## 9. 相关代码
```text
src/router.ts
src/views/Menmian.vue
src/views/shishi/Zhushen.vue
src/views/Verdict.vue
src/components/shishi/ZhushenForgeBoard.vue
src/components/shishi/ZhaomingWheelBoard.vue
src/lib/shishi.ts
```
## 10. 路由修改原则
后续调整这段流程时应保持:
1. `/` 始终保留完整项目的六章总入口,不能被本分支覆盖。
2. `/menmian?start=1` 始终是「缘起 → 铸身 → 照命」分支的正式起点。
3. `/shishi` 作为旧目录兼容地址回到 `/`。
4. 游客照命继续使用 `/shishi/zhaoming`。
5. 分身照命继续使用 `/twin/:id/verdict`。
6. 朝代始终使用 `/:dynasty` path;通过稳定 `RouterView key` 避免同一照命页重挂。
7. 缘起写入的 `yuanqi_draft` 必须继续被铸身读取。
8. 铸身到照命必须保留游客和登录分身两条分支。