# 项目详情打标状态轮询实施记录

## 修改背景

项目详情页需要在项目状态为“打标中”时自动轮询项目状态，保证页面头部状态标签及依赖该状态的子页面禁用逻辑能够及时刷新。

## 本次修改

### 1. 详情页增加页级项目状态轮询

- 文件：`ruoyi-ui/src/views/ccdiProject/detail.vue`
- 变更点：
  - 新增 `projectStatusPollingTimer`、`projectStatusPollingInterval`、`projectStatusPollingLoading`
  - 抽取 `fetchProjectDetail` 统一项目详情请求与数据归一化
  - 新增 `syncProjectStatusPolling`、`startProjectStatusPolling`、`stopProjectStatusPolling`、`pollProjectStatus`
  - 在项目状态为 `3`（打标中）时按 1 秒间隔启动轮询
  - 在状态脱离 `3`、路由切换或组件销毁时关闭轮询

### 2. 补充轮询回归单测

- 文件：`ruoyi-ui/tests/unit/project-detail-tagging-polling.test.js`
- 校验点：
  - 详情页存在轮询定时器字段
  - 销毁前清理轮询
  - 按 `projectStatus === "3"` 启停轮询
  - 轮询请求后状态变化会停止轮询

### 3. 补充实施计划

- 文件：`docs/plans/frontend/2026-03-19-project-detail-tagging-status-polling-frontend-implementation.md`

## 验证记录

### 单测

```bash
node ruoyi-ui/tests/unit/project-detail-tagging-polling.test.js
node ruoyi-ui/tests/unit/upload-data-disabled-cards.test.js
```

结果：
- `project-detail-tagging-polling test passed`
- `upload-data-disabled-cards test passed`

### 构建验证

```bash
cd ruoyi-ui && npm run build:prod
```

结果：
- 构建成功，退出码 `0`
- 存在既有产物体积告警，但不影响本次功能构建通过

## 工作区说明

- 当前工作区存在未由本次任务引入的改动：`.DS_Store`、`ry.sh`
- 本次提交时应忽略 `.DS_Store`，并避免将无关文件纳入暂存区
