feat: add image optimization task model

This commit is contained in:
QiuSW
2026-07-09 00:47:35 +08:00
parent 7942add8b6
commit 3bd05b316e
16 changed files with 827 additions and 34 deletions
+19 -16
View File
@@ -16,7 +16,7 @@ main.go
├─ AuthService # 已实现 provider 边界
├─ AuditLogService # 目标模块
├─ AppLogService # 目标模块
├─ ImageOptimizationService # 目标业务样例
├─ ImageOptimizationService # 已实现本地模拟任务模型
└─ MetricsService # 目标模块
frontend/src
@@ -41,18 +41,19 @@ frontend/src
- `internal/services/settings_schema.go`:集中定义设置模块 schema、默认值、选项和初始化 SQL。
- `internal/services/hotkey_service.go`:负责热键读取、更新和重新注册。
- `internal/services/ocr_service.go`:当前 OCR 存量示例,后续可演进为图片 AI 能力的一部分。
- `internal/services/image_optimization_service.go`:负责商品图片 AI 优化任务、结果和本地模拟 provider。
- `platform/`:隔离 Windows / macOS 热键和系统能力差异。
已实现边界:
- `AuthService`:登录、退出、会话读取;内部通过 `AuthProvider` 接入本地固定账号或真实后端。当前 `LocalAuthProvider` 可用,`RemoteAuthProvider` 保留边界并返回未配置错误。
- `AppConfigService`:通过统一设置 schema 初始化和校验主题、语言、窗口行为、快捷键展示、数据目录、日志策略和登录配置。
- `ImageOptimizationService`:商品图片 AI 优化任务模型和本地模拟任务创建已可用。
目标新增边界:
- `AuditLogService`:记录和查询用户操作审计日志。
- `AppLogService`:记录和查询运行错误,必要时可落本地滚动日志文件。
- `ImageOptimizationService`:商品图片 AI 优化任务的创建、状态、结果和失败原因。
- `MetricsService`:对业务任务和日志做基础聚合,输出统计卡片和趋势数据。
服务之间不要互相绕过边界直接操作平台实现。新增平台能力时,优先放在 `platform/`,再由 `internal/services/` 暴露稳定方法。
@@ -159,19 +160,6 @@ audit_logs(
)
```
目标新增表:
```sql
app_logs(
id INTEGER PRIMARY KEY,
level TEXT,
module TEXT,
message TEXT,
detail TEXT,
created_at DATETIME
)
```
```sql
image_tasks(
id INTEGER PRIMARY KEY,
@@ -196,7 +184,22 @@ image_task_results(
)
```
统计数据早期直接用 SQL 聚合,不急着落 `daily_metrics` 缓存表。数据量变大后再增加缓存表。
当前 `image_tasks` 和 `image_task_results` 已由 `T-020` 落地,用于本地模拟图片优化任务和后续统计聚合。
目标新增表:
```sql
app_logs(
id INTEGER PRIMARY KEY,
level TEXT,
module TEXT,
message TEXT,
detail TEXT,
created_at DATETIME
)
```
`app_logs` 仍待 `T-021` 落地。统计数据早期直接用 SQL 聚合,不急着落 `daily_metrics` 缓存表。数据量变大后再增加缓存表。
迁移要求:
+1 -1
View File
@@ -37,7 +37,7 @@
| ID | 任务 | 依赖 | 验收要点 | 状态 |
| --- | --- | --- | --- | --- |
| T-020 | 建立商品图片 AI 优化任务模型 | T-013 | `image_tasks`、`image_task_results` 迁移和基础测试通过;可创建模拟任务 | TODO |
| T-020 | 建立商品图片 AI 优化任务模型 | T-013 | `image_tasks`、`image_task_results` 迁移和基础测试通过;可创建模拟任务 | DONE |
| T-021 | 实现审计日志与运行日志边界 | T-013 | 审计日志和运行日志分开;登录、设置变更、任务创建、任务失败可记录 | TODO |
| T-022 | 实现 P0 数据统计 | T-020 | 今日处理图片数、成功率、平均耗时、失败数、今日操作日志数、7 天趋势可查询 | TODO |
| T-023 | 实现商品图片 AI 优化页面 | T-020 | 上传/选择图片、任务列表、状态、结果预览、失败提示路径可用 | TODO |
+15 -11
View File
@@ -84,6 +84,21 @@
- `RemoteAuthProvider` 用于真实后端登录,目前保留边界并返回未配置错误。
- 登录成功、失败和退出必须写审计日志。
### ImageOptimizationService
文件:`internal/services/image_optimization_service.go`
- `CreateTask(input models.ImageTaskInput) (models.ImageTaskDetail, error)`:创建本地模拟图片优化任务,并写入任务和结果。
- `ListTasks(filter models.ImageTaskFilter) ([]models.ImageTask, error)`:按状态、操作类型分页查询任务。
- `GetTask(id int64) (models.ImageTaskDetail, error)`:查询任务和结果详情。
- `CancelTask(id int64) error`:取消待处理或处理中任务;当前模拟任务会立即成功,通常不可取消。
约束:
- 当前 provider 是本地模拟实现,不调用真实 AI 后端。
- 任务主表为 `image_tasks`,结果表为 `image_task_results`。
- 模拟任务会生成成功状态、耗时、输出路径和前后文件大小字段,供后续页面和统计模块使用。
## 目标新增服务
### AuditLogService
@@ -106,17 +121,6 @@
运行日志用于排错,可以记录错误详情和模块名。
### ImageOptimizationService
目标方法:
- `CreateTask(input ImageTaskInput) (ImageTask, error)`:创建图片优化任务。
- `ListTasks(filter ImageTaskFilter) ([]ImageTask, error)`:查询任务列表。
- `GetTask(id int64) (ImageTaskDetail, error)`:查询任务详情和结果。
- `CancelTask(id int64) error`:取消待处理或处理中任务。
MVP 可以先用本地模拟 provider,后续再接真实 AI 后端。
### MetricsService
目标方法:
+14 -3
View File
@@ -6,7 +6,7 @@
项目处于可复用桌面应用模板的 Phase 1 基础模块建设阶段。目标已经从迁移后的基础工程调整为“Windows-first、可扩展到其他平台的桌面端应用模板”。
当前代码已从迁移后的 Wails/Vue/SQLite 基线推进到主应用路由骨架、登录 provider 边界、统一设置 schema 和主窗口状态恢复阶段,已具备设置、多语言、主题、本地配置、热键、托盘、OCR 示例、模板级模块入口和本地登录能力。商品图片 AI 优化、完整审计日志查询、运行日志和数据统计仍是骨架页面,尚未接入真实后端服务和业务数据模型。
当前代码已从迁移后的 Wails/Vue/SQLite 基线推进到主应用路由骨架、登录 provider 边界、统一设置 schema、主窗口状态恢复和商品图片 AI 优化任务模型阶段,已具备设置、多语言、主题、本地配置、热键、托盘、OCR 示例、模板级模块入口、本地登录能力和本地模拟图片优化任务能力。完整审计日志查询、运行日志和数据统计仍是骨架页面,尚未接入真实后端服务和业务数据模型。
## 已确认事实
@@ -38,6 +38,8 @@
- 已实现统一设置 schema:主题、语言、窗口行为、快捷键展示、数据目录、日志策略和登录 provider 配置都有默认值、说明和基础校验。
- 已实现设置页 schema 展示:`/#/settings` 可读取后端 `GetSettingsSchema` 并展示分组、当前值、默认值、说明和只读标记。
- 已实现主窗口状态持久化:主窗口普通尺寸和最大化状态会写回 `appconfig`,下次启动恢复;第二窗口不参与该逻辑。
- 已实现 ImageOptimizationService:`CreateTask`、`ListTasks`、`GetTask`、`CancelTask`,当前 provider 为本地模拟实现。
- 已实现 `image_tasks` 和 `image_task_results` 表,模拟任务可写入成功状态、耗时、输出路径和前后文件大小。
## 当前命令
@@ -72,7 +74,7 @@ wails3 build
- 模板范围容易膨胀,必须按任务小步实现。
- Wails v3 alpha 版本需要保持 CLI、Go 模块和前端 runtime 匹配。
- 真实后端登录 provider、AI provider、完整日志查询和统计模块尚未实现,当前仍是后续任务。
- 真实后端登录 provider、真实 AI provider、完整日志查询和统计模块尚未实现,当前仍是后续任务。
- OCR 和热键依赖平台实现,跨平台修改需要分别验证。
- 当前前端以构建检查为主,暂未引入专门的前端单元测试。
- bindings 生成依赖本机安装的 `wails3`。
@@ -157,9 +159,18 @@ wails3 build
- 第二窗口仍保持固定 `340x320` 小窗,不注册尺寸恢复逻辑。
- `go test ./...`、`npm run build`、`go build -o bin\cmbone.exe .` 和 `cmd /c build.bat` 通过。
同日完成商品图片 AI 优化任务模型:
- 新增 `internal/models/image_task.go` 和 `internal/services/image_optimization_service.go`。
- 新增 `image_tasks`、`image_task_results` 迁移和索引。
- 新增 `ImageOptimizationService.CreateTask/ListTasks/GetTask/CancelTask`。
- 当前 `CreateTask` 使用本地模拟 provider,创建成功任务和结果记录。
- 已重新生成 Wails `.js` bindings。
- `go test ./...`、`npm run build`、`go build -o bin\cmbone.exe .` 和 `cmd /c build.bat` 通过。
## 下一步
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-020`:建立商品图片 AI 优化任务模型。
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-021`:实现审计日志与运行日志边界。
## 当前 blocker
+9 -1
View File
@@ -38,6 +38,14 @@
| `internal/models/auth.go` | `AuthSession` / `AuthProviderOption` | 前端绑定模型 |
| `frontend/src/modules/auth/LoginPage.vue` | 登录页 | 调用后端 AuthService,不写死账号密码 |
## 图片优化任务
| 文件 | 方法 / 内容 | 说明 |
| --- | --- | --- |
| `internal/services/image_optimization_service.go` | `ImageOptimizationService` | 创建本地模拟图片优化任务、查询任务和结果 |
| `internal/models/image_task.go` | `ImageTask` / `ImageTaskResult` / `ImageTaskDetail` | 图片优化任务绑定模型 |
| `frontend/bindings/cmbone/internal/services/imageoptimizationservice.js` | Wails binding | 前端调用图片优化任务服务的生成绑定 |
## 目标模板模块
| 模块 | 目标服务 | 说明 |
@@ -45,7 +53,7 @@
| 登录 | `AuthService` | 已实现本地固定账号 provider,真实后端 provider 保留边界 |
| 审计日志 | `AuditLogService` | 记录登录、设置变更、任务操作、导出等用户动作 |
| 运行日志 | `AppLogService` | 记录 AI 调用、数据库、文件、热键等错误 |
| 商品图片 AI 优化 | `ImageOptimizationService` | 创建任务、查询状态、查看结果和失败原因 |
| 商品图片 AI 优化 | `ImageOptimizationService` | 已实现本地模拟任务模型;页面闭环待 `T-023` |
| 数据统计 | `MetricsService` | 聚合今日处理量、成功率、耗时、失败数和 7 天趋势 |
## 热键
+1 -1
View File
@@ -26,7 +26,7 @@
| 路由 | 页面 | 职责 |
| --- | --- | --- |
| `#/login` | 登录页 | 已接入本地固定账号登录;真实后端登录待后续接入 |
| `#/image-optimizer` | 商品图片 AI 优化 | `T-020` / `T-023` 接入任务模型、任务列表、状态、结果和失败原因 |
| `#/image-optimizer` | 商品图片 AI 优化 | 后端任务模型已接入;`T-023` 接入页面任务列表、状态、结果和失败原因 |
| `#/logs` | 操作日志 | `T-021` 接入审计日志和运行日志查询 |
| `#/statistics` | 数据统计 | `T-022` 接入趋势、成功率、耗时和失败任务 |
| `#/settings` | 设置中心 | 已接入统一设置 schema,窗口配置已用于主窗口尺寸恢复 |