feat: add dashboard metrics service

This commit is contained in:
QiuSW
2026-07-09 01:04:50 +08:00
parent 769c861eb0
commit 2c31a41036
17 changed files with 494 additions and 22 deletions
+4 -6
View File
@@ -17,7 +17,7 @@ main.go
├─ AuditLogService # 已实现审计日志边界
├─ AppLogService # 已实现运行日志边界
├─ ImageOptimizationService # 已实现本地模拟任务模型
└─ MetricsService # 目标模块
└─ MetricsService # 已实现 P0 统计聚合
frontend/src
├─ router
@@ -43,6 +43,7 @@ frontend/src
- `internal/services/ocr_service.go`:当前 OCR 存量示例,后续可演进为图片 AI 能力的一部分。
- `internal/services/image_optimization_service.go`:负责商品图片 AI 优化任务、结果和本地模拟 provider。
- `internal/services/log_service.go`:负责审计日志和运行日志的记录、查询和共享写入 helper。
- `internal/services/metrics_service.go`:负责 P0 统计指标和趋势聚合。
- `platform/`:隔离 Windows / macOS 热键和系统能力差异。
已实现边界:
@@ -52,10 +53,7 @@ frontend/src
- `ImageOptimizationService`:商品图片 AI 优化任务模型和本地模拟任务创建已可用。
- `AuditLogService`:审计日志记录和查询已可用,登录、设置变更和图片任务创建会写审计日志。
- `AppLogService`:运行日志记录和查询已可用,图片任务创建失败和服务错误会写运行日志。
目标新增边界:
- `MetricsService`:对业务任务和日志做基础聚合,输出统计卡片和趋势数据。
- `MetricsService`:P0 统计指标和最近 N 天趋势已可查询,当前直接聚合 `image_tasks` 和 `audit_logs`。
服务之间不要互相绕过边界直接操作平台实现。新增平台能力时,优先放在 `platform/`,再由 `internal/services/` 暴露稳定方法。
@@ -198,7 +196,7 @@ app_logs(
)
```
当前 `audit_logs` 和 `app_logs` 分别用于用户动作审计和运行排错。统计数据早期直接用 SQL 聚合,不急着落 `daily_metrics` 缓存表。数据量变大后再增加缓存表。
当前 `audit_logs` 和 `app_logs` 分别用于用户动作审计和运行排错。`MetricsService` 已直接用 SQL 聚合 P0 指标,不急着落 `daily_metrics` 缓存表。数据量变大后再增加缓存表。
迁移要求:
+1 -1
View File
@@ -39,7 +39,7 @@
| --- | --- | --- | --- | --- |
| T-020 | 建立商品图片 AI 优化任务模型 | T-013 | `image_tasks`、`image_task_results` 迁移和基础测试通过;可创建模拟任务 | DONE |
| T-021 | 实现审计日志与运行日志边界 | T-013 | 审计日志和运行日志分开;登录、设置变更、任务创建、任务失败可记录 | DONE |
| T-022 | 实现 P0 数据统计 | T-020 | 今日处理图片数、成功率、平均耗时、失败数、今日操作日志数、7 天趋势可查询 | TODO |
| T-022 | 实现 P0 数据统计 | T-020 | 今日处理图片数、成功率、平均耗时、失败数、今日操作日志数、7 天趋势可查询 | DONE |
| T-023 | 实现商品图片 AI 优化页面 | T-020 | 上传/选择图片、任务列表、状态、结果预览、失败提示路径可用 | TODO |
## Phase 3 · 组件、质量与发布
+6 -4
View File
@@ -123,16 +123,18 @@
运行日志用于排错,可以记录错误详情和模块名。
当前已接入图片任务创建失败和服务内部错误路径。
## 目标新增服务
### MetricsService
目标方法:
文件:`internal/services/metrics_service.go`
- `GetDashboardMetrics() (DashboardMetrics, error)`:返回今日处理图片数、成功率、平均耗时、失败数、今日操作日志数。
- `GetProcessingTrend(days int) ([]DailyMetric, error)`:返回最近 N 天处理趋势。
统计早期直接基于 `image_tasks`、`image_task_results`、`audit_logs` 聚合。
约束:
- 统计按本机本地自然日计算,查询时转换为 UTC 字符串匹配现有 `created_at`。
- `days <= 0` 时默认 7 天,最大 30 天。
- 当前直接基于 `image_tasks` 和 `audit_logs` 聚合,不新增统计缓存表。
## 前端绑定
+14 -3
View File
@@ -6,7 +6,7 @@
项目处于可复用桌面应用模板的 Phase 1 基础模块建设阶段。目标已经从迁移后的基础工程调整为“Windows-first、可扩展到其他平台的桌面端应用模板”。
当前代码已从迁移后的 Wails/Vue/SQLite 基线推进到主应用路由骨架、登录 provider 边界、统一设置 schema、主窗口状态恢复、商品图片 AI 优化任务模型和日志服务边界阶段,已具备设置、多语言、主题、本地配置、热键、托盘、OCR 示例、模板级模块入口、本地登录能力、本地模拟图片优化任务能力、审计日志和运行日志记录查询能力。数据统计仍是骨架页面,尚未接入真实后端服务和统计聚合。
当前代码已从迁移后的 Wails/Vue/SQLite 基线推进到主应用路由骨架、登录 provider 边界、统一设置 schema、主窗口状态恢复、商品图片 AI 优化任务模型、日志服务边界和 P0 数据统计阶段,已具备设置、多语言、主题、本地配置、热键、托盘、OCR 示例、模板级模块入口、本地登录能力、本地模拟图片优化任务能力、审计日志、运行日志和 P0 统计查询能力。统计页面仍是骨架,尚未展示真实统计数据。
## 已确认事实
@@ -42,6 +42,7 @@
- 已实现 `image_tasks` 和 `image_task_results` 表,模拟任务可写入成功状态、耗时、输出路径和前后文件大小。
- 已实现 AuditLogService:`Record`、`List`,登录、设置变更和图片任务创建会写入 `audit_logs`。
- 已实现 AppLogService:`Record`、`List`,图片任务创建失败和服务内部错误会写入 `app_logs`。
- 已实现 MetricsService:`GetDashboardMetrics`、`GetProcessingTrend`,可查询今日处理量、成功率、平均耗时、失败数、今日审计日志数和最近 N 天趋势。
## 当前命令
@@ -76,7 +77,7 @@ wails3 build
- 模板范围容易膨胀,必须按任务小步实现。
- Wails v3 alpha 版本需要保持 CLI、Go 模块和前端 runtime 匹配。
- 真实后端登录 provider、真实 AI provider 和统计模块尚未实现,当前仍是后续任务。
- 真实后端登录 provider、真实 AI provider 尚未实现;统计页面展示仍待后续扩展。
- OCR 和热键依赖平台实现,跨平台修改需要分别验证。
- 当前前端以构建检查为主,暂未引入专门的前端单元测试。
- bindings 生成依赖本机安装的 `wails3`。
@@ -181,9 +182,19 @@ wails3 build
- 已重新生成 Wails `.js` bindings。
- `go test ./...`、`npm run build`、`go build -o bin\cmbone.exe .` 和 `cmd /c build.bat` 通过。
同日完成 P0 数据统计服务:
- 新增 `internal/models/metrics.go` 和 `internal/services/metrics_service.go`。
- 新增 `DashboardMetrics` 和 `DailyMetric` 绑定模型。
- `MetricsService.GetDashboardMetrics` 可查询今日处理图片数、成功率、平均耗时、失败任务数和今日审计日志数。
- `MetricsService.GetProcessingTrend` 可查询最近 N 天处理趋势,默认 7 天,最多 30 天。
- SQLite 迁移新增 `image_tasks(created_at)` 和 `audit_logs(created_at)` 查询索引。
- 已重新生成 Wails `.js` bindings,新增 `metricsservice.js`。
- `go test ./...`、`npm run build`、`go build -o bin\cmbone.exe .` 和 `cmd /c build.bat` 通过。
## 下一步
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-022`:实现 P0 数据统计。
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-023`:实现商品图片 AI 优化页面。
## 当前 blocker
+9 -1
View File
@@ -56,6 +56,14 @@
| `frontend/bindings/cmbone/internal/services/auditlogservice.js` | Wails binding | 前端调用审计日志服务的生成绑定 |
| `frontend/bindings/cmbone/internal/services/applogservice.js` | Wails binding | 前端调用运行日志服务的生成绑定 |
## 数据统计
| 文件 | 方法 / 内容 | 说明 |
| --- | --- | --- |
| `internal/services/metrics_service.go` | `MetricsService` | 查询 P0 统计卡片和最近 N 天处理趋势 |
| `internal/models/metrics.go` | `DashboardMetrics` / `DailyMetric` | 统计服务绑定模型 |
| `frontend/bindings/cmbone/internal/services/metricsservice.js` | Wails binding | 前端调用统计服务的生成绑定 |
## 目标模板模块
| 模块 | 目标服务 | 说明 |
@@ -64,7 +72,7 @@
| 审计日志 | `AuditLogService` | 已实现记录和查询;登录、设置变更、图片任务创建已接入 |
| 运行日志 | `AppLogService` | 已实现记录和查询;图片任务失败和服务错误已接入 |
| 商品图片 AI 优化 | `ImageOptimizationService` | 已实现本地模拟任务模型;页面闭环待 `T-023` |
| 数据统计 | `MetricsService` | 聚合今日处理量、成功率、耗时、失败数和 7 天趋势 |
| 数据统计 | `MetricsService` | 已实现后端聚合;统计页面展示待后续扩展 |
## 热键
+3 -4
View File
@@ -6,7 +6,7 @@
| --- | --- | --- |
| 项目结构 | B | 已从模板整理为普通工程,目录职责基本清楚 |
| 产品定位 | B | 已校准为 Windows-first 可复用桌面应用模板,后续需要代码落地 |
| 后端服务 | B+ | 现有服务边界清晰,登录 provider 和设置 schema 已落地,日志、统计和业务样例服务尚未实现 |
| 后端服务 | B+ | 现有服务边界清晰,登录 provider、设置 schema、日志、统计和业务样例服务已落地,真实 provider 和页面闭环仍需推进 |
| 本地存储 | B | SQLite 初始化和基础测试已存在,目标新增表需要迁移和测试 |
| 前端结构 | B+ | Vue 组件按功能拆分,窗口、布局策略和目标路由骨架已落地,设置页已接入后端 schema |
| 构建验证 | B | Go 测试、前端构建、后端编译可运行 |
@@ -17,7 +17,7 @@
- 模板范围膨胀:登录、设置、业务、日志、统计和组件示例都要做,但必须小步交付。
- Wails v3 alpha 版本兼容性风险。
- bindings 与 Go 服务签名不一致的运行时风险。
- 登录 provider、AI provider、日志和统计如果没有边界,会导致后续替换困难。
- 真实后端登录 provider 和真实 AI provider 尚未接入,当前仍是本地演示能力。
- 热键、托盘、OCR 等平台能力在 Windows 以外行为不完全一致。
- 前端缺少专门单元测试,主要依赖构建和人工 smoke。
@@ -45,6 +45,5 @@
## 改进方向
- 搭建登录、Dashboard、图片优化、日志、统计、设置、组件示例等目标路由骨架。
- 为登录、日志、图片任务和统计新增服务、模型、迁移和测试。
- 为商品图片 AI 优化样例补充真实页面闭环。
- 为商品图片 AI 优化样例和统计模块补充真实页面闭环。
- 为 Wails bindings 生成流程补充完整操作说明。
+2 -2
View File
@@ -13,7 +13,7 @@
| `#/dashboard` | `frontend/src/modules/dashboard/DashboardPage.vue` | 主窗口 | 工作台,展示 P0 指标和近期任务入口 |
| `#/image-optimizer` | `frontend/src/modules/image-optimizer/ImageOptimizerPage.vue` | 主窗口 | 商品图片 AI 优化业务样例骨架 |
| `#/logs` | `frontend/src/modules/logs/LogsPage.vue` | 主窗口 | 审计日志和运行日志统一入口骨架 |
| `#/statistics` | `frontend/src/modules/statistics/StatisticsPage.vue` | 主窗口 | 第一批统计指标和趋势骨架 |
| `#/statistics` | `frontend/src/modules/statistics/StatisticsPage.vue` | 主窗口 | 第一批统计指标和趋势入口;后端 `MetricsService` 已可查询 |
| `#/settings` | `frontend/src/modules/settings/SettingsPage.vue` | 主窗口 | 设置中心,复用存量设置组件并展示统一设置 schema |
| `#/components` | `frontend/src/modules/components-demo/ComponentsDemoPage.vue` | 主窗口 | 常用输入、选择、文本域、表格、筛选和状态标签示例 |
| `#/second` | `frontend/src/pages/Home/Index.vue` | 第二窗口 | 当前 OCR 示例和轻量快捷功能 |
@@ -28,7 +28,7 @@
| `#/login` | 登录页 | 已接入本地固定账号登录;真实后端登录待后续接入 |
| `#/image-optimizer` | 商品图片 AI 优化 | 后端任务模型已接入;`T-023` 接入页面任务列表、状态、结果和失败原因 |
| `#/logs` | 操作日志 | 后端审计日志和运行日志服务已接入;页面列表待后续扩展 |
| `#/statistics` | 数据统计 | `T-022` 接入趋势、成功率、耗时和失败任务 |
| `#/statistics` | 数据统计 | 后端 `MetricsService` 已接入趋势、成功率、耗时和失败任务;页面展示待后续扩展 |
| `#/settings` | 设置中心 | 已接入统一设置 schema,窗口配置已用于主窗口尺寸恢复 |
| `#/components` | 组件示例 | `T-030` 扩充输入框、多选框、下拉框、多行文本、表格、筛选、分页 |