数字我 Digital Me:全量入库(大文件走 Git LFS)
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s

This commit is contained in:
2026-10-10 16:24:43 +08:00
commit 0593ff7e62
1893 changed files with 361723 additions and 0 deletions
@@ -0,0 +1,364 @@
# 缘起到照命:前端路由流程
> 更新时间: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. 铸身到照命必须保留游客和登录分身两条分支。