# P6→NS1/RNS1 缺失项 #1：任务卡片 5 种状态的视觉规范

## 简要结论
- 状态：⚠️ 部分解决
- 风险等级：🟠 中
- 前端已实现 3 种状态（待处理/已置顶/已放弃）的视觉差异，但缺少「已完成」和「过期」两种独立状态的视觉规范。

## 详细审查

### 审查范围
- `apps/miniprogram/miniprogram/utils/vi-colors.ts` — TASK_STATUS_COLORS
- `apps/miniprogram/miniprogram/utils/task-config.ts` — TASK_STATUS_CONFIG
- `apps/miniprogram/miniprogram/pages/task-list/task-list.wxml` — 卡片模板
- `apps/miniprogram/miniprogram/pages/task-list/task-list.wxss` — 卡片样式
- `apps/miniprogram/miniprogram/pages/task-list/task-list.ts` — 分组逻辑

### 发现

**已实现的 3 种状态：**

1. **待处理（normal/pending）**：白色卡片，左侧彩条按任务类型着色（红/橙/粉/青），正常文字颜色
2. **已置顶（pinned）**：在待处理基础上增加金色光晕阴影（`box-shadow: 0 5rpx 7rpx rgba(245,158,11,0.12), 0 0 0 8rpx rgba(245,158,11,0.08)`）
3. **已放弃（abandoned）**：左侧彩条变灰（`--status-abandoned-border`），整卡透明度降低（`opacity: 0.55`），标签灰化，文字变灰

**缺失的 2 种状态：**

4. **已完成（completed）**：`task-config.ts` 的 `TASK_STATUS_CONFIG` 中无 `completed` 键；`vi-colors.ts` 的 `TASK_STATUS_COLORS` 中无 `completed` 定义；WXML 中无 `task-card--completed` 类
5. **过期（expired）**：无独立的过期卡片状态样式。过期目前仅通过 `deadline` 字段在卡片内显示红色逾期徽章（`overdue-badge`），但卡片整体样式不变

### 证据

`vi-colors.ts` 第 4 节仅定义了两种状态：
```typescript
export const TASK_STATUS_COLORS = {
  pinned: { name: '置顶', glowColor: '#f59e0b', ... },
  abandoned: { name: '放弃', borderColor: '#d1d5db', textColor: '#9ca3af', opacity: 0.55 },
}
```

`task-config.ts` 仅定义了三种状态：
```typescript
export const TASK_STATUS_CONFIG = {
  normal: { label: '进行中', icon: '📋' },
  pinned: { label: '已置顶', icon: '📌' },
  abandoned: { label: '已放弃', icon: '❌' },
}
```

### 建议（如未完全解决）
1. 在 `TASK_STATUS_COLORS` 和 `TASK_STATUS_CONFIG` 中补充 `completed` 和 `expired` 状态定义
2. 已完成状态建议：绿色勾选图标 + 轻微灰化（opacity 0.7-0.8），左侧彩条保留但降低饱和度
3. 过期状态建议：红色边框或红色背景提示，与逾期徽章配合使用
4. 注意：后端 `get_task_list_v2` 按 status 筛选（pending/completed/abandoned），前端目前仅请求 pending 状态，completed 列表页尚未实现
