fix(v2.2): StoryPlayer 推进竞态加固(双审查 SHOULD-FIX)
- speak 兜底定时器先于 speak 注册 + try/catch:speak 抛异常不再导致 剧情永久卡死(估时/forceNext 未注册的失败模式) - speak onEnd 与估时闭包加行号守卫(lineIndex===i && !ended):迟到的 上一句 onEnd 不再提前放行当前句 - SceneTheater 估时封顶 20s(与 MAX_LINE_MS 对齐),注释同步 v2.2 语义 - plan Task 10 更新为实际实现(SetServerRoot + /static 挂载) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1392,9 +1392,10 @@ git commit -m "feat: 全自动演出——开场自动进入/回复自动继续/
|
||||
> 用户走查反馈:① 必须点跳过才出选项(speak onEnd 部分环境不回调,逐句推进靠 20s forceNext 兜底,体验像卡死);② 剧情不需要文字展示区,直接语音播放;③ 前端应与后端共用 :8080。规格:spec「v2.2 修订」章节。
|
||||
|
||||
**Files:**
|
||||
- Modify: `ui-src/src/components/StoryPlayer.vue`(纯语音 + 估时兜底)
|
||||
- Modify: `ui-src/src/components/StoryPlayer.vue`(纯语音 + 估时兜底 + 审查加固)
|
||||
- Modify: `ui-src/src/components/SceneTheater.vue`(估时兜底 + 20s 封顶)
|
||||
- Modify: `ui-src/src/pages/play/play.vue`(移除 :show-pinyin 传参)
|
||||
- Modify: `main.go`(AddStaticPath 托管前端产物)
|
||||
- Modify: `main.go`(SetServerRoot 托管前端产物 + /static 素材挂载)
|
||||
|
||||
- [ ] **Step 1: StoryPlayer 改纯语音演绎**
|
||||
|
||||
@@ -1522,12 +1523,15 @@ export default {
|
||||
|
||||
- [ ] **Step 3: main.go 托管前端产物(8080 单端口)**
|
||||
|
||||
`main.go` 在 `controller.Register(s)` 后加:
|
||||
`main.go` 在 `controller.Register(s)` 后加(**须用 SetServerRoot**——走查发现 GoFrame v2.10.2 `AddStaticPath("/", ...)` 因前缀防误匹配守卫 `uri[len(prefix)] != '/'` 只服务根路径,`/assets/*` 子路径全部 404;素材目录 `ui-src/static` 以 `/static` 前缀单独挂载,与后端 `scene.image` 返回的 `/static/generated/...` URL 对应):
|
||||
|
||||
```go
|
||||
// 生产形态:前端产物 ui-src/dist 由后端 :8080 统一托管(前后端同端口)
|
||||
if _, err := os.Stat("ui-src/dist"); err == nil {
|
||||
s.AddStaticPath("/", "ui-src/dist")
|
||||
s.SetServerRoot("ui-src/dist")
|
||||
}
|
||||
if _, err := os.Stat("ui-src/static"); err == nil {
|
||||
s.AddStaticPath("/static", "ui-src/static")
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user