项目详情页打标状态轮询改为1秒刷新

This commit is contained in:
wkc
2026-03-19 17:41:18 +08:00
parent f858fbdcbc
commit 99f96e101e
4 changed files with 262 additions and 27 deletions

View File

@@ -0,0 +1,67 @@
# 项目详情打标状态轮询前端实施计划
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 在项目详情页中,当项目状态为“打标中”时自动轮询项目详情接口,并在状态变化后及时刷新页面展示。
**Architecture:** 轮询逻辑收敛到项目详情父组件 `detail.vue`,由父组件统一维护 1 秒轮询定时器、请求节流与销毁清理,子组件继续只消费 `projectInfo.projectStatus`。这样可以保证详情页各子标签页共享同一份最新项目状态,并在状态脱离“打标中”后自动停止轮询。
**Tech Stack:** Vue 2、Element UI、现有 `@/api/ccdiProject` 接口层、Node `assert` 单测脚本
---
### Task 1: 补充失败单测
**Files:**
- Create: `ruoyi-ui/tests/unit/project-detail-tagging-polling.test.js`
- Test: `ruoyi-ui/tests/unit/project-detail-tagging-polling.test.js`
- [ ] **Step 1: 编写失败单测**
校验 `detail.vue` 已具备:
- 轮询定时器状态字段
- 仅在 `projectStatus === "3"` 时启动轮询
- 状态变更后停止轮询
- 组件销毁时清理轮询
- [ ] **Step 2: 运行单测确认失败**
Run: `node ruoyi-ui/tests/unit/project-detail-tagging-polling.test.js`
Expected: FAIL提示缺少详情页打标状态轮询逻辑
### Task 2: 在详情页实现最短路径轮询
**Files:**
- Modify: `ruoyi-ui/src/views/ccdiProject/detail.vue`
- [ ] **Step 1: 增加轮询状态字段与清理逻辑**
新增页级定时器、轮询间隔、请求中的互斥标记,并在组件销毁前统一关闭定时器。
- [ ] **Step 2: 在项目详情加载后按状态启停轮询**
首次加载和手动刷新项目详情后,根据接口返回的 `projectStatus` 判断:
- 状态为 `3` 时启动轮询
- 状态不是 `3` 时关闭轮询
- [ ] **Step 3: 轮询期间复用项目详情接口更新页面**
轮询调用 `getProject(projectId)`,更新 `projectInfo`、页面标题和状态标签;如果状态已不再是 `3`,则立即停止轮询。
- [ ] **Step 4: 处理路由切换与重复启动**
切换 `projectId`、离开页面或重复进入轮询分支时,确保不会叠加多个定时器,也不会在已有请求未结束时并发重复请求。
### Task 3: 回归验证与记录
**Files:**
- Modify: `docs/reports/implementation/2026-03-19-project-detail-tagging-status-polling-record.md`
- [ ] **Step 1: 运行相关单测**
Run: `node ruoyi-ui/tests/unit/project-detail-tagging-polling.test.js`
Expected: PASS
- [ ] **Step 2: 补充实施记录**
记录本次修改内容、测试命令和验证结论,便于后续追踪。