Files
company-celebration/联调测试方案.md
empty 30cd29d45d feat: add Admin Control Panel, voting status check, and router security
Admin Control Panel:
- Add full AdminControl.vue with 3 sections (Voting, Lottery, Global)
- Add AdminLogin.vue with access code gate (20268888)
- Add admin.ts store with state persistence
- Add admin.types.ts with state machine types
- Add router guards for /admin/director-console

Voting System Fixes:
- Add voting status check before accepting votes (VOTING_CLOSED error)
- Fix client to display server error messages
- Fix button disabled logic to prevent ambiguity in paused state
- Auto-generate userId on connect to fix UNAUTHORIZED error

Big Screen Enhancements:
- Add LiveVotingView.vue with particle system
- Add LotteryMachine.ts with 3-stage animation (Galaxy/Storm/Reveal)
- Add useSocketClient.ts composable
- Fix MainDisplay.vue SCSS syntax error
- Add admin state sync listener in display store

Server Updates:
- Add admin.service.ts for state management
- Add isVotingOpen() and getVotingStatus() methods
- Add admin socket event handlers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 15:34:37 +08:00

110 lines
6.3 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.
# 年会互动大屏系统 - 联调测试方案 (Integration Test Plan)
| 项目名称 | 年会互动大屏系统 (马年国潮版) | 版本号 | V1.0 |
| :--- | :--- | :--- | :--- |
| 文档状态 | **执行中** | 负责人 | 技术总监 |
| 涉及端 | 移动端 H5、大屏端 Web、导播台 Admin、服务端 Node | 更新日期 | 2026-01-15 |
---
## 1. 测试目标与范围
本次联调旨在验证各子系统间的**数据流转**、**实时通信**及**视觉同步**是否符合预期。重点关注 150 人并发场景下的稳定性及“操作-反馈”的延迟体验。
### 核心联调链路
1. **投票链路**:手机端盖戳 -> Socket 传输 -> Redis 原子计数 -> 大屏粒子特效生成。
2. **抽奖链路**:导播台控制 -> 状态机切换 -> 算法筛选 -> 大屏三阶段动效展示。
3. **管理链路**:名单导入 -> 数据清洗 -> 实时控制 -> 紧急重置。
---
## 2. 环境准备 (Pre-requisites)
### 2.1 硬件环境
* **大屏幕端**:高性能 PC (建议独立显卡),连接 LED 大屏(或 1080P+ 显示器)。
* **导播台**:操作员笔记本电脑 (Chrome 浏览器)。
* **用户端**:准备至少 5 台不同型号的手机 (含 iOS/Android, 高端/低端机型)。
### 2.2 网络环境
* **局域网 (LAN)**:大屏 PC 必须连接有线网络。
* **Wi-Fi/4G**:手机端测试混合网络环境。
* **服务端**Redis 与 Node.js 服务已启动Socket 端口开放。
### 2.3 数据准备
* [ ] 导入测试用员工名单 Excel (含 1960-2005 不同年份出生,含 200 人以上数据)。
* [ ] 配置 7 个测试节目及对应的封面图。
* [ ] 配置 7 个奖项名称 (最佳创意、最佳视觉等)。
---
## 3. 详细测试用例 (Test Cases)
### 3.1 模块 A身份验证与连接
| ID | 测试场景 | 操作步骤 | 预期结果 | 状态 |
| :--- | :--- | :--- | :--- | :--- |
| A01 | 员工扫码登录 | 微信扫码访问首页 | 1. 显示“请输入姓名”<br>2. 提交后进入首页,显示“已连接”绿灯 | ☐ |
| A02 | 导播台登录 | 访问 `/admin/director-console` | 1. 拦截跳转至登录页<br>2. 输入 `20268888` 后进入控制台 | ☐ |
| A03 | 大屏连接 | 访问 `/screen/display-mode` | 1. 全屏显示“马到成功”主视觉<br>2. 左下角“在线人数”实时更新 | ☐ |
### 3.2 模块 B节目投票 (核心交互)
**前置条件**:导播台已开启某节目的“投票通道”。
| ID | 测试场景 | 操作步骤 | 预期结果 | 状态 |
| :--- | :--- | :--- | :--- | :--- |
| B01 | **明信片入场** | 导播开启投票通道 | 手机端节目卡片(明信片)**淡入并上滑**出现,伴随震动提示 | ☐ |
| B02 | **盖戳体验 (乐观UI)** | 拖动/点击底部“最佳创意”印章 | 1. **手机端**:印章手柄下压 -> 震动 -> 留下带有**用户昵称**的红色印迹 (Multiply模式)<br>2. **大屏端**(<1s延迟) 底部飞出一颗金色粒子,击中对应节目,炸开金粉 | ☐ |
| B03 | 重复投票拦截 | 对同一节目投第二张票 | 手机端提示“该节目已评价”,无法盖第二个戳 | ☐ |
| B04 | 撤回/改票 | 点击卡片上已盖的印迹 | 1. 印迹消失,底部印章恢复高亮<br>2. 大屏端该节目热度值回落 (可选,或仅停止增长) | ☐ |
| B05 | **断网投票 (弱网)** | 手机开启飞行模式 -> 盖戳 -> 关闭飞行模式 | 1. 断网时:盖戳动画正常执行 (乐观UI)<br>2. 联网后Socket 自动重连,大屏随后收到粒子动画 | ☐ |
### 3.3 模块 C幸运抽奖 (全流程)
**前置条件**:已导入名单,导播台切换至“幸运抽奖”面板。
| ID | 测试场景 | 操作步骤 | 预期结果 | 状态 |
| :--- | :--- | :--- | :--- | :--- |
| C01 | 筛选逻辑验证 | 导播选择“第四轮 (属马)” | 导播台显示“当前奖池人数X人” (需核对 X 是否等于 Excel 中属马人数 - 已中奖人数) | ☐ |
| C02 | **阶段 1聚气** | 导播点击【准备】 | 大屏进入“星河旋转”状态,仅高亮显示属马员工的名字 | ☐ |
| C03 | **阶段 2风暴** | 导播点击【开始】 | 大屏名字汇聚成“红色风暴”高速旋转,背景音效激昂 | ☐ |
| C04 | **阶段 3揭晓** | 导播点击【停止】 | 1. 风暴炸裂<br>2. 红色卷轴展开<br>3. 弹出中奖者头像与姓名 (防抖动,只弹一次) | ☐ |
| C05 | 去重验证 | 第一轮中奖者张三,在第四轮再次被抽中 | **严重Bug**。系统应确保张三不在第四轮奖池中 (除非配置允许重复) | ☐ |
### 3.4 模块 D全局控制与稳定性
| ID | 测试场景 | 操作步骤 | 预期结果 | 状态 |
| :--- | :--- | :--- | :--- | :--- |
| D01 | 紧急重置 | 导播点击【重置大屏】 | 大屏立即强制刷新,回到待机主页 (用于动效卡死时自救) | ☐ |
| D02 | **高并发压测** | 使用脚本或组织 20 人,每人每秒点击 5 次 | 1. Redis 票数统计准确 (无丢票)<br>2. 大屏 FPS 保持在 30 以上,无崩溃<br>3. Node 服务内存无溢出 | ☐ |
---
## 4. 视觉与体验验收标准 (Design QA)
* **色值检查**
* 主红:`#C21F30` (丹砂红)
* 主金:`#F0C239` (香槟金)
* **明信片质感**
* 背景是否有棉纸纹理噪点?
* "From/To" 是否为手写体且微微倾斜?
* **印章效果**
* 印迹是否使用了 `mix-blend-mode: multiply` (正片叠底)
* 印迹是否有随机旋转角度?
* 印迹中是否包含“当前用户昵称”?
* **大屏特效**
* 粒子背景是否深邃且有层次感 (3D 景深)
* 抽奖名字是否有动态模糊 (Motion Blur)
---
## 5. 故障应急预案 (Emergency Plan)
如果在现场测试或实际活动中出现以下问题,按此方案执行:
1. **大屏白屏/卡死**
* *动作*:导播台点击“重置大屏”;若无效,按 F5 刷新大屏 PC 浏览器。
* *话术*:主持人:“看来我们的系统也被大家的热情冲晕了头脑,正在重启能量场...”
2. **手机端无法投票**
* *动作*:导播台广播“切换为备用通道” (实际上是重启 Socket 服务)。
* *降级*如果网络彻底瘫痪改用“分贝仪”App 测现场欢呼声大小来决定奖项。
3. **抽奖名单出错**
* *动作*:导播台手动输入中奖者 (假装系统抽出),或切换为“全员随机模式”。
---