From 47d3c653c6806be78b152ee0605b9e01342752ca Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Wed, 8 Jul 2026 15:45:01 +0800 Subject: [PATCH] docs: align vision with reusable desktop template --- AGENTS.md | 17 ++++- README.md | 8 ++- docs/00-ai-start-here.md | 44 ++++++++----- docs/01-vision.md | 62 +++++++++++++----- docs/02-requirements.md | 72 ++++++++++++++++---- docs/03-tech-stack.md | 19 ++++++ docs/04-architecture.md | 138 +++++++++++++++++++++++++++++++++++---- docs/05-coding-rules.md | 4 ++ docs/06-tasks.md | 32 +++++---- docs/api.md | 73 +++++++++++++++++++-- docs/current-state.md | 21 ++++-- docs/method-map.md | 22 +++++++ docs/quality-document.md | 30 ++++++--- docs/routes.md | 40 ++++++++---- progress.md | 23 +++++++ 15 files changed, 493 insertions(+), 112 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 770189e..185075d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 .`。 ## 风格 diff --git a/README.md b/README.md index bea5b8b..a70e463 100644 --- a/README.md +++ b/README.md @@ -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 文档 diff --git a/docs/00-ai-start-here.md b/docs/00-ai-start-here.md index e58cfa1..2758d76 100644 --- a/docs/00-ai-start-here.md +++ b/docs/00-ai-start-here.md @@ -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)。 diff --git a/docs/01-vision.md b/docs/01-vision.md index 03e65da..4b93cb2 100644 --- a/docs/01-vision.md +++ b/docs/01-vision.md @@ -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 边界。 - 提交历史能看出每次改动的意图和验证结果。 diff --git a/docs/02-requirements.md b/docs/02-requirements.md index abc80a6..4b904bf 100644 --- a/docs/02-requirements.md +++ b/docs/02-requirements.md @@ -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`、本地数据库或用户配置。 +- 依赖升级必须单独开任务。 diff --git a/docs/03-tech-stack.md b/docs/03-tech-stack.md index 5d4cf14..024efd5 100644 --- a/docs/03-tech-stack.md +++ b/docs/03-tech-stack.md @@ -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 或图表后端。 diff --git a/docs/04-architecture.md b/docs/04-architecture.md index 9348697..6a4040b 100644 --- a/docs/04-architecture.md +++ b/docs/04-architecture.md @@ -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,警告不等于失败,但需要避免无节制增加前端体积。 diff --git a/docs/05-coding-rules.md b/docs/05-coding-rules.md index 5623abc..7d13347 100644 --- a/docs/05-coding-rules.md +++ b/docs/05-coding-rules.md @@ -25,6 +25,8 @@ - 后端服务方法签名变化必须同步前端 bindings。 - 前端 UI 文案走现有 i18n 体系,避免新增硬编码中文/英文。 - 新依赖必须说明必要性;能用标准库或现有依赖解决时不新增。 +- 登录、AI、日志和统计能力必须经过 service / provider 边界,不写死在页面组件里。 +- 常用输入框、多选框、下拉框、多行文本、表格等优先使用 Ant Design Vue,不自研基础控件。 ## 模块规则 @@ -33,6 +35,8 @@ - 平台差异放在 `platform/`。 - 前端 bindings 不承载业务逻辑。 - 通用 UI 组件保持小而直接,不为未来需求提前抽象。 +- 审计日志记录用户动作,运行日志记录系统错误,两类日志不要混用。 +- 数据统计只做任务要求的指标,不提前做复杂报表平台。 ## 验证要求 diff --git a/docs/06-tasks.md b/docs/06-tasks.md index 4e75f81..a52f8a8 100644 --- a/docs/06-tasks.md +++ b/docs/06-tasks.md @@ -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 的接口形态。 +- 评估本地数据库备份、恢复和清理策略。 diff --git a/docs/api.md b/docs/api.md index e137e9a..300b7f6 100644 --- a/docs/api.md +++ b/docs/api.md @@ -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` diff --git a/docs/current-state.md b/docs/current-state.md index 06d1e28..89235db 100644 --- a/docs/current-state.md +++ b/docs/current-state.md @@ -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 diff --git a/docs/method-map.md b/docs/method-map.md index 1c3b6c3..d83096d 100644 --- a/docs/method-map.md +++ b/docs/method-map.md @@ -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/` | 常用组件示例 | diff --git a/docs/quality-document.md b/docs/quality-document.md index 3443106..67c4580 100644 --- a/docs/quality-document.md +++ b/docs/quality-document.md @@ -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 生成流程补充完整操作说明。 diff --git a/docs/routes.md b/docs/routes.md index 19fdadf..bae85f6 100644 --- a/docs/routes.md +++ b/docs/routes.md @@ -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+ 是主要体验目标。主窗口是否默认最大化需要通过任务确认,但内容区必须能稳定填满空余区域,不能只占左上角小块。 ## 页面规则 -- 新增页面必须先确认是否属于主窗口长期功能,还是第二窗口轻量功能。 -- 主窗口应优先使用可维护的设置布局,不做营销式首页。 -- 第二窗口保持小而聚焦,不承载复杂流程。 +- 新增页面必须先确认属于模板能力、业务样例还是开发者示例。 +- 主业务页面放在主窗口,不放在第二窗口。 +- 第二窗口保持轻量快捷功能,不承载长期复杂业务流程。 - 路由变化必须同步本文和相关任务验收。 diff --git a/progress.md b/progress.md index b41bbca..93a3e90 100644 --- a/progress.md +++ b/progress.md @@ -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。