docs: align vision with reusable desktop template
This commit is contained in:
@@ -4,7 +4,9 @@
|
||||
|
||||
## 项目定位
|
||||
|
||||
`cmbone` 是从 `SuiDemo` 迁移而来的 Wails v3 本地桌面项目。当前目标不是继续堆功能,而是保持一个简单、清晰、初级程序员可维护的 Wails + Vue + SQLite 应用骨架。
|
||||
`cmbone` 是从 `SuiDemo` 迁移而来的 Wails v3 本地桌面项目。当前目标是打造一个 Windows-first、可扩展到其他平台的可复用桌面应用模板,而不是某个单一业务产品。
|
||||
|
||||
模板要内置常见桌面应用能力:应用壳、设置、登录、主业务模块、操作日志、数据统计和常用业务组件。第一批业务样例使用“电商商品图片 AI 优化”,用来验证模板能否承载真实业务闭环。
|
||||
|
||||
项目当前已具备:
|
||||
|
||||
@@ -13,6 +15,15 @@
|
||||
- 本地 SQLite 配置和热键表。
|
||||
- 托盘菜单、快捷键、OCR 示例窗口。
|
||||
|
||||
目标模块包括:
|
||||
|
||||
- 登录:本地固定账号 provider 和真实后端 provider 两种路径。
|
||||
- 设置:主题、语言、窗口行为、快捷键、数据目录、日志策略。
|
||||
- 主业务:商品图片 AI 优化样例,包括任务、结果、失败反馈。
|
||||
- 操作日志:审计日志和运行日志分开设计。
|
||||
- 数据统计:图片处理量、成功率、耗时、失败数、日志数和 7 天趋势。
|
||||
- 常用组件:输入框、多选框、下拉框、多行文本、表格、筛选和分页示例。
|
||||
|
||||
## 必读顺序
|
||||
|
||||
每次开始工作前,按顺序读取:
|
||||
@@ -27,11 +38,13 @@
|
||||
|
||||
## 工作规则
|
||||
|
||||
- 只做当前任务要求的改动,不夹带重构、依赖升级或产品扩展。
|
||||
- 只做当前任务要求的改动,不夹带重构、依赖升级或无验收标准的产品扩展。
|
||||
- 保持 Go `1.23.0`、Wails `v3.0.0-alpha.9`、`@wailsio/runtime 3.0.0-alpha.66` 的兼容关系;不要直接升级到 latest。
|
||||
- 不提交 `bin/`、`frontend/dist/`、`frontend/node_modules/` 等构建产物或依赖目录。
|
||||
- 后端服务方法变更后,优先使用 `wails3 generate bindings` 重新生成 `frontend/bindings`;如果本机没有 CLI,只允许小范围手动修正并在 `progress.md` 记录原因。
|
||||
- 涉及存储结构时,同步更新 `docs/04-architecture.md`、`docs/api.md`、`docs/current-state.md` 和相关任务验收。
|
||||
- 登录、日志、统计和业务样例必须通过 provider / service 边界接入,不把演示逻辑写死在前端页面里。
|
||||
- 自研组件库不是目标;优先复用 Ant Design Vue,并沉淀项目级组合组件和使用示例。
|
||||
- 提交前至少运行 `go test ./...`、`cd frontend && npm run build`、`go build -o bin/cmbone.exe .`。
|
||||
|
||||
## 风格
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
# cmbone
|
||||
|
||||
基于 SuiDemo 迁移而来的 Wails v3 桌面项目,已从模板仓库整理为可直接维护和构建的普通工程。
|
||||
基于 SuiDemo 迁移而来的 Wails v3 桌面项目,目标是打造一个 Windows-first、可扩展到其他平台的可复用桌面应用模板。
|
||||
|
||||
模板内置方向包括:应用壳、设置、登录、主业务模块、操作日志、数据统计和常用业务组件。第一批业务样例以“电商商品图片 AI 优化”为主,用它验证模板是否能支撑真实业务闭环。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- 后端:Go 1.23.0、Wails v3.0.0-alpha.9、SQLite
|
||||
- 前端:Vue 3、TypeScript、Vite、Tailwind CSS、Ant Design Vue
|
||||
- 功能:多语言、主题切换、本地配置、快捷键、OCR 示例
|
||||
- 当前功能:多语言、主题切换、本地配置、快捷键、OCR 示例
|
||||
- 目标模板模块:登录、设置、主业务、审计日志、运行日志、数据统计、常用组件示例
|
||||
|
||||
## 环境准备
|
||||
|
||||
@@ -62,6 +65,7 @@ wails3 package
|
||||
- 当前依赖按系统 Go 1.23.0 锁定,升级 Go 前不要随意升级 Wails、SQLite 或热键库。
|
||||
- 修改后端服务后,优先使用 `wails3 generate bindings` 重新生成 `frontend/bindings`;如果本机没有 CLI,只做小范围手动绑定。
|
||||
- 提交前至少运行 `go test ./...` 和 `npm run build`。
|
||||
- 模板能力按任务逐步落地,不一次性堆完整平台;优先保证 Windows 10+ 体验和可维护性。
|
||||
|
||||
## Harness Coding 文档
|
||||
|
||||
|
||||
+26
-18
@@ -4,16 +4,16 @@
|
||||
|
||||
## 一句话定位
|
||||
|
||||
`cmbone` 是一个 Wails v3 + Vue 3 + SQLite 的本地桌面应用骨架,当前重点是保持可运行、可构建、可维护。
|
||||
`cmbone` 是一个 Windows-first、可扩展到其他平台的 Wails v3 + Vue 3 + SQLite 可复用桌面应用模板。
|
||||
|
||||
第一版 MVP 只做:桌面主窗口、设置页、多语言、主题、本地配置、热键、托盘和 OCR 示例窗口的稳定闭环。
|
||||
模板目标不是做空泛框架,而是沉淀桌面端常用模块:应用壳、设置、登录、主业务模块、操作日志、数据统计和常用业务组件。第一批业务样例使用“电商商品图片 AI 优化”来验证模板是否能支撑真实业务闭环。
|
||||
|
||||
## 必读顺序
|
||||
|
||||
每次开始写代码前,按这个顺序建立上下文:
|
||||
|
||||
1. [`01-vision.md`](01-vision.md):为什么做、为谁做、什么不做。
|
||||
2. [`02-requirements.md`](02-requirements.md):MVP 要什么、怎么算达成。
|
||||
2. [`02-requirements.md`](02-requirements.md):模板 MVP 要什么、怎么算达成。
|
||||
3. [`03-tech-stack.md`](03-tech-stack.md):既定技术选型。
|
||||
4. [`04-architecture.md`](04-architecture.md):系统结构、职责划分、数据模型和关键难点。
|
||||
5. [`05-coding-rules.md`](05-coding-rules.md):写代码前必须遵守的规则。
|
||||
@@ -34,14 +34,14 @@
|
||||
|
||||
## 当前阶段
|
||||
|
||||
当前项目处于:MVP 基线整理与文档接入阶段。
|
||||
当前项目处于:可复用桌面应用模板的产品定位校准阶段。
|
||||
|
||||
优先路径:
|
||||
|
||||
1. Phase 0:保持可运行、可测试、可构建。
|
||||
2. Phase 1:收敛 Wails 服务、前端绑定和本地存储边界。
|
||||
3. Phase 2:完善主窗口和第二窗口的真实用户流程。
|
||||
4. Phase 3:补齐最小测试和发布文档。
|
||||
1. Phase 0:保持迁移后的 Wails/Vue/SQLite 基线可运行、可测试、可构建。
|
||||
2. Phase 1:建立 Windows-first 的应用壳、主布局、设置和登录边界。
|
||||
3. Phase 2:实现商品图片 AI 优化样例、审计日志、运行日志和数据统计。
|
||||
4. Phase 3:补齐组件示例、测试、打包和交接文档。
|
||||
|
||||
## 领取任务规则
|
||||
|
||||
@@ -52,21 +52,25 @@
|
||||
- 完成后把执行记录追加到 [`../progress.md`](../progress.md),并覆盖更新 [`current-state.md`](current-state.md) 的当前快照。
|
||||
- 结束会话前过一遍 [`clean-state-checklist.md`](clean-state-checklist.md)。
|
||||
|
||||
## MVP 边界
|
||||
## 模板 MVP 边界
|
||||
|
||||
MVP 只做:
|
||||
|
||||
- 主窗口能启动并展示设置、快捷键、标签、关于等基础页面。
|
||||
- 本地 SQLite 能初始化并保存配置和热键。
|
||||
- 托盘菜单、语言切换、主题切换、快捷键和第二窗口能按现有设计工作。
|
||||
- 前端构建、后端测试和后端编译保持通过。
|
||||
- 应用壳:主窗口、侧边导航、顶部用户区、内容区,Windows 10+ 优先。
|
||||
- 登录:本地固定账号 provider 和真实后端 provider 的可替换边界。
|
||||
- 设置:主题、语言、窗口行为、快捷键、数据目录和日志策略。
|
||||
- 主业务样例:电商商品图片 AI 优化的任务列表、状态、结果和失败反馈。
|
||||
- 操作日志:审计日志用于记录用户动作,运行日志用于排错。
|
||||
- 数据统计:今日处理图片数、AI 优化成功率、平均耗时、失败任务数、今日操作日志数、最近 7 天处理趋势。
|
||||
- 常用组件示例:输入框、多选框、下拉框、多行文本、表格、筛选和分页。
|
||||
|
||||
MVP 不做:
|
||||
|
||||
- 云端账号、同步、付费和远程 API。
|
||||
- 复杂任务管理或业务工作流。
|
||||
- 未确认产品方向前的大型 UI 重构。
|
||||
- 未验证兼容性的 Wails / Go / Vite 大版本升级。
|
||||
- 完整权限系统、角色系统或企业 SSO。
|
||||
- 完整 macOS / Linux 体验承诺;当前是 Windows-first,其他平台保持结构可扩展。
|
||||
- 自研 UI 组件库;优先复用 Ant Design Vue。
|
||||
- 复杂 BI 报表、自动更新和插件市场。
|
||||
- 未确认接口前的真实 AI 服务深度集成。
|
||||
|
||||
## 常见任务该看哪里
|
||||
|
||||
@@ -74,7 +78,11 @@ MVP 不做:
|
||||
|
||||
做后端服务:先看 [`api.md`](api.md)、[`04-architecture.md`](04-architecture.md),再看 `internal/services/`。
|
||||
|
||||
做数据模型:先看 [`04-architecture.md`](04-architecture.md),改 schema 后必须同步更新相关文档和测试。
|
||||
做登录:先看 [`04-architecture.md`](04-architecture.md) 的 AuthProvider 边界,不把账号密码写死在前端。
|
||||
|
||||
做日志:区分审计日志和运行日志,先看 [`04-architecture.md`](04-architecture.md) 的数据模型。
|
||||
|
||||
做统计:只围绕 MVP 指标,不提前做复杂报表平台。
|
||||
|
||||
做运行 / 打包:先看 [`03-tech-stack.md`](03-tech-stack.md) 和 [`current-state.md`](current-state.md)。
|
||||
|
||||
|
||||
+44
-18
@@ -2,38 +2,64 @@
|
||||
|
||||
## 项目目标
|
||||
|
||||
`cmbone` 的目标是提供一个简单、可维护的 Wails v3 桌面应用基础工程,让后续功能可以在稳定的 Go 后端、Vue 前端和本地 SQLite 存储上继续演进。
|
||||
`cmbone` 的目标是成为一个可复用桌面应用模板:以 Wails v3 承载跨平台桌面能力,以 Windows 10+ 作为主要体验目标,以 Vue 3 构建稳定的业务界面,以 SQLite 承载本地配置、业务数据、日志和统计。
|
||||
|
||||
当前最重要的结果是:
|
||||
它不是单一业务产品,也不是大而空的框架。它要提供一套能被复制、裁剪和扩展的桌面端基础能力,让后续具体业务模块可以快速接入。
|
||||
|
||||
- 新成员能按 README 和 Harness Coding 文档启动项目。
|
||||
- 初级程序员能看懂目录职责和常用命令。
|
||||
- 每次改动都有明确任务、验证命令和提交记录。
|
||||
## 模板定位
|
||||
|
||||
核心定位:
|
||||
|
||||
- Windows-first:优先保证 Windows 10+ 上的启动、窗口、热键、托盘、打包和用户体验。
|
||||
- 可扩展跨平台:代码结构保留 macOS / Linux 适配边界,但不在 MVP 承诺完整体验。
|
||||
- 本地优先:配置、日志、任务和统计默认落 SQLite 或本地文件。
|
||||
- 业务可替换:登录、AI 服务、主业务模块通过 provider / service 边界替换。
|
||||
- 初级程序员可维护:模块职责清楚,任务小步推进,不追求抽象炫技。
|
||||
|
||||
## 目标用户
|
||||
|
||||
- 项目维护者:需要快速判断当前状态、任务边界和验证方式。
|
||||
- 初级前端 / 后端程序员:需要沿着清晰模块做小范围改动。
|
||||
- 项目维护者:需要一套可复用的桌面应用起点。
|
||||
- 初级前端 / 后端程序员:需要沿着清晰模块做设置、表单、表格、日志和统计类功能。
|
||||
- AI coding agent:需要稳定的上下文入口、任务看板和质量规则。
|
||||
- 后续业务团队:需要把具体业务模块插入模板,而不是从零搭桌面壳。
|
||||
|
||||
## 产品方向
|
||||
## 第一批业务样例
|
||||
|
||||
短期方向是桌面工具壳和设置中心:
|
||||
第一批主业务模块使用“电商商品图片 AI 优化”。
|
||||
|
||||
- 主窗口负责常驻设置、快捷键和信息展示。
|
||||
- 第二窗口用于快捷打开轻量功能,如 OCR 示例。
|
||||
- 后端服务负责平台能力、本地配置和数据持久化。
|
||||
这个样例用于验证模板是否具备真实业务所需的基本能力:
|
||||
|
||||
- 登录后进入主应用。
|
||||
- 上传或选择商品图片。
|
||||
- 创建 AI 优化任务。
|
||||
- 查看任务状态、结果和失败原因。
|
||||
- 记录用户操作和系统错误。
|
||||
- 在数据统计页看到处理量、成功率、耗时和失败趋势。
|
||||
|
||||
## 核心模块
|
||||
|
||||
- 应用壳:主窗口、侧边导航、顶部用户区、内容区。
|
||||
- 设置:主题、语言、窗口行为、快捷键、数据目录、日志策略。
|
||||
- 登录:本地固定账号 provider 和真实后端 provider。
|
||||
- 主业务:商品图片 AI 优化样例。
|
||||
- 操作日志:审计日志和运行日志分开。
|
||||
- 数据统计:围绕业务任务和日志生成基础指标。
|
||||
- 常用组件:输入框、多选框、下拉框、多行文本、表格、筛选、分页和状态反馈。
|
||||
|
||||
## 非目标
|
||||
|
||||
- 现在不做云端账号、远程同步、复杂权限、支付或 SaaS 化。
|
||||
- 现在不把项目改造成大型前端单页应用。
|
||||
- 现在不引入 Electron、Tauri 或其他桌面框架替代 Wails。
|
||||
- 现在不追逐 latest 依赖版本,优先保持当前 Go 1.23.0 可构建。
|
||||
- 不自研完整 UI 组件库,优先使用 Ant Design Vue 和项目级组合封装。
|
||||
- 不在 MVP 做复杂权限、角色、组织、企业 SSO。
|
||||
- 不在 MVP 做复杂 BI 平台、报表设计器或插件市场。
|
||||
- 不在 MVP 承诺完整 macOS / Linux 体验。
|
||||
- 不在没有真实接口前重度绑定某个 AI 服务商。
|
||||
- 不追逐 latest 依赖版本,优先保持当前 Go 1.23.0 可构建。
|
||||
|
||||
## 成功标准
|
||||
|
||||
- 文档、目录、命令和代码事实一致。
|
||||
- 新项目可以基于模板快速保留或删除登录、设置、日志、统计和业务样例。
|
||||
- Windows 10+ 上可以稳定启动、构建和打包。
|
||||
- `.\init.ps1` 可以完成依赖安装、测试、前端构建和后端编译。
|
||||
- 新增功能能落在明确模块内,不需要跨多层猜测。
|
||||
- 文档、目录、命令、接口和当前代码事实一致。
|
||||
- 新增模块都有清楚 service / model / route 边界。
|
||||
- 提交历史能看出每次改动的意图和验证结果。
|
||||
|
||||
+58
-14
@@ -1,31 +1,74 @@
|
||||
# 需求说明
|
||||
|
||||
## MVP 范围
|
||||
## 模板 MVP 范围
|
||||
|
||||
### P0 · 必须保持
|
||||
### P0 · 基线必须保持
|
||||
|
||||
- 应用能启动 Wails 主窗口,并加载嵌入的 `frontend/dist` 资源。
|
||||
- 主窗口包含 Dashboard、General、Shortcut、Tags、About 等现有区域。
|
||||
- Windows 10+ 是主要运行和体验目标。
|
||||
- 多语言资源能从 `frontend/src/locales/*.json` 加载,并能通过 UI / 服务切换。
|
||||
- 主题配置能保存到本地 SQLite 并在前端生效。
|
||||
- 快捷键配置能从数据库读取、更新,并注册到系统热键层。
|
||||
- 托盘菜单能执行显示、隐藏、语言切换和退出等基础动作。
|
||||
- 第二窗口能通过热键或服务打开,承载 OCR 示例页面。
|
||||
- `go test ./...`、`npm run build`、`go build -o bin/cmbone.exe .` 通过。
|
||||
|
||||
### P1 · 近期增强
|
||||
### P0 · 模板必须具备
|
||||
|
||||
- 明确主窗口默认大小、最大化策略和自适应布局规则。
|
||||
- 补齐热键服务、配置服务、存储迁移的边界测试。
|
||||
- OCR 失败时给出可理解的前端反馈。
|
||||
- 文档化 Wails bindings 生成流程。
|
||||
- 应用壳:侧边导航、顶部用户区、主内容区,默认布局适合长期业务操作。
|
||||
- 设置模块:主题、语言、窗口行为、快捷键、数据目录、日志策略。
|
||||
- 登录模块:支持本地固定账号 provider;预留真实后端 provider。
|
||||
- 主业务模块:以电商商品图片 AI 优化为样例,包含任务创建、列表、状态、结果和失败反馈。
|
||||
- 操作日志模块:审计日志记录用户动作,运行日志记录系统错误和排错信息。
|
||||
- 数据统计模块:展示第一批 P0 指标。
|
||||
- 常用组件示例:输入框、多选框、下拉框、多行文本、表格、筛选、分页和状态标签。
|
||||
|
||||
### P2 · 后续再做
|
||||
## 第一批统计指标
|
||||
|
||||
- 发布安装包和自动更新。
|
||||
- 更完整的系统通知能力。
|
||||
- 可配置插件或更多工具模块。
|
||||
- 业务化功能闭环。
|
||||
P0 数据统计只做 6 个指标:
|
||||
|
||||
- 今日处理图片数。
|
||||
- AI 优化成功率。
|
||||
- 平均处理耗时。
|
||||
- 失败任务数。
|
||||
- 今日操作日志数。
|
||||
- 最近 7 天处理趋势。
|
||||
|
||||
P1 再考虑:
|
||||
|
||||
- 图片优化前后平均文件大小变化。
|
||||
- 不同优化类型使用次数,例如增强、压缩、背景替换。
|
||||
- 最常见错误类型 Top 5。
|
||||
- 当前本地数据库大小和输出目录占用空间。
|
||||
- 登录成功 / 失败次数。
|
||||
- 任务队列状态:待处理、处理中、成功、失败。
|
||||
|
||||
## 登录要求
|
||||
|
||||
- 本地固定账号只用于模板演示和离线场景。
|
||||
- 固定账号密码不得写死在前端。
|
||||
- 真实后端登录通过 provider 接入,返回 token 或 session。
|
||||
- 登录成功、失败、退出必须写入审计日志。
|
||||
- MVP 不做复杂权限、角色或 SSO。
|
||||
|
||||
## 日志要求
|
||||
|
||||
审计日志用于回答“谁在什么时候做了什么”:
|
||||
|
||||
- 登录、退出、登录失败。
|
||||
- 修改设置。
|
||||
- 创建图片优化任务。
|
||||
- 任务成功、失败、取消。
|
||||
- 导出或清理数据。
|
||||
|
||||
运行日志用于排错:
|
||||
|
||||
- AI 调用失败。
|
||||
- 数据库错误。
|
||||
- 文件读写失败。
|
||||
- 热键注册失败。
|
||||
- 未捕获的服务错误。
|
||||
|
||||
审计日志和运行日志不要混在同一张业务表里。
|
||||
|
||||
## 验收标准
|
||||
|
||||
@@ -43,3 +86,4 @@
|
||||
- Wails 版本固定为 `v3.0.0-alpha.9`。
|
||||
- 前端 runtime 固定为 `@wailsio/runtime 3.0.0-alpha.66`。
|
||||
- 不提交 `node_modules`、`dist`、`bin`、本地数据库或用户配置。
|
||||
- 依赖升级必须单独开任务。
|
||||
|
||||
@@ -7,6 +7,12 @@
|
||||
- 本地数据库:`modernc.org/sqlite v1.38.2`
|
||||
- 系统热键:`golang.design/x/hotkey v0.4.1`
|
||||
|
||||
运行策略:
|
||||
|
||||
- Windows 10+ 是主要目标环境。
|
||||
- macOS / Linux 保留代码边界,但不在 MVP 承诺完整体验。
|
||||
- 平台差异统一放在 `platform/` 或明确 provider 层。
|
||||
|
||||
Wails CLI 安装命令:
|
||||
|
||||
```powershell
|
||||
@@ -25,6 +31,12 @@ go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.9
|
||||
- 样式:Tailwind CSS `^3.4.1`
|
||||
- 国际化:Vue I18n `^11.1.5`
|
||||
|
||||
UI 策略:
|
||||
|
||||
- 不自研完整组件库。
|
||||
- 优先复用 Ant Design Vue。
|
||||
- 只沉淀项目级组合组件和使用示例,例如筛选表格、设置项、状态标签、日志列表。
|
||||
|
||||
## 目录职责
|
||||
|
||||
```text
|
||||
@@ -94,3 +106,10 @@ wails3 package
|
||||
- 升级 Wails 后,同时检查 `@wailsio/runtime` 和 `frontend/bindings`。
|
||||
- 升级 Vite / TypeScript 后,必须跑 `npm run build`。
|
||||
- 依赖升级必须单独提交,不和业务功能混在一起。
|
||||
|
||||
## 目标模块技术边界
|
||||
|
||||
- 登录:通过 `AuthProvider` 支持本地固定账号和真实后端,不在前端写死密码。
|
||||
- 主业务:商品图片 AI 优化通过服务层封装,MVP 可先用本地模拟 provider。
|
||||
- 操作日志:审计日志进 SQLite,运行日志可进 SQLite 或本地滚动日志文件。
|
||||
- 数据统计:MVP 直接 SQL 聚合,不提前引入 BI 或图表后端。
|
||||
|
||||
+124
-14
@@ -12,17 +12,24 @@ main.go
|
||||
├─ AppConfigService
|
||||
├─ HotkeyService
|
||||
├─ SystemInfo
|
||||
└─ OCRService
|
||||
├─ OCRService # 当前存量示例
|
||||
├─ AuthService # 目标模块
|
||||
├─ AuditLogService # 目标模块
|
||||
├─ AppLogService # 目标模块
|
||||
├─ ImageOptimizationService # 目标业务样例
|
||||
└─ MetricsService # 目标模块
|
||||
|
||||
frontend/src
|
||||
├─ router
|
||||
├─ components
|
||||
├─ layouts
|
||||
├─ pages
|
||||
├─ components
|
||||
├─ modules
|
||||
├─ utils
|
||||
└─ locales
|
||||
```
|
||||
|
||||
前端通过 `frontend/bindings` 调用 Wails 暴露的 Go 服务。后端服务访问本地 SQLite、平台热键和系统能力。
|
||||
前端通过 `frontend/bindings` 调用 Wails 暴露的 Go 服务。后端服务访问本地 SQLite、平台热键、文件系统、真实后端或 AI provider。
|
||||
|
||||
## 后端边界
|
||||
|
||||
@@ -32,21 +39,57 @@ frontend/src
|
||||
- `internal/services/appservice.go`:负责窗口、托盘、语言资源和应用生命周期。
|
||||
- `internal/services/appconfig_service.go`:负责配置读写的 Wails 服务边界。
|
||||
- `internal/services/hotkey_service.go`:负责热键读取、更新和重新注册。
|
||||
- `internal/services/ocr_service.go`:负责 OCR 服务入口。
|
||||
- `internal/services/ocr_service.go`:当前 OCR 存量示例,后续可演进为图片 AI 能力的一部分。
|
||||
- `platform/`:隔离 Windows / macOS 热键和系统能力差异。
|
||||
|
||||
目标新增边界:
|
||||
|
||||
- `AuthService`:登录、退出、会话读取;内部通过 `AuthProvider` 接入本地固定账号或真实后端。
|
||||
- `AuditLogService`:记录和查询用户操作审计日志。
|
||||
- `AppLogService`:记录和查询运行错误,必要时可落本地滚动日志文件。
|
||||
- `ImageOptimizationService`:商品图片 AI 优化任务的创建、状态、结果和失败原因。
|
||||
- `MetricsService`:对业务任务和日志做基础聚合,输出统计卡片和趋势数据。
|
||||
|
||||
服务之间不要互相绕过边界直接操作平台实现。新增平台能力时,优先放在 `platform/`,再由 `internal/services/` 暴露稳定方法。
|
||||
|
||||
## 前端边界
|
||||
|
||||
- `frontend/src/router/index.ts`:只维护页面路由。
|
||||
- `frontend/src/components/Main/Index.vue`:主窗口布局入口。
|
||||
- `frontend/src/components/Setting/`:设置项和通用设置控件。
|
||||
- `frontend/src/components/Shortcut/`:快捷键设置。
|
||||
- `frontend/src/pages/Home/Index.vue`:第二窗口 / OCR 页面。
|
||||
- `frontend/src/utils/`:国际化、主题、OS 和热键工具函数。
|
||||
- `frontend/src/router/index.ts`:维护页面路由。
|
||||
- `frontend/src/layouts/`:目标目录,放登录布局和主应用布局。
|
||||
- `frontend/src/modules/auth/`:目标目录,放登录页面、会话状态和 provider 调用。
|
||||
- `frontend/src/modules/settings/`:目标目录,放设置页和设置项。
|
||||
- `frontend/src/modules/image-optimizer/`:目标目录,放商品图片 AI 优化样例。
|
||||
- `frontend/src/modules/logs/`:目标目录,放审计日志和运行日志页面。
|
||||
- `frontend/src/modules/metrics/`:目标目录,放统计卡片和趋势图。
|
||||
- `frontend/src/modules/components-demo/`:目标目录,放常用组件示例。
|
||||
- `frontend/src/components/`:通用展示组件和组合控件。
|
||||
- `frontend/src/utils/`:国际化、主题、OS、热键等工具函数。
|
||||
- `frontend/bindings/`:由 Wails 生成或按 Wails 合约维护,不写业务逻辑。
|
||||
|
||||
## 登录架构
|
||||
|
||||
登录必须通过 provider 边界实现:
|
||||
|
||||
```text
|
||||
AuthService
|
||||
└─ AuthProvider
|
||||
├─ LocalAuthProvider
|
||||
└─ RemoteAuthProvider
|
||||
```
|
||||
|
||||
- `LocalAuthProvider`:用于模板演示和离线模式,固定账号密码由后端配置或安全哈希保存,不写死在前端。
|
||||
- `RemoteAuthProvider`:用于真实后端,负责请求登录接口并保存 token / session。
|
||||
- 前端只关心登录、退出和当前会话,不关心 provider 细节。
|
||||
|
||||
## 日志架构
|
||||
|
||||
审计日志和运行日志分开:
|
||||
|
||||
- 审计日志:记录用户可解释动作,支持查询、筛选和导出。
|
||||
- 运行日志:记录系统错误和排错信息,支持按时间、级别、模块查看。
|
||||
|
||||
审计日志用于“责任链”,运行日志用于“故障定位”。不要用一张表混合两种语义。
|
||||
|
||||
## 数据模型
|
||||
|
||||
SQLite 数据库位于用户配置目录下的 `cmbone/cmbone.db`,不进入 git。
|
||||
@@ -74,24 +117,91 @@ appconfig(
|
||||
)
|
||||
```
|
||||
|
||||
目标新增表:
|
||||
|
||||
```sql
|
||||
auth_sessions(
|
||||
id INTEGER PRIMARY KEY,
|
||||
user_id TEXT,
|
||||
username TEXT,
|
||||
provider TEXT,
|
||||
token TEXT,
|
||||
created_at DATETIME,
|
||||
expires_at DATETIME,
|
||||
active INTEGER
|
||||
)
|
||||
```
|
||||
|
||||
```sql
|
||||
audit_logs(
|
||||
id INTEGER PRIMARY KEY,
|
||||
actor TEXT,
|
||||
action TEXT,
|
||||
target_type TEXT,
|
||||
target_id TEXT,
|
||||
detail TEXT,
|
||||
created_at DATETIME
|
||||
)
|
||||
```
|
||||
|
||||
```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,
|
||||
source_path TEXT,
|
||||
status TEXT,
|
||||
operation TEXT,
|
||||
duration_ms INTEGER,
|
||||
error_message TEXT,
|
||||
created_at DATETIME,
|
||||
updated_at DATETIME
|
||||
)
|
||||
```
|
||||
|
||||
```sql
|
||||
image_task_results(
|
||||
id INTEGER PRIMARY KEY,
|
||||
task_id INTEGER,
|
||||
output_path TEXT,
|
||||
before_size INTEGER,
|
||||
after_size INTEGER,
|
||||
created_at DATETIME
|
||||
)
|
||||
```
|
||||
|
||||
统计数据早期直接用 SQL 聚合,不急着落 `daily_metrics` 缓存表。数据量变大后再增加缓存表。
|
||||
|
||||
迁移要求:
|
||||
|
||||
- 初始化必须幂等。
|
||||
- 新字段必须有默认值或迁移逻辑。
|
||||
- schema 变化必须同步 `store_test.go`、`api.md` 和 `current-state.md`。
|
||||
|
||||
## 窗口与事件
|
||||
## 窗口与页面
|
||||
|
||||
- 主窗口路由:`/#/`
|
||||
- 第二窗口路由:`/#/second`
|
||||
- 目标主应用路由:登录页、Dashboard、图片优化、日志、统计、设置、组件示例。
|
||||
- 托盘菜单由 `AppService` 配置。
|
||||
- 热键触发目标当前包含打开第二窗口。
|
||||
- 热键触发目标可以是打开主窗口、打开快捷功能或创建快速任务。
|
||||
|
||||
窗口策略应保持简单:主窗口负责配置和信息,第二窗口负责轻量快捷功能。不要把长期复杂流程塞入第二窗口。
|
||||
窗口策略:主窗口承载长期业务操作,默认应充分利用屏幕空间;第二窗口只保留轻量快捷功能,不承载复杂业务流程。
|
||||
|
||||
## 关键风险
|
||||
|
||||
- 范围膨胀:模板容易变成“大而全平台”,必须按任务小步交付。
|
||||
- Wails v3 仍是 alpha,CLI、Go 模块和 runtime 必须保持匹配。
|
||||
- bindings 若与 Go 服务签名不一致,前端会在运行时失败。
|
||||
- OCR 和热键依赖平台能力,跨平台修改必须分别验证。
|
||||
- 登录 provider、AI provider 和日志模块必须有清晰边界,否则后续替换困难。
|
||||
- OCR、热键、托盘依赖平台能力,跨平台修改必须分别验证。
|
||||
- Vite 构建可能出现 chunk size warning,警告不等于失败,但需要避免无节制增加前端体积。
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
- 后端服务方法签名变化必须同步前端 bindings。
|
||||
- 前端 UI 文案走现有 i18n 体系,避免新增硬编码中文/英文。
|
||||
- 新依赖必须说明必要性;能用标准库或现有依赖解决时不新增。
|
||||
- 登录、AI、日志和统计能力必须经过 service / provider 边界,不写死在页面组件里。
|
||||
- 常用输入框、多选框、下拉框、多行文本、表格等优先使用 Ant Design Vue,不自研基础控件。
|
||||
|
||||
## 模块规则
|
||||
|
||||
@@ -33,6 +35,8 @@
|
||||
- 平台差异放在 `platform/`。
|
||||
- 前端 bindings 不承载业务逻辑。
|
||||
- 通用 UI 组件保持小而直接,不为未来需求提前抽象。
|
||||
- 审计日志记录用户动作,运行日志记录系统错误,两类日志不要混用。
|
||||
- 数据统计只做任务要求的指标,不提前做复杂报表平台。
|
||||
|
||||
## 验证要求
|
||||
|
||||
|
||||
+19
-13
@@ -14,38 +14,44 @@
|
||||
|
||||
`TODO` 待开始 · `DOING` 进行中 · `DONE` 已完成并验收 · `BLOCKED` 受阻
|
||||
|
||||
## Phase 0 · 基线
|
||||
## Phase 0 · 基线与定位
|
||||
|
||||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| T-000 | 接入 Harness Coding 文档 | - | `AGENTS.md`、`docs/`、`progress.md`、`init.ps1`、`init.sh` 已创建;README 已登记入口;统一验证通过 | DONE |
|
||||
| T-001 | 验证迁移后构建基线 | T-000 | `go test ./...`、`npm run build`、`go build -o bin/cmbone.exe .` 通过 | DONE |
|
||||
| T-002 | 校准为可复用桌面应用模板 | T-001 | 愿景、需求、架构、API、路由、任务和当前状态文档都改为 Windows-first 可复用模板方向 | DONE |
|
||||
|
||||
## Phase 1 · 近期维护
|
||||
## Phase 1 · 应用壳与基础模块
|
||||
|
||||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| T-010 | 梳理主窗口最大化与自适应布局策略 | T-001 | 明确是否默认最大化;主内容区域能填满空余空间;移动/小窗口尺寸下无明显溢出;更新 `routes.md` 或架构说明 | TODO |
|
||||
| T-011 | 文档化 Wails bindings 生成流程 | T-001 | README 或技术栈文档说明 `wails3 generate bindings` 的使用、失败处理和版本要求 | TODO |
|
||||
| T-012 | 增加前端最小质量检查 | T-001 | 前端至少保留 `npm run build`;如新增 lint/test,命令写入 `package.json` 和文档 | TODO |
|
||||
| T-010 | 建立 Windows-first 主窗口布局策略 | T-002 | 明确是否默认最大化;侧边导航、顶部用户区、内容区能填满空余空间;小窗口无明显溢出 | TODO |
|
||||
| T-011 | 搭建主应用路由骨架 | T-010 | `login`、`dashboard`、`image-optimizer`、`logs`、`statistics`、`settings`、`components` 路由可访问 | TODO |
|
||||
| T-012 | 实现登录 provider 边界 | T-011 | 支持本地固定账号 provider;预留 remote provider;账号密码不写死在前端;登录事件写审计日志 | TODO |
|
||||
| T-013 | 收敛设置模块 schema | T-011 | 主题、语言、窗口行为、快捷键、数据目录、日志策略都有统一配置定义和默认值 | TODO |
|
||||
|
||||
## Phase 2 · 服务边界
|
||||
## Phase 2 · 业务样例与日志统计
|
||||
|
||||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| T-020 | 补强 SQLite 初始化测试 | T-001 | `store_test.go` 覆盖默认配置和热键初始化;`go test ./...` 通过 | TODO |
|
||||
| T-021 | 收敛热键服务错误处理 | T-020 | 注册失败、更新失败和重复注册路径有明确错误返回或日志 | TODO |
|
||||
| T-022 | 完善 OCR 失败反馈 | T-001 | OCR 失败时前端能展示可理解提示;后端错误不被吞掉 | TODO |
|
||||
| T-020 | 建立商品图片 AI 优化任务模型 | T-012 | `image_tasks`、`image_task_results` 迁移和基础测试通过;可创建模拟任务 | TODO |
|
||||
| T-021 | 实现审计日志与运行日志边界 | T-012 | 审计日志和运行日志分开;登录、设置变更、任务创建、任务失败可记录 | TODO |
|
||||
| T-022 | 实现 P0 数据统计 | T-020 | 今日处理图片数、成功率、平均耗时、失败数、今日操作日志数、7 天趋势可查询 | TODO |
|
||||
| T-023 | 实现商品图片 AI 优化页面 | T-020 | 上传/选择图片、任务列表、状态、结果预览、失败提示路径可用 | TODO |
|
||||
|
||||
## Phase 3 · 发布准备
|
||||
## Phase 3 · 组件、质量与发布
|
||||
|
||||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| T-030 | 补充 Windows 打包验证文档 | T-011 | `wails3 package` 前置条件、输出目录和常见失败处理写入 README 或 docs | TODO |
|
||||
| T-031 | 完成一次人工 smoke 清单 | T-010 | 主窗口、第二窗口、语言、主题、热键、托盘都按清单验证并记录结果 | TODO |
|
||||
| T-030 | 建立常用组件示例页 | T-011 | 输入框、多选框、下拉框、多行文本、表格、筛选、分页、状态标签有可运行示例 | TODO |
|
||||
| T-031 | 文档化 Wails bindings 生成流程 | T-011 | README 或技术栈文档说明 `wails3 generate bindings` 的使用、失败处理和版本要求 | TODO |
|
||||
| T-032 | 补充 Windows 打包验证文档 | T-031 | `wails3 package` 前置条件、输出目录和常见失败处理写入 README 或 docs | TODO |
|
||||
| T-033 | 完成一次模板 smoke 清单 | T-023 | 登录、设置、业务样例、日志、统计、组件示例、托盘、热键都按清单验证并记录结果 | TODO |
|
||||
|
||||
## Backlog
|
||||
|
||||
- 梳理应用真实产品方向和名称。
|
||||
- 评估是否需要 Playwright / Vitest 覆盖前端关键页面。
|
||||
- 评估是否需要平台能力降级策略。
|
||||
- 评估真实 AI 后端 provider 的接口形态。
|
||||
- 评估本地数据库备份、恢复和清理策略。
|
||||
|
||||
+67
-6
@@ -1,8 +1,10 @@
|
||||
# API 与模块合约
|
||||
|
||||
> 本项目没有远程 HTTP API。这里记录 Wails 暴露给前端的 Go 服务方法和本地模块约定。
|
||||
> 本项目没有固定远程 HTTP API。这里记录 Wails 暴露给前端的 Go 服务方法、本地模块合约,以及目标 provider 边界。
|
||||
|
||||
## AppService
|
||||
## 当前已存在服务
|
||||
|
||||
### AppService
|
||||
|
||||
文件:`internal/services/appservice.go`
|
||||
|
||||
@@ -14,7 +16,7 @@
|
||||
- 窗口创建、显示、隐藏和托盘菜单逻辑集中在 `AppService`。
|
||||
- 语言资源来自 `frontend/src/locales/*.json` 的嵌入文件。
|
||||
|
||||
## AppConfigService
|
||||
### AppConfigService
|
||||
|
||||
文件:`internal/services/appconfig_service.go`
|
||||
|
||||
@@ -28,7 +30,7 @@
|
||||
- 配置持久化走 SQLite `appconfig` 表。
|
||||
- 新增配置项时,必须有默认值和迁移逻辑。
|
||||
|
||||
## HotkeyService
|
||||
### HotkeyService
|
||||
|
||||
文件:`internal/services/hotkey_service.go`
|
||||
|
||||
@@ -41,13 +43,13 @@
|
||||
- 平台注册通过 `platform/` 实现,服务层不直接写平台细节。
|
||||
- 更新失败时必须返回错误,不只打印日志。
|
||||
|
||||
## SystemInfo
|
||||
### SystemInfo
|
||||
|
||||
文件:`internal/services/systeminfo.go`
|
||||
|
||||
- `GetOS() string`:返回当前系统标识。
|
||||
|
||||
## OCRService
|
||||
### OCRService
|
||||
|
||||
文件:`internal/services/ocr_service.go`
|
||||
|
||||
@@ -55,9 +57,68 @@
|
||||
|
||||
约束:
|
||||
|
||||
- 当前是存量示例服务,后续可并入商品图片 AI 优化样例。
|
||||
- 失败时返回错误给前端。
|
||||
- 平台依赖或能力缺失时,不应导致主窗口不可启动。
|
||||
|
||||
## 目标新增服务
|
||||
|
||||
### AuthService
|
||||
|
||||
目标方法:
|
||||
|
||||
- `Login(username string, password string) (Session, error)`:登录并返回会话。
|
||||
- `Logout() error`:退出当前会话。
|
||||
- `GetCurrentSession() (Session, error)`:读取当前会话。
|
||||
- `SetAuthMode(mode string) error`:切换 `local` 或 `remote` provider。
|
||||
|
||||
约束:
|
||||
|
||||
- 前端不得写死固定账号密码。
|
||||
- `LocalAuthProvider` 只用于演示和离线模式。
|
||||
- `RemoteAuthProvider` 用于真实后端登录。
|
||||
- 登录成功、失败和退出必须写审计日志。
|
||||
|
||||
### AuditLogService
|
||||
|
||||
目标方法:
|
||||
|
||||
- `Record(action string, targetType string, targetID string, detail string) error`:记录审计事件。
|
||||
- `List(filter AuditLogFilter) ([]AuditLog, error)`:分页查询审计日志。
|
||||
- `Export(filter AuditLogFilter) (string, error)`:导出审计日志文件。
|
||||
|
||||
审计日志记录用户动作,不记录系统堆栈。
|
||||
|
||||
### AppLogService
|
||||
|
||||
目标方法:
|
||||
|
||||
- `Record(level string, module string, message string, detail string) error`:记录运行日志。
|
||||
- `List(filter AppLogFilter) ([]AppLog, error)`:分页查询运行日志。
|
||||
- `Export(filter AppLogFilter) (string, error)`:导出运行日志文件。
|
||||
|
||||
运行日志用于排错,可以记录错误详情和模块名。
|
||||
|
||||
### ImageOptimizationService
|
||||
|
||||
目标方法:
|
||||
|
||||
- `CreateTask(input ImageTaskInput) (ImageTask, error)`:创建图片优化任务。
|
||||
- `ListTasks(filter ImageTaskFilter) ([]ImageTask, error)`:查询任务列表。
|
||||
- `GetTask(id int64) (ImageTaskDetail, error)`:查询任务详情和结果。
|
||||
- `CancelTask(id int64) error`:取消待处理或处理中任务。
|
||||
|
||||
MVP 可以先用本地模拟 provider,后续再接真实 AI 后端。
|
||||
|
||||
### MetricsService
|
||||
|
||||
目标方法:
|
||||
|
||||
- `GetDashboardMetrics() (DashboardMetrics, error)`:返回今日处理图片数、成功率、平均耗时、失败数、今日操作日志数。
|
||||
- `GetProcessingTrend(days int) ([]DailyMetric, error)`:返回最近 N 天处理趋势。
|
||||
|
||||
统计早期直接基于 `image_tasks`、`image_task_results`、`audit_logs` 聚合。
|
||||
|
||||
## 前端绑定
|
||||
|
||||
绑定目录:`frontend/bindings/cmbone/internal/services`
|
||||
|
||||
+17
-4
@@ -4,18 +4,27 @@
|
||||
|
||||
## 当前阶段
|
||||
|
||||
项目处于迁移后基线稳定和 Harness Coding 文档接入阶段。当前主要任务是保持 Wails/Vue/SQLite 工程简单、可构建、可维护。
|
||||
项目处于可复用桌面应用模板的产品定位校准阶段。目标已经从迁移后的基础工程调整为“Windows-first、可扩展到其他平台的桌面端应用模板”。
|
||||
|
||||
当前代码仍是迁移后的 Wails/Vue/SQLite 基线,已具备设置、多语言、主题、本地配置、热键、托盘和 OCR 示例。登录、商品图片 AI 优化、审计日志、运行日志和数据统计仍是目标模块,尚未落地实现。
|
||||
|
||||
## 已确认事实
|
||||
|
||||
- 项目类型:可复用桌面应用模板。
|
||||
- 主要运行场景:Windows 10 以及以后的 Windows 操作系统。
|
||||
- 跨平台策略:Windows-first,保留 macOS / Linux 适配边界,不在 MVP 承诺完整体验。
|
||||
- 第一批业务样例:电商商品图片 AI 优化。
|
||||
- 登录策略:本地固定账号 provider + 真实后端 provider 的可替换边界。
|
||||
- 日志策略:审计日志用于用户动作追踪,运行日志用于系统排错。
|
||||
- 第一批统计指标:今日处理图片数、AI 优化成功率、平均处理耗时、失败任务数、今日操作日志数、最近 7 天处理趋势。
|
||||
- Go 模块名:`cmbone`
|
||||
- Go 版本:`1.23.0`
|
||||
- Wails 版本:`v3.0.0-alpha.9`
|
||||
- 前端 runtime:`@wailsio/runtime 3.0.0-alpha.66`
|
||||
- 前端框架:Vue 3、Vite、TypeScript、Tailwind CSS、Ant Design Vue
|
||||
- 本地数据库:SQLite,用户配置目录下 `cmbone/cmbone.db`
|
||||
- 主窗口路由:`/#/`
|
||||
- 第二窗口路由:`/#/second`
|
||||
- 当前主窗口路由:`/#/`
|
||||
- 当前第二窗口路由:`/#/second`
|
||||
|
||||
## 当前命令
|
||||
|
||||
@@ -44,7 +53,9 @@ wails3 dev
|
||||
|
||||
## 已知风险
|
||||
|
||||
- 模板范围容易膨胀,必须按任务小步实现。
|
||||
- Wails v3 alpha 版本需要保持 CLI、Go 模块和前端 runtime 匹配。
|
||||
- 登录 provider、AI provider、日志和统计模块尚未实现,当前只是文档目标。
|
||||
- OCR 和热键依赖平台实现,跨平台修改需要分别验证。
|
||||
- 当前前端以构建检查为主,暂未引入专门的前端单元测试。
|
||||
- bindings 生成依赖本机安装的 `wails3`。
|
||||
@@ -66,9 +77,11 @@ wails3 dev
|
||||
- `npm run build` 通过。
|
||||
- `go build -o bin\cmbone.exe .` 通过。
|
||||
|
||||
同日完成可复用桌面应用模板定位校准后,已再次运行旧定位残留检查、`git diff --check` 和 `.\init.ps1`,结果均通过。
|
||||
|
||||
## 下一步
|
||||
|
||||
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-010`:梳理主窗口最大化与自适应布局策略。
|
||||
从 [`06-tasks.md`](06-tasks.md) 领取第一个 `TODO` 任务。目前建议先做 `T-010`:建立 Windows-first 主窗口布局策略。
|
||||
|
||||
## 当前 blocker
|
||||
|
||||
|
||||
@@ -24,6 +24,16 @@
|
||||
| `internal/services/appconfig_service.go` | `GetAppConfig` / `SetAppConfig` | 前端配置读写入口 |
|
||||
| `internal/services/appconfig_service.go` | `GetLanguage` / `SetLanguage` | 语言配置读写入口 |
|
||||
|
||||
## 目标模板模块
|
||||
|
||||
| 模块 | 目标服务 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| 登录 | `AuthService` | 本地固定账号 provider 和真实后端 provider |
|
||||
| 审计日志 | `AuditLogService` | 记录登录、设置变更、任务操作、导出等用户动作 |
|
||||
| 运行日志 | `AppLogService` | 记录 AI 调用、数据库、文件、热键等错误 |
|
||||
| 商品图片 AI 优化 | `ImageOptimizationService` | 创建任务、查询状态、查看结果和失败原因 |
|
||||
| 数据统计 | `MetricsService` | 聚合今日处理量、成功率、耗时、失败数和 7 天趋势 |
|
||||
|
||||
## 热键
|
||||
|
||||
| 文件 | 方法 / 内容 | 说明 |
|
||||
@@ -43,3 +53,15 @@
|
||||
| `frontend/src/pages/Home/Index.vue` | 第二窗口入口 | OCR 示例页面 |
|
||||
| `frontend/src/utils/ThemeManager.ts` | 主题工具 | 主题切换和持久化协作 |
|
||||
| `frontend/src/utils/i18n.ts` | 国际化工具 | 语言资源和切换 |
|
||||
|
||||
## 目标前端目录
|
||||
|
||||
| 目录 | 说明 |
|
||||
| --- | --- |
|
||||
| `frontend/src/layouts/` | 登录布局和主应用布局 |
|
||||
| `frontend/src/modules/auth/` | 登录和会话 |
|
||||
| `frontend/src/modules/settings/` | 设置中心 |
|
||||
| `frontend/src/modules/image-optimizer/` | 商品图片 AI 优化业务样例 |
|
||||
| `frontend/src/modules/logs/` | 审计日志和运行日志 |
|
||||
| `frontend/src/modules/metrics/` | 数据统计 |
|
||||
| `frontend/src/modules/components-demo/` | 常用组件示例 |
|
||||
|
||||
@@ -5,17 +5,20 @@
|
||||
| 领域 | 当前等级 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| 项目结构 | B | 已从模板整理为普通工程,目录职责基本清楚 |
|
||||
| 后端服务 | B | 服务边界清晰,但热键和 OCR 的错误路径仍可加强 |
|
||||
| 本地存储 | B | SQLite 初始化和基础测试已存在,后续可补更多迁移测试 |
|
||||
| 前端结构 | B | Vue 组件按功能拆分,主窗口布局策略仍需明确 |
|
||||
| 产品定位 | B | 已校准为 Windows-first 可复用桌面应用模板,后续需要代码落地 |
|
||||
| 后端服务 | B | 现有服务边界清晰,登录、日志、统计和业务样例服务尚未实现 |
|
||||
| 本地存储 | B | SQLite 初始化和基础测试已存在,目标新增表需要迁移和测试 |
|
||||
| 前端结构 | B- | Vue 组件按功能拆分,但尚未形成模板化主布局和目标路由 |
|
||||
| 构建验证 | B | Go 测试、前端构建、后端编译可运行 |
|
||||
| 文档 | B | Harness Coding 文档已接入,后续随代码继续维护 |
|
||||
| 文档 | B+ | Harness Coding 文档已接入,并同步了模板愿景 |
|
||||
|
||||
## 主要风险
|
||||
|
||||
- 模板范围膨胀:登录、设置、业务、日志、统计和组件示例都要做,但必须小步交付。
|
||||
- Wails v3 alpha 版本兼容性风险。
|
||||
- bindings 与 Go 服务签名不一致的运行时风险。
|
||||
- 热键和 OCR 跨平台行为不完全一致。
|
||||
- 登录 provider、AI provider、日志和统计如果没有边界,会导致后续替换困难。
|
||||
- 热键、托盘、OCR 等平台能力在 Windows 以外行为不完全一致。
|
||||
- 前端缺少专门单元测试,主要依赖构建和人工 smoke。
|
||||
|
||||
## 质量门槛
|
||||
@@ -27,10 +30,21 @@
|
||||
- 涉及前端时 `npm run build` 通过。
|
||||
- 涉及后端启动时 `go build -o bin/cmbone.exe .` 通过。
|
||||
- 涉及 UI 时完成对应窗口的人工检查。
|
||||
- 涉及登录、日志、统计或业务样例时,同步更新 `api.md`、`routes.md`、`current-state.md` 和任务验收。
|
||||
|
||||
## 模板模块质量要求
|
||||
|
||||
- 登录:本地 provider 和 remote provider 边界清楚,密码不写死在前端。
|
||||
- 设置:配置项有 key、类型、默认值、说明和迁移逻辑。
|
||||
- 主业务:商品图片 AI 优化可以先模拟,但任务状态、失败原因和结果结构要真实。
|
||||
- 审计日志:记录用户动作,字段可查询、可导出。
|
||||
- 运行日志:记录系统错误,能支持排错。
|
||||
- 数据统计:只做 P0 指标,不提前做复杂 BI。
|
||||
- 组件示例:复用 Ant Design Vue,不自研组件库。
|
||||
|
||||
## 改进方向
|
||||
|
||||
- 为存储迁移、配置服务、热键服务补充更细测试。
|
||||
- 为主窗口最大化和自适应布局建立明确规则。
|
||||
- 为 OCR 失败、热键注册失败补充用户可理解反馈。
|
||||
- 建立 Windows-first 主窗口最大化和自适应布局策略。
|
||||
- 为登录、日志、图片任务和统计新增服务、模型、迁移和测试。
|
||||
- 为商品图片 AI 优化样例补充真实页面闭环。
|
||||
- 为 Wails bindings 生成流程补充完整操作说明。
|
||||
|
||||
+27
-13
@@ -4,26 +4,40 @@
|
||||
|
||||
当前使用 hash history,适配 Wails 桌面窗口。
|
||||
|
||||
## 路由表
|
||||
## 当前路由
|
||||
|
||||
| 路由 | 组件 | 窗口 | 职责 |
|
||||
| --- | --- | --- | --- |
|
||||
| `#/` | `frontend/src/components/Main/Index.vue` | 主窗口 | 设置中心、导航、主题、语言、快捷键、标签、关于等 |
|
||||
| `#/second` | `frontend/src/pages/Home/Index.vue` | 第二窗口 | OCR 示例和轻量快捷功能 |
|
||||
| `#/` | `frontend/src/components/Main/Index.vue` | 主窗口 | 当前设置中心、导航、主题、语言、快捷键、标签、关于等 |
|
||||
| `#/second` | `frontend/src/pages/Home/Index.vue` | 第二窗口 | 当前 OCR 示例和轻量快捷功能 |
|
||||
|
||||
## 主窗口区域
|
||||
## 目标路由
|
||||
|
||||
主窗口当前由 `Main/Index.vue` 组织以下区域:
|
||||
| 路由 | 页面 | 职责 |
|
||||
| --- | --- | --- |
|
||||
| `#/login` | 登录页 | 本地固定账号登录或真实后端登录 |
|
||||
| `#/dashboard` | 工作台 | 展示 P0 统计指标和最近任务 |
|
||||
| `#/business/image-optimizer` | 商品图片 AI 优化 | 创建优化任务、查看任务列表、状态、结果和失败原因 |
|
||||
| `#/logs/audit` | 审计日志 | 查询用户操作记录 |
|
||||
| `#/logs/app` | 运行日志 | 查询系统错误和排错信息 |
|
||||
| `#/statistics` | 数据统计 | 查看趋势、成功率、耗时和失败任务 |
|
||||
| `#/settings` | 设置中心 | 主题、语言、窗口、快捷键、数据目录、日志策略 |
|
||||
| `#/components` | 组件示例 | 输入框、多选框、下拉框、多行文本、表格、筛选、分页 |
|
||||
| `#/about` | 关于 | 应用版本、运行环境和文档入口 |
|
||||
|
||||
- Dashboard:概览。
|
||||
- General:通用设置。
|
||||
- Shortcut:快捷键设置。
|
||||
- Tags:标签相关展示。
|
||||
- About:关于信息。
|
||||
## 主窗口布局
|
||||
|
||||
目标主窗口使用三段式布局:
|
||||
|
||||
- 侧边导航:模块入口。
|
||||
- 顶部区域:当前用户、运行状态、快捷动作。
|
||||
- 内容区:路由页面,填满剩余空间。
|
||||
|
||||
Windows 10+ 是主要体验目标。主窗口是否默认最大化需要通过任务确认,但内容区必须能稳定填满空余区域,不能只占左上角小块。
|
||||
|
||||
## 页面规则
|
||||
|
||||
- 新增页面必须先确认是否属于主窗口长期功能,还是第二窗口轻量功能。
|
||||
- 主窗口应优先使用可维护的设置布局,不做营销式首页。
|
||||
- 第二窗口保持小而聚焦,不承载复杂流程。
|
||||
- 新增页面必须先确认属于模板能力、业务样例还是开发者示例。
|
||||
- 主业务页面放在主窗口,不放在第二窗口。
|
||||
- 第二窗口保持轻量快捷功能,不承载长期复杂业务流程。
|
||||
- 路由变化必须同步本文和相关任务验收。
|
||||
|
||||
+23
@@ -29,3 +29,26 @@
|
||||
- `npm install` 报告 3 个 moderate audit findings,本次文档任务未处理依赖审计。
|
||||
- 前端构建提示 Browserslist 数据过期。
|
||||
- Vite 提示生产 chunk 大于 500 kB。
|
||||
|
||||
### 校准为可复用桌面应用模板
|
||||
|
||||
- 任务:根据项目愿景,把文档从基础 Wails 工程调整为 Windows-first、可扩展到其他平台的可复用桌面应用模板。
|
||||
- 决策:
|
||||
- 模板核心模块包括应用壳、设置、登录、主业务、操作日志、数据统计和常用组件示例。
|
||||
- 第一批业务样例使用“电商商品图片 AI 优化”。
|
||||
- 登录设计为本地固定账号 provider 和真实后端 provider 两种路径。
|
||||
- 操作日志分为审计日志和运行日志,分别服务审计和排错。
|
||||
- 第一批统计指标为今日处理图片数、AI 优化成功率、平均处理耗时、失败任务数、今日操作日志数、最近 7 天处理趋势。
|
||||
- 结果:更新 README、AGENTS、愿景、需求、技术栈、架构、编码规则、任务看板、API、路由、当前状态、方法地图和质量文档。
|
||||
- 验证:
|
||||
- 旧定位关键词搜索通过,未发现旧定位残留。
|
||||
- `git diff --check` 通过。
|
||||
- `.\init.ps1` 通过。
|
||||
- 脚本内 `npm install` 通过。
|
||||
- 脚本内 `go test ./...` 通过。
|
||||
- 脚本内 `cd frontend && npm run build` 通过。
|
||||
- 脚本内 `go build -o bin\cmbone.exe .` 通过。
|
||||
- 非阻塞警告:
|
||||
- `npm install` 仍报告 3 个 moderate audit findings。
|
||||
- 前端构建仍提示 Browserslist 数据过期。
|
||||
- Vite 仍提示生产 chunk 大于 500 kB。
|
||||
|
||||
Reference in New Issue
Block a user