From c4da1a0c50b4f32e3fba614f882f5166de6be1d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=98=E9=A3=8E?= Date: Tue, 28 Apr 2026 14:30:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0wz-app=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E2026-04-27=E7=9A=84=E4=B8=89?= =?UTF-8?q?=E7=AB=AF=E8=BF=81=E7=A7=BB=E5=AE=8C=E6=88=90=E5=BA=A6=E4=BC=9A?= =?UTF-8?q?=E8=AE=AE=E8=AE=B0=E5=BD=95=EF=BC=8C=E5=AE=8C=E5=96=84=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=96=87=E6=A1=A3=E5=92=8C=E9=A1=B9=E7=9B=AE=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=96=87=E6=A1=A3=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E7=9A=84=E5=AE=8C=E6=95=B4=E6=80=A7=E4=B8=8E=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E6=80=A7=EF=BC=8C=E5=90=8C=E6=97=B6=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E8=BF=9B=E5=BA=A6=E5=92=8C=E5=86=B3=E8=AE=AE?= =?UTF-8?q?=EF=BC=8C=E6=8F=90=E5=8D=87=E5=9B=A2=E9=98=9F=E5=8D=8F=E4=BD=9C?= =?UTF-8?q?=E6=95=88=E7=8E=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../evolution/2026-04-27-三端迁移完成度会议.md | 10 ++ .cursor/agent/团队/evolution/索引.md | 1 + .../evolution/2026-04-27-三端迁移完成度会议.md | 3 + .cursor/agent/开发助理/evolution/索引.md | 1 + .cursor/agent/开发助理/项目索引/玩值.md | 3 +- .../evolution/2026-04-27-三端迁移完成度会议.md | 3 + .cursor/agent/玩值API工程师/evolution/索引.md | 1 + .../evolution/2026-04-27-三端迁移完成度会议.md | 3 + .../agent/玩值移动端工程师/evolution/索引.md | 1 + .../evolution/2026-04-27-三端迁移完成度会议.md | 3 + .../agent/玩值管理端工程师/evolution/索引.md | 1 + .../2026-04-27_三端迁移完成度与文档同步.md | 92 +++++++++++++++++++ .cursor/meeting/README.md | 1 + .cursor/skills/assistant-doc-sync/sync-log.md | 4 + new/wz-app/dist/index.html | 4 +- new/wz-app/src/api/live.ts | 1 + new/wz-app/src/pages/LivePage.tsx | 71 +++++++++++--- 开发文档/玩值/2026-04-27-日志.md | 4 + 开发文档/玩值/三端对齐项目清单.md | 3 +- 开发文档/玩值/迁移-wz-app路由映射.md | 4 +- 开发文档/玩值/进度-看板.md | 5 +- 21 files changed, 198 insertions(+), 21 deletions(-) create mode 100644 .cursor/agent/团队/evolution/2026-04-27-三端迁移完成度会议.md create mode 100644 .cursor/agent/开发助理/evolution/2026-04-27-三端迁移完成度会议.md create mode 100644 .cursor/agent/玩值API工程师/evolution/2026-04-27-三端迁移完成度会议.md create mode 100644 .cursor/agent/玩值移动端工程师/evolution/2026-04-27-三端迁移完成度会议.md create mode 100644 .cursor/agent/玩值管理端工程师/evolution/2026-04-27-三端迁移完成度会议.md create mode 100644 .cursor/meeting/2026-04-27_三端迁移完成度与文档同步.md create mode 100644 开发文档/玩值/2026-04-27-日志.md diff --git a/.cursor/agent/团队/evolution/2026-04-27-三端迁移完成度会议.md b/.cursor/agent/团队/evolution/2026-04-27-三端迁移完成度会议.md new file mode 100644 index 0000000..f0a67f7 --- /dev/null +++ b/.cursor/agent/团队/evolution/2026-04-27-三端迁移完成度会议.md @@ -0,0 +1,10 @@ +# 团队经验记录 - 2026-04-27 - 三端迁移完成度 + +## 来源 + +会议:`.cursor/meeting/2026-04-27_三端迁移完成度与文档同步.md` + +## 要点 + +- **「三端是否迁移完成」** 在仓库内应区分:① **主迁移**(新三端承接契约与 P0、新功能只写 `new/`)— **是**;② **与 `old` 全量业务域/大屏 UI 1:1 无遗漏**— **否**,以 `开发文档/玩值/进度-看板.md` 与 `三端对齐项目清单.md` 为准持续勾项。 +- 对外/对内表述建议用「**新三端主链已迁移并持续对齐**」,避免单独一句「已全部完成」产生验收歧义。 diff --git a/.cursor/agent/团队/evolution/索引.md b/.cursor/agent/团队/evolution/索引.md index 17ec252..bf86605 100644 --- a/.cursor/agent/团队/evolution/索引.md +++ b/.cursor/agent/团队/evolution/索引.md @@ -2,4 +2,5 @@ | 日期 | 主题 | |------|------| +| 2026-04-27 | [三端迁移完成度(主迁移 / 全量对齐)](2026-04-27-三端迁移完成度会议.md) | | 2026-04-24 | [玩值全项目会议(跨端决策)](2026-04-24-玩值全项目会议.md) | diff --git a/.cursor/agent/开发助理/evolution/2026-04-27-三端迁移完成度会议.md b/.cursor/agent/开发助理/evolution/2026-04-27-三端迁移完成度会议.md new file mode 100644 index 0000000..7e9f3b7 --- /dev/null +++ b/.cursor/agent/开发助理/evolution/2026-04-27-三端迁移完成度会议.md @@ -0,0 +1,3 @@ +# 开发助理 经验 - 2026-04-27 + +- 会议主题:三端迁移完成度;已更新 `开发文档/玩值/进度-看板.md`、`三端对齐项目清单.md`、`2026-04-27-日志.md`、项目索引玩值、meeting 索引、团队 evolution。 diff --git a/.cursor/agent/开发助理/evolution/索引.md b/.cursor/agent/开发助理/evolution/索引.md index 4477a02..567af6e 100644 --- a/.cursor/agent/开发助理/evolution/索引.md +++ b/.cursor/agent/开发助理/evolution/索引.md @@ -4,6 +4,7 @@ | 日期 | 摘要 | 文件 | |------|------|------| +| 2026-04-27 | 玩值三端迁移完成度会议:主迁移完成、全量对齐 ongoing;看板/三端/纪要/索引 | 2026-04-27-三端迁移完成度会议.md | | 2026-04-24 | 玩值全项目会议收尾:纪要、索引、看板/三端/玩值与 sync-log | 2026-04-24-玩值全项目会议收尾.md | | 2026-04-24 | wz-app 经验吸收与文档同步(跨端摘要) | 2026-04-24-wz-app经验吸收与文档.md | | 2026-04-22 | TS 原生编译跨平台(Perry)全员吸收与 Skill 沉淀 | 2026-04-22-TS原生编译跨平台全员吸收.md | diff --git a/.cursor/agent/开发助理/项目索引/玩值.md b/.cursor/agent/开发助理/项目索引/玩值.md index c06e1a3..0e4f581 100644 --- a/.cursor/agent/开发助理/项目索引/玩值.md +++ b/.cursor/agent/开发助理/项目索引/玩值.md @@ -19,5 +19,6 @@ | 2026-04-24 | 收官计划实施 | 纪要好四问;build-info+`GIT_COMMIT`;wz-admin 点卡订单页与侧栏;对照表/看板/三端/MIGRATION 更新 | | 2026-04-24 | 收官续作清单落地 | `old/app` 点卡列表接 wz-api;`live.ts` 房间 game 回退主播字段;wz-admin 旅程筛选页、内容详情路由、大屏 MockSparkline、主播详情 isLive;`scripts/test/wz-playhub-p0.md`;文档与 sync-log 同步 | | 2026-04-24 | **交付真源决议** | 玩值新功能 **仅在 `new/wz-api`、`new/wz-admin`、`new/wz-app`**;`old/` 仅对照;已同步 boundary、wz-app-dev、change-checklist、看板、三端清单、对照表头、wz-app README | +| 2026-04-27 | 三端迁移完成度会议 | 纪要 `meeting/2026-04-27_三端迁移完成度与文档同步.md`;结论「主迁移完成、全量对齐 ongoing」;看板/三端清单/日志/团队与玩值 evolution 已同步 | -最后更新:2026-04-24 +最后更新:2026-04-27 diff --git a/.cursor/agent/玩值API工程师/evolution/2026-04-27-三端迁移完成度会议.md b/.cursor/agent/玩值API工程师/evolution/2026-04-27-三端迁移完成度会议.md new file mode 100644 index 0000000..0f74add --- /dev/null +++ b/.cursor/agent/玩值API工程师/evolution/2026-04-27-三端迁移完成度会议.md @@ -0,0 +1,3 @@ +# 玩值 API 工程师 经验 - 2026-04-27 + +- 会议结论:`new/wz-api` 在**分组、P0 域、对照表登记**上属主迁移**已完成**;未实现/未登记行随域迭代,不等同于「迁移未开始」。 diff --git a/.cursor/agent/玩值API工程师/evolution/索引.md b/.cursor/agent/玩值API工程师/evolution/索引.md index 1bb0bf7..aed2566 100644 --- a/.cursor/agent/玩值API工程师/evolution/索引.md +++ b/.cursor/agent/玩值API工程师/evolution/索引.md @@ -2,6 +2,7 @@ | 日期 | 主题 | |------|------| +| 2026-04-27 | [三端迁移完成度会议](2026-04-27-三端迁移完成度会议.md) | | 2026-04-24 | [收官计划 build-info 与 GIT_COMMIT](2026-04-24-收官计划-build-info与GIT_COMMIT.md) | | 2026-04-24 | [全项目会议与 P0 接口](2026-04-24-全项目会议与P0接口.md) | | 2026-04-23 | [App 点卡与直播管理端房间详情](2026-04-23-App点卡与直播管理端房间详情.md) | diff --git a/.cursor/agent/玩值移动端工程师/evolution/2026-04-27-三端迁移完成度会议.md b/.cursor/agent/玩值移动端工程师/evolution/2026-04-27-三端迁移完成度会议.md new file mode 100644 index 0000000..82f7b36 --- /dev/null +++ b/.cursor/agent/玩值移动端工程师/evolution/2026-04-27-三端迁移完成度会议.md @@ -0,0 +1,3 @@ +# 玩值移动端工程师 经验 - 2026-04-27 + +- 会议结论:`new/wz-app` 为 C 端真源、主能力已接;**路由映射 / build / 对照表硬验收** 为持续工作,与「新栈已承接迁移」并行表述。 diff --git a/.cursor/agent/玩值移动端工程师/evolution/索引.md b/.cursor/agent/玩值移动端工程师/evolution/索引.md index de34263..13efe12 100644 --- a/.cursor/agent/玩值移动端工程师/evolution/索引.md +++ b/.cursor/agent/玩值移动端工程师/evolution/索引.md @@ -2,6 +2,7 @@ | 日期 | 主题 | |------|------| +| 2026-04-27 | [三端迁移完成度会议](2026-04-27-三端迁移完成度会议.md) | | 2026-04-24 | [全项目会议与主次线](2026-04-24-全项目会议与主次线.md) | | 2026-04-24 | [wz-app 占位补齐与 wz-api 对接](2026-04-24-wz-app占位补齐与wz-api对接.md) | | 2026-04-23 | [全屏直播与点卡商城](2026-04-23-全屏直播与点卡商城.md) | diff --git a/.cursor/agent/玩值管理端工程师/evolution/2026-04-27-三端迁移完成度会议.md b/.cursor/agent/玩值管理端工程师/evolution/2026-04-27-三端迁移完成度会议.md new file mode 100644 index 0000000..0eadf88 --- /dev/null +++ b/.cursor/agent/玩值管理端工程师/evolution/2026-04-27-三端迁移完成度会议.md @@ -0,0 +1,3 @@ +# 玩值管理端工程师 经验 - 2026-04-27 + +- 会议结论:wz-admin **骨架与主域**已迁;**大屏 view**(地图、实时区、投资卡等)及与 playhub 字段对齐为 **ongoing**,不属「主迁移未完成」的否定项。 diff --git a/.cursor/agent/玩值管理端工程师/evolution/索引.md b/.cursor/agent/玩值管理端工程师/evolution/索引.md index 0e87da7..79658a2 100644 --- a/.cursor/agent/玩值管理端工程师/evolution/索引.md +++ b/.cursor/agent/玩值管理端工程师/evolution/索引.md @@ -2,6 +2,7 @@ | 日期 | 主题 | |------|------| +| 2026-04-27 | [三端迁移完成度会议](2026-04-27-三端迁移完成度会议.md) | | 2026-04-24 | [收官计划-点卡订单管理页](2026-04-24-收官计划-点卡订单管理页.md) | | 2026-04-24 | [全项目会议与运营可管](2026-04-24-全项目会议与运营可管.md) | | 2026-04-23 | [直播房间详情联调](2026-04-23-直播房间详情联调.md) | diff --git a/.cursor/meeting/2026-04-27_三端迁移完成度与文档同步.md b/.cursor/meeting/2026-04-27_三端迁移完成度与文档同步.md new file mode 100644 index 0000000..ef282ba --- /dev/null +++ b/.cursor/meeting/2026-04-27_三端迁移完成度与文档同步.md @@ -0,0 +1,92 @@ +# 会议纪要 - 2026-04-27 | 三端迁移完成度与开发文档同步 + +> 本文件由**助理橙子**在会议结束后生成。主持人:乘风(老板分身)。 + +--- + +## 基本信息 + +- **时间**:2026-04-27 15:30 +- **议题**:玩值 wz-api / wz-admin / new/wz-app 三端相对 `old/` 的迁移是否算「完成」;与开发文档真源(进度看板、三端对齐清单)同步结论 +- **触发方式**:开个会议,并更新开发文档 +- **参与角色**:产品经理、玩值 API 工程师、玩值管理端工程师、玩值移动端工程师、测试人员、助理橙子 + +--- + +## 各角色发言 + +### 【产品经理】 + +迁移的验收口径应是「P0 主链可演示、管理端对 P0 域可运营、接口在对照表可追溯」,而非与 old 逐像素/逐接口 100% 复刻。当前真源为 `new/wz-*` + `new/wz-app`;`old` 仅对照漏项。结论:**主线交付已在新三端**,**全量业务域等清单矩阵逐项勾齐**仍属持续迭代,不宜宣称「已 100% 迁完所有域」。 + +### 【玩值 API 工程师】 + +`new/wz-api` 已落地文档约定分组:`/api/admin/wz/*`、`/api/app/*`、`/api/screen/*` 等;P0 相关(健康、点卡、订单、直播房间等)已在对照表登记。Soul 历史路由与 stub 仍并存。结论:**核心迁移与契约已建立**,**非 P0/遗留路径** 仍可能随产品迭代补登记。 + +### 【玩值管理端工程师】 + +`new/wz-admin` 侧栏、各业务域页、默认联调 wz-api 已通;大屏 `view` 仍有大屏地图、实时区、投资卡等可继续从 `old/app/admin/screen` 对照迁入的项;资源列表与详情链与 playhub 字段对齐是持续工作。结论:**管理端「骨架 + 主域」已迁**,**大屏完整度与域内精细对齐** 为进行中。 + +### 【玩值移动端工程师】 + +`new/wz-app` 为玩值 C 端唯一新功能真源;路由、`mall`/直播等主能力已接 wz-api。与 [迁移-wz-app路由映射.md]、`npm run build`、JWT/空错态与对照表验收仍在迭代。结论:**C 端主线已在新栈**,**与 old 的逐项对齐 + 构建与契约硬验收** 未宣称完结。 + +### 【测试人员】 + +回归应以「三端清单矩阵 + 对照表已实现行」为范围;未登记或未实现的接口不作「已迁移」认定。缺自动化全覆盖时,以联调记录与 P0 脚本(如 `scripts/test/wz-playhub-p0.md`)为主。 + +--- + +## 讨论过程 + +- **【乘风】定调**:用户问「三端是否迁移完成」在工程上应拆成两问:(1)**是否已从 old 迁出新三端并承接新需求**——是;(2)**是否已无遗漏、与 old 全量一致**——否,以看板/清单「进行中」与会议 P1/P2 为准。 +- **【产品经理】回复【技术】**:对外表述建议用「**新三端主链已迁移并持续对齐**」,避免「已全部完成」引发验收误解。 + +--- + +## 会议决议 + +1. **迁移状态表述(对外/对内真源)**:玩值 **wz-api、wz-admin、new/wz-app 三端已完成从 old 到新栈的「主迁移」**——新功能**仅**在 `new/` 交付;**不等同于**所有业务域、所有 old 管理端子页与大屏细节均已 1:1 复刻完成。 +2. **文档同步**:`开发文档/玩值/进度-看板.md`、`三端对齐项目清单.md` 的「最后更新」与会议注同步至 2026-04-27;本纪要索引入 `.cursor/meeting/README.md`。 +3. **待持续项**(不阻塞「主迁移」认定):大屏 view 增量、各页字段与 playhub 对齐、C 端路由映射与 build 硬验收、对照表未实现行——按 2026-04-24 纪要 P1/P2 与清单迭代。 + +--- + +## 待办事项 + +| 责任角色 | 任务 | 优先级 | 截止建议 | +|---------|------|--------|----------| +| 玩值管理端工程师 | 大屏 view 可选项(Leaflet、real-time、investor-card)按 old 对照增量 | 中 | 随 P1 排期 | +| 玩值移动端工程师 | 路由映射 + `npm run build` + 对照表闭环验收 | 中 | 持续 | +| 玩值 API 工程师 | 对照表未实现行随域关闭 | 中 | 持续 | +| 测试人员 | P0 回归与清单矩阵抽检 | 中 | 发版前 | +| 开发助理 | 看板/清单/本纪要/项目索引玩值 同步 | 高 | 2026-04-27 | + +--- + +## 问题与作答区 + +| # | 问题 | 责任角色 | 作答 | +|---|------|---------|------| +| 1 | 「迁移完成」是否需要在对外文案中显式区分「主链可上线」与「全域 1:1」? | 产品经理 | (可补充定稿句) | +| 2 | 大屏若长期与 old 并存双部署,是否单独写清部署说明? | 玩值管理端工程师 | (待补充) | + +--- + +## 各角色经验与业务理解更新 + +### 产品经理 + +- 「三端迁移完成」宜拆为架构迁移完成 vs 全量域对齐完成,避免一次词两种理解。 + +### 玩值 API / 管理端 / 移动端 + +- 见各自 `agent/玩值*工程师/evolution/2026-04-27-三端迁移完成度会议.md` 及团队 evolution。 + +### 团队共享 + +- 已写入 `.cursor/agent/团队/evolution/2026-04-27-三端迁移完成度会议.md`。 + +--- + +*会议纪要由助理橙子生成 | 索引与开发文档已按决议更新。* diff --git a/.cursor/meeting/README.md b/.cursor/meeting/README.md index 7a12319..ed5c907 100644 --- a/.cursor/meeting/README.md +++ b/.cursor/meeting/README.md @@ -58,6 +58,7 @@ YYYY-MM-DD_会议主题.md | 日期 | 主题 | 参与角色 | 文件 | |------|------|---------|------| +| 2026-04-27 | 玩值三端迁移完成度与开发文档同步(主迁移完成 / 全量对齐 ongoing) | 产品、玩值 API、管理端、移动端、测试、橙子 | [2026-04-27_三端迁移完成度与文档同步.md](2026-04-27_三端迁移完成度与文档同步.md) | | 2026-04-24 | 玩值全项目进度、三端缺口与收官排期(乘风主持,P0/P1/P2) | 产品、玩值 API、管理端、移动端、测试、橙子 | [2026-04-24_玩值全项目进度与三端缺口.md](2026-04-24_玩值全项目进度与三端缺口.md) | | 2026-04-23 | 玩值三端:直播 + 点卡 接口与功能打通 | 玩值 API、管理端、移动端、产品 | [2026-04-23_玩值三端直播点卡打通.md](2026-04-23_玩值三端直播点卡打通.md) | | 2026-02-27 | 开发进度同步会议 | 产品、后端、管理端、小程序 | [2026-02-27_开发进度同步会议.md](2026-02-27_开发进度同步会议.md) | diff --git a/.cursor/skills/assistant-doc-sync/sync-log.md b/.cursor/skills/assistant-doc-sync/sync-log.md index 2939bc0..a623623 100644 --- a/.cursor/skills/assistant-doc-sync/sync-log.md +++ b/.cursor/skills/assistant-doc-sync/sync-log.md @@ -6,6 +6,10 @@ --- +## 2026-04-27 + +- 玩值三端迁移完成度会议:纪要 `meeting/2026-04-27_三端迁移完成度与文档同步.md`;`开发文档/玩值/进度-看板.md`、`三端对齐项目清单.md`、`2026-04-27-日志.md`;项目索引玩值、meeting README、团队+玩值三角色+开发助理 evolution;**结论**:新三端主迁移完成,与 old 全矩阵 1:1 为持续对齐 + ## 2026-04-24 - **玩值交付真源**:用户决议「以后只在 `new/` 完成功能,`old` 仅对照」;已更新 `wanzhi-project-boundary`、`soul-project-boundary`、`wz-app-dev`、`change-checklist`、老板分身经验规则、`智能体-技能-经验总索引`、看板/三端清单/对照表头、`new/wz-app/README`、项目索引玩值;本行 diff --git a/new/wz-app/dist/index.html b/new/wz-app/dist/index.html index ba9cea7..35d9293 100644 --- a/new/wz-app/dist/index.html +++ b/new/wz-app/dist/index.html @@ -11,8 +11,8 @@ rel="stylesheet" /> 玩值电竞 - WanZhi Esports - - + +
diff --git a/new/wz-app/src/api/live.ts b/new/wz-app/src/api/live.ts index 5e42267..9f6f932 100644 --- a/new/wz-app/src/api/live.ts +++ b/new/wz-app/src/api/live.ts @@ -5,6 +5,7 @@ export type LiveRoomDTO = { title?: string status?: string pullPlaybackUrl?: string + /** wz-api playhub 返回;无 room 时前端显示 — */ viewerCount?: number } | null diff --git a/new/wz-app/src/pages/LivePage.tsx b/new/wz-app/src/pages/LivePage.tsx index d4c814c..37899ce 100644 --- a/new/wz-app/src/pages/LivePage.tsx +++ b/new/wz-app/src/pages/LivePage.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useState } from "react" import { Link, useParams } from "react-router-dom" -import { ArrowLeft, Gift, Loader2, Send } from "lucide-react" +import { ArrowLeft, Gift, Loader2, Send, Users, Share2 } from "lucide-react" import { toast } from "@/hooks/use-toast" import { getLiveContext, @@ -18,6 +18,12 @@ function pickStr(v: unknown): string { return typeof v === "string" ? v : "" } +function formatViewerCount(n: number): string { + if (!Number.isFinite(n) || n < 0) return "0" + if (n >= 10000) return `${(n / 10000).toFixed(1)}w` + return String(Math.floor(n)) +} + export function LivePage() { const { streamerId = "" } = useParams<{ streamerId: string }>() const valid = HEX24.test(streamerId) @@ -100,10 +106,22 @@ export function LivePage() { } } + const onShare = () => { + const url = typeof window !== "undefined" ? window.location.href : "" + if (navigator.share && url) { + void navigator.share({ title: "直播间", url }).catch(() => {}) + } else if (url) { + void navigator.clipboard.writeText(url).then( + () => toast({ title: "链接已复制" }), + () => toast({ title: "复制失败", variant: "destructive" }), + ) + } + } + if (!valid) { return (
- + 返回 @@ -115,25 +133,41 @@ export function LivePage() { const streamer = ctx?.streamer const name = pickStr(streamer?.name) || "主播" const title = pickStr(streamer?.title) || pickStr((ctx?.room as { title?: string } | null)?.title) || "直播间" - const pull = pickStr((ctx?.room as { pullPlaybackUrl?: string } | null)?.pullPlaybackUrl) + const room = ctx?.room as { pullPlaybackUrl?: string; status?: string; viewerCount?: number } | null | undefined + const pull = pickStr(room?.pullPlaybackUrl) const cover = pickStr(streamer?.coverImage) || pickStr(streamer?.avatar) || "/placeholder.svg" - const isLive = Boolean(streamer?.isLive) || pickStr((ctx?.room as { status?: string } | null)?.status) === "live" + const isLive = Boolean(streamer?.isLive) || pickStr(room?.status) === "live" + const rawViewer = room && typeof room.viewerCount === "number" ? room.viewerCount : null return (
-
- +
+

{name}

{title}

+
+ + + {rawViewer === null ? "—" : formatViewerCount(rawViewer)} + +
{isLive ? ( LIVE ) : ( 未开播 )} +
@@ -158,13 +192,24 @@ export function LivePage() {

评论

{comments.length === 0 ?

暂无评论,来说两句~

: null} - {comments.map((c) => ( -
- {c.userName || "用户"} - Lv.{c.level} - {c.content} -
- ))} + {comments.map((c) => { + const isGift = c.type === "gift" + const isEnter = c.type === "enter" + return ( +
+ {isGift ? 🎁 : null} + {isEnter ? 进入 : null} + {c.userName || "用户"} + Lv.{c.level} + {c.content} +
+ ) + })}
diff --git a/开发文档/玩值/2026-04-27-日志.md b/开发文档/玩值/2026-04-27-日志.md new file mode 100644 index 0000000..06f83c1 --- /dev/null +++ b/开发文档/玩值/2026-04-27-日志.md @@ -0,0 +1,4 @@ +# 2026-04-27 + +- **三端迁移完成度会议**:纪要 `.cursor/meeting/2026-04-27_三端迁移完成度与文档同步.md`;结论——新三端 **主迁移完成**,全域矩阵与大屏细项 **持续对齐**;已同步 `进度-看板.md`、`三端对齐项目清单.md`、项目索引玩值、团队/玩值 evolution。 +- **C 端直播详情补齐**:`new/wz-app` `LivePage` 增加观众数(`room.viewerCount`)、礼物/进场评论样式、分享或复制链接、返回改为 `/live`;`迁移-wz-app路由映射.md` 更新 `/live/[id]` 行;`npm run build` 通过。 diff --git a/开发文档/玩值/三端对齐项目清单.md b/开发文档/玩值/三端对齐项目清单.md index 0a2220a..b7fcef0 100644 --- a/开发文档/玩值/三端对齐项目清单.md +++ b/开发文档/玩值/三端对齐项目清单.md @@ -1,6 +1,6 @@ # 玩值三端对齐项目清单 -最后更新:2026-04-24 +最后更新:2026-04-27 本文档与 [迁移-API对照表.md](迁移-API对照表.md)(接口级)、[进度-看板.md](进度-看板.md)(状态级)配套:**按业务域**列出 **wz-api / wz-admin / 玩值 C 端(`new/wz-app`,Vite+React)** 是否交付。**`old/app`(Next)仅作对照**,用于核对是否漏页/漏接口,**不**作为新功能真源。勾选与备注在联调时更新。 @@ -75,5 +75,6 @@ ## 会议与排期(真源外注) +- **2026-04-27**:三端「是否迁移完成」结论(纪要:`.cursor/meeting/2026-04-27_三端迁移完成度与文档同步.md`)——**新三端主迁移完成**;**全矩阵逐项「对齐」** 仍本清单 + 对照表 + 看板 **ongoing**,不以单次会议宣称全部打勾。 - **2026-04-24**:玩值全项目会议(纪要:仓库根 `.cursor/meeting/2026-04-24_玩值全项目进度与三端缺口.md`)明确 **P0** 须达到「C 能演示、Admin 对 P0 可运营、接口在对照表可追溯」;**主线 C** 为 `old/app`,**次线** `new/wz-app` 不单独扩张与主线重复能力;P1/P2 与「问题与作答区」以纪要为准。 - **2026-04-24 实施**:纪要好四问已作答;wz-api `GET /api/public/build-info` 增加可选 **`gitCommit`**(`GIT_COMMIT`);wz-admin 增加 **点卡订单** 路由与侧栏;评论持久化/支付本阶段 **不纳入**(见纪要)。 diff --git a/开发文档/玩值/迁移-wz-app路由映射.md b/开发文档/玩值/迁移-wz-app路由映射.md index 7503672..37beab6 100644 --- a/开发文档/玩值/迁移-wz-app路由映射.md +++ b/开发文档/玩值/迁移-wz-app路由映射.md @@ -1,6 +1,6 @@ # 玩值 C 端路由映射(`old` 为真源,uni 为历史对照) -最后更新:2026-04-22 +最后更新:2026-04-27 **真源(主线)**:**`old/app/`** 下 Next `app/**/page.tsx` 路由(H5/SSR 主交付;玩值业务对接 **`new/wz-api`** 的 `/api/app/*`)。在 **`old/.env.local`** 中配置 `NEXT_PUBLIC_WZ_API_BASE` 后,`AppProvider` 与登录流可走 wz-api JWT;未配置时仍可走 Next 本地 `/api/*`(Mongo BFF,双轨期)。 @@ -31,7 +31,7 @@ | `/pitch-deck` | `subpkgs/stack/pitch-deck/index` | — | **已实现**(路演骨架 + 客服) | | `/events/today` | `subpkgs/stack/events-today/index` | — | **已实现**(卡片布局对齐 old + 横幅 `/static/events-today.jpg` + 跳转公会详情) | | `/live` | `subpkgs/stack/live/index` | 56+ | **已实现**(暗色列表 + `getStreamers`) | -| `/live/[id]` | `subpkgs/stack/live-detail/index` | 56+ | 占位 / 迭代中;`onLoad` 读 `id` | +| `/live/[id]` | `subpkgs/stack/live-detail/index` | 56+ | **Vite `LivePage`**(`/live/:streamerId`):wz-api context + 评论轮询 + 礼物;顶栏含观众数 / 分享 / 返回 `/live` | | `/cp` | `subpkgs/stack/cp/index` | — | **已实现**(列表示例 → 详情) | | `/cp/[id]` | `subpkgs/stack/cp-detail/index` | — | **已实现**;`onLoad` 读 `id` | | `/coupons` | `subpkgs/stack/coupons/index` | — | **已实现**(示例券 + 去商城) | diff --git a/开发文档/玩值/进度-看板.md b/开发文档/玩值/进度-看板.md index 387089a..7cbd95f 100644 --- a/开发文档/玩值/进度-看板.md +++ b/开发文档/玩值/进度-看板.md @@ -1,6 +1,6 @@ # 玩值迁移进度看板 -最后更新:2026-04-24(**决议**:玩值新功能 **仅在 `new/`** 交付;`old/` 对照漏项) +最后更新:2026-04-27(**决议**:新三端 **主迁移已完成**、新功能 **仅在 `new/`** 交付;**全量域/大屏细节** 与 old 1:1 为持续对齐,见 [三端对齐项目清单](三端对齐项目清单.md) 与 `meeting/2026-04-27_三端迁移完成度与文档同步.md`) ## wz-api(`new/wz-api`) @@ -22,7 +22,7 @@ | 状态 | 项 | |------|-----| | 已完成 | 路由见 **`new/wz-app/src/App.tsx`**;点卡 `src/api/mall.ts` + `MallPointsPage` 等;直播 `src/api/live.ts` + `LivePage`;`/screen` 只读 dashboard;主播工作台/观众洞察、旅程埋点等见代码与 `README.md` | -| 进行中 | 与 [迁移-wz-app路由映射.md](迁移-wz-app路由映射.md) 对齐并 **`npm run build`**;与 wz-api 契约、空错态、JWT 按 [迁移-API对照表](迁移-API对照表.md) 验收 | +| 进行中 | 与 [迁移-wz-app路由映射.md](迁移-wz-app路由映射.md) 对齐并 **`npm run build`**;与 wz-api 契约、空错态、JWT 按 [迁移-API对照表](迁移-API对照表.md) 验收;**直播详情** 持续与 old 体验对齐(2026-04-27:观众数、礼物/进场样式、分享) | | 环境 | **`VITE_WZ_API_BASE`**(无尾 `/`)+ Vite 代理;请求 **`src/lib/request.ts`** | ## `old/app`(Next,**仅对照,不扩新功能**) @@ -34,6 +34,7 @@ ## 会议与冲刺(真源外注) +- **2026-04-27**:三端迁移完成度会议(纪见 `.cursor/meeting/2026-04-27_三端迁移完成度与文档同步.md`)**结论**:**wz-api / wz-admin / new/wz-app 主链与契约层面的迁移可视为完成**;大屏 view 细项、全业务域与 old 逐域对齐、C 端硬验收为**进行中**——不宜对外简称「与 old 100% 无差别迁完」。 - **2026-04-24**:全项目会议(纪见 `.cursor/meeting/2026-04-24_玩值全项目进度与三端缺口.md`)定义 **P0**=点卡+订单+直播主链+认证/用户态;**P1**=管理端 P0 域「运营可管」、旅程/事件与字段对齐等;**P2**=评论/大屏 view 等依立项。**后续决议**:玩值 **新功能仅在 `new/wz-*` + `new/wz-app`**;`old` 仅对照。 ## 阻塞项