docs: 更新架构文档、版本日志、TODO清单 (0.0.20)
- ARCHITECTURE.md: 新增任务轮询/文件上传/提交防抖/主动刷新定时器/失败分级五节,更新 hooks 目录结构,日期→06-12 - CHANGELOG.md: 新增 0.0.20 版本条目 - TODO.md: 标记公告接入/任务轮询为已完成,新增任务CSV导出/上传端点确认待办 - CLAUDE.md 保持不动(按规则不修改)
This commit is contained in:
38
CHANGELOG.md
38
CHANGELOG.md
@@ -3,6 +3,44 @@
|
||||
> 每次发版前修改此文件,`npm run build:win` 打包后会自动读取生成 update-info.json。
|
||||
---
|
||||
|
||||
## 0.0.20(2026-06-12)
|
||||
|
||||
**任务状态轮询 + Token 刷新容错增强 + 提交防抖 + 文件上传 Hook**
|
||||
|
||||
### 任务状态轮询
|
||||
|
||||
- 新增 `useTaskPolling` hook:批量轮询非终态任务状态,递归 `setTimeout` + `next_poll_ms` 自适应间隔
|
||||
- `TaskHistory` 集成批量轮询,`OutputPreview` 改为监听终态转换(Context 桥接)触发 `refetch()`,消除重复请求
|
||||
- `POLLING_STATUSES` 统一管理非终态状态,所有轮询逻辑引用此常量
|
||||
- `batchTaskStatus` 使用 GET + 逗号拼接 `task_ids=a,b,c`,修复 axios 默认 bracket 序列化
|
||||
|
||||
### Token 刷新容错增强
|
||||
|
||||
- **主动刷新**:JWT `exp` 解码驱动定时器,在 75% 过期点通过 `setTimeout` 提前续期
|
||||
- **失败分级**:`refreshHandler` 永久失败(refresh_token 过期)→ **throw** → 清 token 弹登录;临时失败(网络超时)→ **return null** → 仅拒绝当前请求不登出
|
||||
- 新增 `RefreshTokenExpiredError` 类区分失败类型
|
||||
- `AppProvider` 登录/自动登录/退出 启停主动刷新定时器
|
||||
|
||||
### 提交按钮防抖
|
||||
|
||||
- 两级防护:2s 节流防抖("你点击的太快了")+ 二次确认弹窗("您已提交,确认要再次提交吗?")
|
||||
- `doSubmit` 抽取为 `useCallback`,`handleSubmit` 负责门控
|
||||
- 修复 `useAsyncMutation.execute` 返回值判空(原 `try/catch` 为死代码)
|
||||
|
||||
### 文件上传 Hook
|
||||
|
||||
- 新增 `useFileUpload` hook:封装 `request.upload()` 为 antd Upload 兼容 `customRequest`,复用全局拦截器
|
||||
- `ImageInput` / `ImageListInput` / `AudioListInput` 集成 `customRequest`
|
||||
- `uploadValidation.beforeUpload` 返回值修正:`false` → `true`(校验通过后放行至 `customRequest`)
|
||||
|
||||
### 其他
|
||||
|
||||
- `AnnouncementDrawer` 接入公告 API + `EnumResolver`
|
||||
- billing / announcement / banner 服务模块完善
|
||||
- 文档:ARCHITECTURE.md 新增轮询/Token刷新/上传/防抖章节
|
||||
|
||||
---
|
||||
|
||||
## 0.0.19(2026-06-11)
|
||||
|
||||
**数据获取架构重构 + Mac 指纹采集 + Token 刷新容错 + 账单页面**
|
||||
|
||||
Reference in New Issue
Block a user