25 KiB
25 KiB
执行流水
记录已经完成的任务、验证命令、结果和关键决策。任务完成必须有可执行证据,不只写“已完成”。
2026-07-08
基线整理
- 任务:从
SuiDemo迁移并整理为cmboneWails v3 项目。 - 结果:完成项目结构整理、README 维护、
.gitignore更新和初始提交。 - 已知验证:
go test ./...通过。cd frontend && npm run build通过。go build -o bin/cmbone.exe .通过。- 启动
bin/cmbone.exe后 Wails/WebView2 可初始化并加载前端资源。
接入 Harness Coding 文档
- 任务:参考
D:\github\harness_coding_docs的模板,在本项目生成 Harness Coding 文档。 - 决策:保留模板的
AGENTS.md、docs/00-ai-start-here.md、任务看板、当前状态、质量清单和初始化脚本结构;内容改为本项目真实技术栈和命令。 - 结果:新增仓库级 agent 入口、文档导航、需求/架构/API/路由/质量/任务文档和
init.ps1/init.sh。 - 验证:
.\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。
校准为可复用桌面应用模板
- 任务:根据项目愿景,把文档从基础 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。
确定 Windows-first 窗口与布局策略
- 任务:落地
T-010,明确主窗口、页面根容器、内容区和第二窗口的布局策略。 - 决策:
- 主窗口默认不最大化。
- 主窗口初始尺寸为
1280x800,最小尺寸为1024x720。 - 主窗口启动时居中,并允许用户调整大小。
- 页面根容器使用
width: 100%和height: 100vh。 - 主布局内部使用 flex 或 grid 填满窗口。
- 阅读型内容保留最大宽度;列表、仪表盘、设置页自适应拉伸。
- 保存窗口尺寸和最大化状态作为后续增强任务,不阻塞主布局。
- 第二窗口保持小窗,不参与最大化和尺寸恢复逻辑。
- 结果:更新
docs/06-tasks.md、docs/routes.md、docs/04-architecture.md、docs/02-requirements.md、docs/00-ai-start-here.md、docs/current-state.md和docs/quality-document.md。 - 验证:
- 旧 T-010 / 最大化策略相关临时表述搜索通过,未发现残留。
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。
实现主窗口启动参数与根布局策略
- 任务:实现
T-011,把已确定的主窗口与布局策略落到代码。 - 结果:
- Go 侧主窗口设置为初始
1280x800、最小1024x720、居中、可调整大小、正常窗口状态。 - 第二窗口继续保持
340x320小窗。 - 前端
html、body、#app和应用根容器撑满窗口并隐藏外层滚动。 - 主窗口侧边栏、顶部栏和内容区使用 flex 填满窗口。
- Dashboard、General、Tags 等现有页面补充了宽度和最小尺寸约束。
- 根路由保留为主窗口入口,不再自动跳转到第二窗口。
- Go 侧主窗口设置为初始
- 验证:
.\init.ps1通过。go test ./...通过。cd frontend && npm run build通过。go build -o bin\cmbone.exe .通过。bin\cmbone.exe启动 6 秒 smoke 通过。
- 非阻塞警告:
npm install仍报告 3 个 moderate audit findings。- 前端构建仍提示 Browserslist 数据过期。
- Vite 仍提示生产 chunk 大于 500 kB。
添加 Windows Wails 快捷脚本
- 任务:完成
T-034,新增一行 bat 脚本运行 Wails dev 和 build 命令。 - 结果:
- 新增
dev.bat,切到项目根目录,通过go env GOPATH把 Go bin 加入当前进程 PATH,并从9245开始选择空闲端口运行wails3 dev。 - 新增
build.bat,切到项目根目录,通过go env GOPATH把 Go bin 加入当前进程 PATH 并运行wails3 build。 - 补齐
build/windows/wails.exe.manifest和build/windows/info.json,满足 Windows syso 生成步骤。 wails3 build按当前 CLI 重新生成frontend/bindings,当前绑定文件形态为.js。- 更新 README、技术栈、API、当前状态和任务看板。
- 新增
- 验证:
wails3.exe version通过,版本为v3.0.0-alpha.9。- 使用 bat 中同样 PATH 逻辑执行
wails3 dev -help通过。 cmd /c build.bat通过。.\init.ps1通过。git diff --check通过。
- 修复记录:
- 用户反馈
dev.bat没有 GUI 窗口后,复现发现原因是 Vite 端口9245被占用,Wails dev 在前端启动阶段失败。 dev.bat已改为先切到项目根目录,再从9245开始选择空闲端口运行wails3 dev。- 修复后
dev.bat已进入windows:run,连接前端 dev server,并加载 WebView 资源。 build.bat已改为先切到项目根目录,避免从其他目录运行时找不到项目配置。
- 用户反馈
- 非阻塞警告:
wails3 build提示wails3 build是wails3 task的 alias。npm install仍报告 3 个 moderate audit findings。- 前端构建仍提示 Browserslist 数据过期。
- Vite 仍提示生产 chunk 大于 500 kB。
修复 dev.bat GUI 启动等待过长
- 任务:用户反馈
dev.bat仍然看不到 GUI 后,继续排查 Windows dev 启动链路。 - 发现:
- 清理旧的无窗口
bin/cmbone.exe残留进程后,dev.bat可以进入windows:run。 - GUI 不是完全无法创建,而是开发启动链路先执行
vue-tsc && vite build --minify false --mode development,窗口要等该步骤完成后才出现。 - 窗口枚举确认主窗口可见,标题为
main,第二窗口保持隐藏。
- 清理旧的无窗口
- 结果:
frontend/package.json新增typecheck脚本。build:dev改为只执行快速 Vite dev 构建,避免开发启动时被vue-tsc长时间阻塞。npm run build仍保留vue-tsc,提交前完整质量门禁不变。- 修复
App.vue的ConfigProvider导入和第二窗口 OCR 卡片的TransitionGroupkey 警告。
- 验证:
go test ./...通过。cd frontend && npm run typecheck通过。cd frontend && npm run build:dev通过,Vite dev 构建约 1 秒完成。cd frontend && npm run build通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。dev.bat烟测通过,进入windows:run后拉起bin/cmbone.exe,窗口枚举显示主窗口main可见,第二窗口second保持隐藏。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。npm install仍报告 3 个 moderate audit findings。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
搭建主应用路由骨架
- 任务:完成
T-012,让login、dashboard、image-optimizer、logs、statistics、settings、components路由可访问。 - 结果:
- 新增
frontend/src/layouts/MainLayout.vue,主窗口由侧边导航、顶部窗口区和路由内容区组成。 - 新增
frontend/src/components/template/ModulePageShell.vue,复用模块标题、状态和摘要卡片。 - 新增
frontend/src/modules/auth/LoginPage.vue、dashboard/DashboardPage.vue、image-optimizer/ImageOptimizerPage.vue、logs/LogsPage.vue、statistics/StatisticsPage.vue、settings/SettingsPage.vue、components-demo/ComponentsDemoPage.vue。 frontend/src/router/index.ts切换为 hash 路由骨架,/#/重定向到/#/dashboard,/#/second继续用于第二窗口。/#/business/image-optimizer、/#/logs/audit、/#/logs/app暂时重定向到当前主入口。- 更新路由、架构、方法地图、当前状态和任务看板文档。
- 新增
- 验证:
cd frontend && npm run typecheck通过。cd frontend && npm run build通过。cd frontend && npm run build:dev通过。go test ./...通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。dev.bat烟测通过,主窗口main可见,日志显示加载frontend/src/layouts/MainLayout.vue和frontend/src/modules/dashboard/DashboardPage.vue。
- 非阻塞警告:
- 并行运行
npm run build:dev和go test/go build会因为frontend/dist被重写导致 Go embed 读取旧 hash 文件失败;正确做法是前端构建完成后再运行 Go 命令。 dev.bat日志仍有SetProcessDpiAwarenessContext failed ... Access is denied,不影响窗口创建和页面加载。- Browserslist 数据过期、Vite chunk 体积警告和
wails3 buildalias 警告仍存在。
- 并行运行
实现登录 provider 边界
- 任务:完成
T-013,支持本地固定账号 provider,预留 remote provider,账号密码不写死在前端,登录事件写审计日志。 - 结果:
- 新增
internal/services/auth_service.go,提供AuthService、LocalAuthProvider和RemoteAuthProvider。 - 新增
internal/models/auth.go,提供AuthSession和AuthProviderOption前端绑定模型。 - SQLite 迁移新增
auth_sessions和audit_logs,并初始化本地演示账号配置。 main.go注册AuthService,并重新生成 Wails.jsbindings。- 登录页通过
AuthService.Login登录,Provider 列表来自后端,前端不保存固定账号密码。 - 主布局读取当前 session,并在侧边栏底部展示登录状态。
- 新增
- 验证:
go test ./...通过,覆盖本地登录成功、登录失败审计、退出和 remote provider 预留错误。cd frontend && npm run typecheck通过。cd frontend && npm run build通过。cd frontend && npm run build:dev通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过,并重新生成 Wails.jsbindings。dev.bat烟测通过,主窗口可见,日志显示加载authservice.js并调用AuthService.GetCurrentSession。
- 默认本地演示账号:
- 用户名:
admin - 密码:
admin123 - 密码以后端配置的 salt + SHA-256 hash 保存,不写入前端页面。
- 用户名:
- 非阻塞警告:
dev.bat日志仍有SetProcessDpiAwarenessContext failed ... Access is denied,不影响窗口创建和页面加载。- Browserslist 数据过期、Vite chunk 体积警告和
wails3 buildalias 警告仍存在。
收敛设置模块 schema
- 任务:完成
T-014,让主题、语言、窗口行为、快捷键、数据目录和日志策略都有统一配置定义和默认值。 - 结果:
- 新增
internal/models/settings.go,定义AppSettingGroup、AppSettingDefinition和AppSettingOption。 - 新增
internal/services/settings_schema.go,集中定义设置 key、类型、默认值、说明、选项和只读策略,并由 schema 生成appconfig初始化 SQL。 AppConfigService新增GetSettingsSchema,返回分组、当前值和默认值。SetAppConfig对 schema 已知项执行 select、boolean、number 和只读校验。- 设置页
/#/settings展示后端统一 schema,主题设置改为读写theme.mode。 - 重新生成 Wails
.jsbindings。
- 新增
- 覆盖的配置分组:
- 外观与语言:
theme.mode、language。 - 窗口行为:
window.start_state、window.width、window.height、window.remember_state。 - 快捷键:
shortcut.open_second_window、shortcut.open_main_window,只读展示,实际更新仍走HotkeyService。 - 数据目录:
data.root_mode、data.custom_directory。 - 日志策略:
logs.level、logs.audit_retention_days、logs.app_retention_days。 - 登录:
auth.provider和本地演示账号 hash 配置。
- 外观与语言:
- 验证:
go test ./...通过。cd frontend && npm run typecheck通过。cd frontend && npm run build通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过,并重新生成 Wails.jsbindings。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
持久化窗口尺寸和最大化状态
- 任务:完成
T-015,保存主窗口尺寸和最大化状态,下次启动恢复用户上次选择,第二窗口不参与该逻辑。 - 结果:
- 新增
internal/services/window_state.go,集中处理主窗口状态读取、恢复和写回。 - 主窗口启动时读取
window.width、window.height、window.start_state和window.remember_state。 - 主窗口 resize、maximize、restore 和 closing 时保存普通尺寸和最大化状态。
window.remember_state默认值调整为true,关闭后默认恢复用户上次选择。- 补充旧默认值迁移,把 T-014 旧描述下的
window.remember_state=false升级为true。 - 第二窗口仍固定为
340x320,没有注册窗口状态持久化逻辑。 - 新增窗口状态配置单元测试。
- 新增
- 验证:
go test ./...通过。cd frontend && npm run build通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
建立商品图片 AI 优化任务模型
- 任务:完成
T-020,新增image_tasks、image_task_results迁移和基础测试,并支持创建模拟任务。 - 结果:
- 新增
internal/models/image_task.go,定义图片任务输入、过滤器、任务、结果和详情模型。 - 新增
internal/services/image_optimization_service.go,提供CreateTask、ListTasks、GetTask和CancelTask。 - SQLite 迁移新增
image_tasks、image_task_results和基础索引。 CreateTask当前使用本地模拟 provider,立即写入成功任务和结果记录。main.go注册ImageOptimizationService。- 重新生成 Wails
.jsbindings,新增frontend/bindings/cmbone/internal/services/imageoptimizationservice.js。
- 新增
- 验证:
go test ./...通过。go build -o bin\cmbone.exe .通过。cd frontend && npm run build通过。cmd /c build.bat通过。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
实现审计日志与运行日志边界
- 任务:完成
T-021,审计日志和运行日志分开;登录、设置变更、任务创建、任务失败可记录。 - 结果:
- 新增
internal/models/log.go,定义审计日志过滤器、运行日志和运行日志过滤器。 - 新增
internal/services/log_service.go,提供AuditLogService.Record/List和AppLogService.Record/List。 - SQLite 迁移新增
app_logs和日志查询索引。 - 登录审计改为复用统一审计写入 helper。
- 设置变更会记录
settings.update审计;自动窗口状态保存不会写审计。 - 图片任务创建会记录
image_task.create审计;创建失败和服务错误会写app_logs。 main.go注册AuditLogService和AppLogService。- 重新生成 Wails
.jsbindings,新增auditlogservice.js和applogservice.js。
- 新增
- 验证:
go test ./...通过。go build -o bin\cmbone.exe .通过。cd frontend && npm run build通过。cmd /c build.bat通过。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
实现 P0 数据统计
- 任务:完成
T-022,今日处理图片数、成功率、平均耗时、失败数、今日操作日志数、7 天趋势可查询。 - 结果:
- 新增
internal/models/metrics.go,定义DashboardMetrics和DailyMetric。 - 新增
internal/services/metrics_service.go,提供MetricsService.GetDashboardMetrics/GetProcessingTrend。 - 统计按本机本地自然日计算,并用 UTC 字符串匹配现有
created_at。 - SQLite 迁移新增
image_tasks(created_at)和audit_logs(created_at)查询索引。 main.go注册MetricsService。- 重新生成 Wails
.jsbindings,新增metricsservice.js。
- 新增
- 验证:
go test ./...通过。cd frontend && npm run build通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。
- 非阻塞警告:
- 当前 PowerShell 会话 PATH 没有 Go bin,直接运行
wails3 generate bindings会找不到命令;已按项目脚本方式临时补 PATH 后生成绑定。 cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
- 当前 PowerShell 会话 PATH 没有 Go bin,直接运行
实现商品图片 AI 优化页面
- 任务:完成
T-023,上传/选择图片、任务列表、状态、结果预览、失败提示路径可用。 - 结果:
frontend/src/modules/image-optimizer/ImageOptimizerPage.vue接入ImageOptimizationServicebindings。- 页面支持选择图片、手动输入图片路径、选择优化类型和创建模拟任务。
- 页面支持按状态和优化类型筛选任务,展示任务编号、图片路径、类型、状态、耗时和创建时间。
- 页面支持查看任务详情,展示原图/结果占位预览、输出路径、前后文件大小和失败原因。
- WebView 文件选择器不返回绝对路径时,页面提示用户粘贴图片绝对路径。
- 验证:
cd frontend && npm run build通过。go test ./...通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
建立常用组件示例页
- 任务:完成
T-030,输入框、多选框、下拉框、多行文本、表格、筛选、分页、状态标签有可运行示例。 - 结果:
frontend/src/modules/components-demo/ComponentsDemoPage.vue从静态骨架改为可交互示例。- 表单区支持输入框、多选框、下拉框、多行文本,并实时展示当前值。
- 表格区支持关键字、分类、状态筛选。
- 表格底部支持分页,状态列支持可用、草稿、阻塞三类状态标签。
- 验证:
cd frontend && npm run build通过。go test ./...通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
文档化 Wails bindings 生成流程
- 任务:完成
T-031,README 或技术栈文档说明wails3 generate bindings的使用、失败处理和版本要求。 - 结果:
- README 新增
Wails Bindings章节。 docs/03-tech-stack.md新增Wails Bindings 生成流程章节。- 明确固定版本、生成时机、生成命令、失败处理、提交要求和验证命令。
- README 新增
- 验证:
git diff --check通过。
- 非阻塞警告:
- 文档任务未改运行代码,未重复执行构建。
补充 Windows 打包验证文档
- 任务:完成
T-032,wails3 package前置条件、输出目录和常见失败处理写入 README 或 docs。 - 结果:
- 新增
docs/windows-packaging.md。 - README 和
docs/03-tech-stack.md已链接 Windows 打包验证文档。 - 文档明确默认 NSIS 打包路径、
makensis前置条件、bin/cmbone-amd64-installer.exe输出目录、安装包验证清单和常见失败处理。 - 文档明确当前项目没有
wails.json,MSIX 暂不作为验收路径。
- 新增
- 验证:
$env:Path += ";$(go env GOPATH)\bin"; wails3 package -help通过。Get-Command makensis未找到命令,已写入文档风险。git diff --check通过。
- 非阻塞警告:
- 文档任务未改运行代码。
- 本机缺少 NSIS
makensis,未强跑wails3 package。
完成模板 smoke 清单
- 任务:完成
T-033,登录、设置、业务样例、日志、统计、组件示例、托盘、热键都按清单验证并记录结果。 - 结果:
- 新增
docs/smoke-checklist.md。 - 清单记录登录、设置、业务样例、日志、统计、组件示例、托盘、热键的验证方式和结果。
- 托盘记录为代码路径检查 + 启动 smoke 通过,菜单点击建议桌面人工复核。
- 新增
- 验证:
go test ./...通过。cd frontend && npm run build通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。- 启动
bin\cmbone.exe后读取到主窗口标题main,进程未提前退出。 - 自动发送默认
Alt+P后,可见窗口从main变为second, main。
- 非阻塞警告:
- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 本机缺少 NSIS
makensis,未执行安装包打包 smoke。
创建 ec 分支并启动电商场景
- 任务:新建
ec分支,同步到 Git 服务,切换到ec分支,开始电商场景应用开发。 - 结果:
- 已从当前代码创建
ec分支并推送到origin/ec。 - 新增
frontend/src/modules/products/ProductCenterPage.vue。 - 新增
/#/products路由和主导航“商品中心”。 - 商品中心支持商品草稿、SKU、类目、渠道、售价、库存、上架状态、图片状态、筛选、分页和图片优化入口。
- 新增
docs/ecommerce-scenario.md,记录电商场景边界和后续任务。
- 已从当前代码创建
- 验证:
cd frontend && npm run build通过。go test ./...通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。
落地主窗口最大化黑边修复任务
- 任务:新增
T-035,修复主窗口最大化黑边与布局填充。 - 验收:
- 点击右上角最大化后窗口占满 Windows 可用区域。
- 主窗口背景、根容器和主布局铺满。
- 侧边导航贴齐左边,内容区填满剩余区域。
- 不出现左右黑边,恢复窗口后布局正常。
- 验证:
git diff --check通过。
完成主窗口最大化黑边修复
- 任务:完成
T-035,修复主窗口最大化黑边与布局填充。 - 结果:
- Go 侧为主窗口设置浅色背景,避免 WebView 外围区域显示默认黑底。
- 前端根节点和应用根容器统一使用
100%宽高、100vh最小高度和明暗主题背景。 - 主布局由
h-screen调整为h-full min-h-screen,最大化和恢复窗口时都跟随可用区域填充。
- 验证:
cd frontend && npm run build通过。go test ./...通过。go build -o bin\cmbone.exe .通过。cmd /c build.bat通过。- 启动
bin\cmbone.exe后程序化最大化主窗口,左右边缘采样11264个像素,纯黑像素数为0。
- 非阻塞警告:
cmd /c build.bat仍提示wails3 build是wails3 task的 alias。- 前端构建仍提示 Browserslist 数据过期和 chunk 大小警告。