项目详情页打标状态轮询改为1秒刷新
This commit is contained in:
@@ -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: 补充实施记录**
|
||||
|
||||
记录本次修改内容、测试命令和验证结论,便于后续追踪。
|
||||
Reference in New Issue
Block a user