Files
crawler-plugin/docs/specs/07-records-and-version.md

78 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 07 记录与版本中心
## 模块职责
覆盖历史生成记录、客户端软件版本和数字人版本。该模块必须区分“后台管理版本页面”和“客户端公开更新接口”,前者可重构,后者必须保持兼容。
覆盖页面:
- 历史记录:`history`
- 软件版本:`version`
- 数字人版本:`digital-human-version`
## 依赖关系
上游:菜单树、当前用户、分页/下载适配器。
后端:
- Java `ImageHistoryController`
- Java `SoftwareVersionAdminController``SoftwareVersionService`
- 数字人版本控制器和 `digitalhuman` 模块。
公开版本接口的详细契约见 `09-public-version-compatibility.md`
## 核心接口:原实现 → 目标实现
| 功能 | 原实现 | 目标实现 |
|---|---|---|
| 历史记录 | `admin.js:loadHistory` + `panel-history` | `HistoryPage.vue` + 原 `/api/admin/history` |
| 软件版本列表 | `admin.js:loadSoftwareVersions` + `/api/admin/versions` | `SoftwareVersionsPage.vue` |
| 软件版本上传 | `admin.js` 上传 modal + `/api/admin/version` | Element Plus Upload/Dialog + 原接口 |
| 数字人版本列表 | `admin.js:loadDigitalHumanVersions` | `DigitalHumanVersionsPage.vue` |
| 数字人版本上传/发布 | 旧版本 modal 和按钮 | 页面局部表单,保持原数字人版本 API |
| 客户端检查更新 | Flask `/api/version``/api/version/latest` | Java `PublicVersionController`URL/字段完全不变 |
## 内部结构
```text
RecordsCenter
├── HistoryPage
│ ├── HistoryFilterBar
│ ├── HistoryTable
│ └── ResultPreviewDrawer
├── SoftwareVersionsPage
│ ├── VersionTable
│ └── SoftwareVersionUploadDialog
└── DigitalHumanVersionsPage
├── VersionTable
├── UploadDialog
└── Release/Latest actions
```
## 类型映射
| 原字段 | 目标类型 |
|---|---|
| `type` | `HistoryRecordType` |
| `result_preview` | `PreviewDescriptor`,限制长度和字段 |
| `version` | `VersionString` |
| `file_url` | `PublicDownloadUrl` |
| `created_at` | `DisplayDateTime`,后端格式化或前端统一解析 |
| 数字人状态 | `DigitalHumanVersionStatus` |
公开接口映射:
- `/api/version``version``desc``url`
- `/api/version/latest``version``file_url`
- 不把 `/api/admin/version` 的上传响应当成客户端公开版本响应。
## 迁移/实现注意事项
1. 软件版本管理页面调用 `/api/admin/versions``/api/admin/version`,客户端更新调用 `/api/version/latest`;二者不可混用。
2. 最新版本判断沿用 `web_config.created_at DESC`,若同一时间并列,使用 id 倒序作为稳定次序。
3. 上传成功后页面刷新列表,但不得改变公开接口的空值语义。
4. 版本下载链接是公开客户端资源,页面展示时需要处理超长 URL,不把 URL 写入不必要的日志。
5. 数字人版本与客户端软件版本是不同业务表和 API,不得合并 DTO。
6. 历史记录预览要限制内容大小,避免大 JSON 直接阻塞页面。