feat: add audit and app log services
This commit is contained in:
@@ -14,8 +14,8 @@ main.go
|
||||
├─ SystemInfo
|
||||
├─ OCRService # 当前存量示例
|
||||
├─ AuthService # 已实现 provider 边界
|
||||
├─ AuditLogService # 目标模块
|
||||
├─ AppLogService # 目标模块
|
||||
├─ AuditLogService # 已实现审计日志边界
|
||||
├─ AppLogService # 已实现运行日志边界
|
||||
├─ ImageOptimizationService # 已实现本地模拟任务模型
|
||||
└─ MetricsService # 目标模块
|
||||
|
||||
@@ -42,6 +42,7 @@ frontend/src
|
||||
- `internal/services/hotkey_service.go`:负责热键读取、更新和重新注册。
|
||||
- `internal/services/ocr_service.go`:当前 OCR 存量示例,后续可演进为图片 AI 能力的一部分。
|
||||
- `internal/services/image_optimization_service.go`:负责商品图片 AI 优化任务、结果和本地模拟 provider。
|
||||
- `internal/services/log_service.go`:负责审计日志和运行日志的记录、查询和共享写入 helper。
|
||||
- `platform/`:隔离 Windows / macOS 热键和系统能力差异。
|
||||
|
||||
已实现边界:
|
||||
@@ -49,11 +50,11 @@ frontend/src
|
||||
- `AuthService`:登录、退出、会话读取;内部通过 `AuthProvider` 接入本地固定账号或真实后端。当前 `LocalAuthProvider` 可用,`RemoteAuthProvider` 保留边界并返回未配置错误。
|
||||
- `AppConfigService`:通过统一设置 schema 初始化和校验主题、语言、窗口行为、快捷键展示、数据目录、日志策略和登录配置。
|
||||
- `ImageOptimizationService`:商品图片 AI 优化任务模型和本地模拟任务创建已可用。
|
||||
- `AuditLogService`:审计日志记录和查询已可用,登录、设置变更和图片任务创建会写审计日志。
|
||||
- `AppLogService`:运行日志记录和查询已可用,图片任务创建失败和服务错误会写运行日志。
|
||||
|
||||
目标新增边界:
|
||||
|
||||
- `AuditLogService`:记录和查询用户操作审计日志。
|
||||
- `AppLogService`:记录和查询运行错误,必要时可落本地滚动日志文件。
|
||||
- `MetricsService`:对业务任务和日志做基础聚合,输出统计卡片和趋势数据。
|
||||
|
||||
服务之间不要互相绕过边界直接操作平台实现。新增平台能力时,优先放在 `platform/`,再由 `internal/services/` 暴露稳定方法。
|
||||
@@ -186,8 +187,6 @@ image_task_results(
|
||||
|
||||
当前 `image_tasks` 和 `image_task_results` 已由 `T-020` 落地,用于本地模拟图片优化任务和后续统计聚合。
|
||||
|
||||
目标新增表:
|
||||
|
||||
```sql
|
||||
app_logs(
|
||||
id INTEGER PRIMARY KEY,
|
||||
@@ -199,7 +198,7 @@ app_logs(
|
||||
)
|
||||
```
|
||||
|
||||
`app_logs` 仍待 `T-021` 落地。统计数据早期直接用 SQL 聚合,不急着落 `daily_metrics` 缓存表。数据量变大后再增加缓存表。
|
||||
当前 `audit_logs` 和 `app_logs` 分别用于用户动作审计和运行排错。统计数据早期直接用 SQL 聚合,不急着落 `daily_metrics` 缓存表。数据量变大后再增加缓存表。
|
||||
|
||||
迁移要求:
|
||||
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@
|
||||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| T-020 | 建立商品图片 AI 优化任务模型 | T-013 | `image_tasks`、`image_task_results` 迁移和基础测试通过;可创建模拟任务 | DONE |
|
||||
| T-021 | 实现审计日志与运行日志边界 | T-013 | 审计日志和运行日志分开;登录、设置变更、任务创建、任务失败可记录 | TODO |
|
||||
| T-021 | 实现审计日志与运行日志边界 | T-013 | 审计日志和运行日志分开;登录、设置变更、任务创建、任务失败可记录 | DONE |
|
||||
| T-022 | 实现 P0 数据统计 | T-020 | 今日处理图片数、成功率、平均耗时、失败数、今日操作日志数、7 天趋势可查询 | TODO |
|
||||
| T-023 | 实现商品图片 AI 优化页面 | T-020 | 上传/选择图片、任务列表、状态、结果预览、失败提示路径可用 | TODO |
|
||||
|
||||
|
||||
+12
-8
@@ -99,27 +99,31 @@
|
||||
- 任务主表为 `image_tasks`,结果表为 `image_task_results`。
|
||||
- 模拟任务会生成成功状态、耗时、输出路径和前后文件大小字段,供后续页面和统计模块使用。
|
||||
|
||||
## 目标新增服务
|
||||
|
||||
### AuditLogService
|
||||
|
||||
目标方法:
|
||||
文件:`internal/services/log_service.go`
|
||||
|
||||
- `Record(action string, targetType string, targetID string, detail string) error`:记录审计事件。
|
||||
- `List(filter AuditLogFilter) ([]AuditLog, error)`:分页查询审计日志。
|
||||
- `Export(filter AuditLogFilter) (string, error)`:导出审计日志文件。
|
||||
- `List(filter models.AuditLogFilter) ([]models.AuditLog, error)`:分页查询审计日志。
|
||||
|
||||
约束:
|
||||
|
||||
审计日志记录用户动作,不记录系统堆栈。
|
||||
当前已接入登录、设置变更和图片任务创建。
|
||||
|
||||
### AppLogService
|
||||
|
||||
目标方法:
|
||||
文件:`internal/services/log_service.go`
|
||||
|
||||
- `Record(level string, module string, message string, detail string) error`:记录运行日志。
|
||||
- `List(filter AppLogFilter) ([]AppLog, error)`:分页查询运行日志。
|
||||
- `Export(filter AppLogFilter) (string, error)`:导出运行日志文件。
|
||||
- `List(filter models.AppLogFilter) ([]models.AppLog, error)`:分页查询运行日志。
|
||||
|
||||
约束:
|
||||
|
||||
运行日志用于排错,可以记录错误详情和模块名。
|
||||
当前已接入图片任务创建失败和服务内部错误路径。
|
||||
|
||||
## 目标新增服务
|
||||
|
||||
### MetricsService
|
||||
|
||||
|
||||
+16
-3
@@ -6,7 +6,7 @@
|
||||
|
||||
项目处于可复用桌面应用模板的 Phase 1 基础模块建设阶段。目标已经从迁移后的基础工程调整为“Windows-first、可扩展到其他平台的桌面端应用模板”。
|
||||
|
||||
当前代码已从迁移后的 Wails/Vue/SQLite 基线推进到主应用路由骨架、登录 provider 边界、统一设置 schema、主窗口状态恢复和商品图片 AI 优化任务模型阶段,已具备设置、多语言、主题、本地配置、热键、托盘、OCR 示例、模板级模块入口、本地登录能力和本地模拟图片优化任务能力。完整审计日志查询、运行日志和数据统计仍是骨架页面,尚未接入真实后端服务和业务数据模型。
|
||||
当前代码已从迁移后的 Wails/Vue/SQLite 基线推进到主应用路由骨架、登录 provider 边界、统一设置 schema、主窗口状态恢复、商品图片 AI 优化任务模型和日志服务边界阶段,已具备设置、多语言、主题、本地配置、热键、托盘、OCR 示例、模板级模块入口、本地登录能力、本地模拟图片优化任务能力、审计日志和运行日志记录查询能力。数据统计仍是骨架页面,尚未接入真实后端服务和统计聚合。
|
||||
|
||||
## 已确认事实
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
- 已实现主窗口状态持久化:主窗口普通尺寸和最大化状态会写回 `appconfig`,下次启动恢复;第二窗口不参与该逻辑。
|
||||
- 已实现 ImageOptimizationService:`CreateTask`、`ListTasks`、`GetTask`、`CancelTask`,当前 provider 为本地模拟实现。
|
||||
- 已实现 `image_tasks` 和 `image_task_results` 表,模拟任务可写入成功状态、耗时、输出路径和前后文件大小。
|
||||
- 已实现 AuditLogService:`Record`、`List`,登录、设置变更和图片任务创建会写入 `audit_logs`。
|
||||
- 已实现 AppLogService:`Record`、`List`,图片任务创建失败和服务内部错误会写入 `app_logs`。
|
||||
|
||||
## 当前命令
|
||||
|
||||
@@ -74,7 +76,7 @@ wails3 build
|
||||
|
||||
- 模板范围容易膨胀,必须按任务小步实现。
|
||||
- Wails v3 alpha 版本需要保持 CLI、Go 模块和前端 runtime 匹配。
|
||||
- 真实后端登录 provider、真实 AI provider、完整日志查询和统计模块尚未实现,当前仍是后续任务。
|
||||
- 真实后端登录 provider、真实 AI provider 和统计模块尚未实现,当前仍是后续任务。
|
||||
- OCR 和热键依赖平台实现,跨平台修改需要分别验证。
|
||||
- 当前前端以构建检查为主,暂未引入专门的前端单元测试。
|
||||
- bindings 生成依赖本机安装的 `wails3`。
|
||||
@@ -168,9 +170,20 @@ wails3 build
|
||||
- 已重新生成 Wails `.js` bindings。
|
||||
- `go test ./...`、`npm run build`、`go build -o bin\cmbone.exe .` 和 `cmd /c build.bat` 通过。
|
||||
|
||||
同日完成审计日志与运行日志边界:
|
||||
|
||||
- 新增 `internal/models/log.go` 和 `internal/services/log_service.go`。
|
||||
- 新增 `app_logs` 迁移和日志查询索引。
|
||||
- 新增 `AuditLogService.Record/List` 和 `AppLogService.Record/List`。
|
||||
- 登录审计改为复用统一审计写入 helper。
|
||||
- `AppConfigService.SetAppConfig` 会记录用户配置变更审计,自动窗口状态保存不会写审计。
|
||||
- `ImageOptimizationService.CreateTask` 会记录任务创建审计,创建失败和服务错误会写运行日志。
|
||||
- 已重新生成 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-021`:实现审计日志与运行日志边界。
|
||||
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-022`:实现 P0 数据统计。
|
||||
|
||||
## 当前 blocker
|
||||
|
||||
|
||||
+12
-2
@@ -46,13 +46,23 @@
|
||||
| `internal/models/image_task.go` | `ImageTask` / `ImageTaskResult` / `ImageTaskDetail` | 图片优化任务绑定模型 |
|
||||
| `frontend/bindings/cmbone/internal/services/imageoptimizationservice.js` | Wails binding | 前端调用图片优化任务服务的生成绑定 |
|
||||
|
||||
## 日志
|
||||
|
||||
| 文件 | 方法 / 内容 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `internal/services/log_service.go` | `AuditLogService` | 记录和查询用户动作审计日志 |
|
||||
| `internal/services/log_service.go` | `AppLogService` | 记录和查询运行排错日志 |
|
||||
| `internal/models/log.go` | `AuditLogFilter` / `AppLog` / `AppLogFilter` | 日志查询绑定模型 |
|
||||
| `frontend/bindings/cmbone/internal/services/auditlogservice.js` | Wails binding | 前端调用审计日志服务的生成绑定 |
|
||||
| `frontend/bindings/cmbone/internal/services/applogservice.js` | Wails binding | 前端调用运行日志服务的生成绑定 |
|
||||
|
||||
## 目标模板模块
|
||||
|
||||
| 模块 | 目标服务 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| 登录 | `AuthService` | 已实现本地固定账号 provider,真实后端 provider 保留边界 |
|
||||
| 审计日志 | `AuditLogService` | 记录登录、设置变更、任务操作、导出等用户动作 |
|
||||
| 运行日志 | `AppLogService` | 记录 AI 调用、数据库、文件、热键等错误 |
|
||||
| 审计日志 | `AuditLogService` | 已实现记录和查询;登录、设置变更、图片任务创建已接入 |
|
||||
| 运行日志 | `AppLogService` | 已实现记录和查询;图片任务失败和服务错误已接入 |
|
||||
| 商品图片 AI 优化 | `ImageOptimizationService` | 已实现本地模拟任务模型;页面闭环待 `T-023` |
|
||||
| 数据统计 | `MetricsService` | 聚合今日处理量、成功率、耗时、失败数和 7 天趋势 |
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@
|
||||
| --- | --- | --- |
|
||||
| `#/login` | 登录页 | 已接入本地固定账号登录;真实后端登录待后续接入 |
|
||||
| `#/image-optimizer` | 商品图片 AI 优化 | 后端任务模型已接入;`T-023` 接入页面任务列表、状态、结果和失败原因 |
|
||||
| `#/logs` | 操作日志 | `T-021` 接入审计日志和运行日志查询 |
|
||||
| `#/logs` | 操作日志 | 后端审计日志和运行日志服务已接入;页面列表待后续扩展 |
|
||||
| `#/statistics` | 数据统计 | `T-022` 接入趋势、成功率、耗时和失败任务 |
|
||||
| `#/settings` | 设置中心 | 已接入统一设置 schema,窗口配置已用于主窗口尺寸恢复 |
|
||||
| `#/components` | 组件示例 | `T-030` 扩充输入框、多选框、下拉框、多行文本、表格、筛选、分页 |
|
||||
|
||||
Reference in New Issue
Block a user