wangjia
|
62900c4bd8
|
fix(db): 修复 seed 中文乱码
mysql 命令加 --default-character-set=utf8mb4,
SQL 文件头加 SET NAMES utf8mb4
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-08 08:36:09 +08:00 |
|
wangjia
|
dc6e68154b
|
fix(client): 修复启动时 token 刷新导致 Dio adapter closed 崩溃
apiClientProvider 改用 select(isLoggedIn),token refresh 不触发 provider
重建,避免旧 Dio 被 close 后仍执行 fetch。同时在拦截器内原地更新
_dio.options.headers,保证后续请求使用新 token。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-08 08:34:29 +08:00 |
|
wangjia
|
14e285e756
|
feat(db): H001 改名 S001,新增 S002(空库存版)
S001: 含完整入库/出库/库存历史数据
S002: 基础数据相同(商品/供应商/仓库),入库/出库/库存均为空,模拟新门店
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-07 23:43:21 +08:00 |
|
wangjia
|
92bcad086b
|
docs: 补充 seed 命令写入的测试账号信息
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-07 23:30:03 +08:00 |
|
wangjia
|
098fba38f2
|
docs: 更新项目文档与开发规范
修正 hotel_id→shop_id 错误引用,补充 dev.sh 脚本用法、
测试架构说明、种子数据规范,整理目录结构为当前实际状态。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-07 23:07:16 +08:00 |
|
wangjia
|
39fe1da800
|
feat(db): 将种子数据改为 SQL 命令形式
新增 backend/seeds/H001.sql,通过 sh scripts/dev.sh seed H001
经由 docker exec 执行,无需本地 mysql 客户端。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-07 23:02:15 +08:00 |
|
wangjia
|
902c3c3046
|
feat(db): 补全测试种子数据所有字段
入库单补全供应商/仓库,出库单补全客户/仓库,商品补全价格/条码/规格,
往来单位补全地址/银行账户/信用额度,财务记录关联已审核出库单。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-07 22:43:00 +08:00 |
|
wangjia
|
754275cbd6
|
fix(backend): 修复日期字段解析失败导致创建单据报错
新增 model.Date 类型,支持前端传入的纯日期格式 YYYY-MM-DD:
- UnmarshalJSON 优先解析 YYYY-MM-DD,回退支持 RFC3339
- MarshalJSON 输出 YYYY-MM-DD
- Value/Scan 实现 GORM MySQL DATE 列读写
- StockInOrder/StockOutOrder/InventoryCheck 的 OrderDate/CheckDate 改用 Date 类型
feat(client): SelectionArea 全局开启文字可选中复制
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-07 22:29:15 +08:00 |
|
wangjia
|
d717fb3735
|
feat(client): 全模块 API 对接 + 修复登陆跳转 + 菜单 UI 优化
API 对接:
- 入库/出库/库存/财务/往来单位/基础数据全部对接后端 REST API
- 新增 repositories、providers、models 层,统一分层架构
- auth 从 flutter_secure_storage 迁移到 shared_preferences
登陆跳转修复:
- 将 _RouterNotifier 提取为独立 Riverpod provider,appRouterProvider
使用 ref.read 避免依赖链导致 router 重建后跳回 /login
- redirect 函数新增 initialized 守卫,防止 auth 未恢复时误重定向
- 添加调试日志(Router/Auth/ApiClient)定位 401 触发的 logout 链路
退出菜单 UI:
- 去掉 ListTile,改用 Row + 自定义 padding,文字左对齐
- MouseRegion + AnimatedContainer 实现 hover 高亮(普通项蓝底/退出红底)
- 菜单圆角 6px,elevation 8,分割线高度 1px
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-07 22:20:28 +08:00 |
|
wangjia
|
31ea370cea
|
fix(backend): JWT config mapstructure tag 修复 + 模型从 hotel 重构为 shop
- 修复 JWTConfig 缺少 mapstructure tag 导致 access_expire_min 解析为 0,
token 签发即过期,所有 API 请求返回 401
- 全部 config struct 补齐 mapstructure tag(secret/dsn/hmac_secret 等)
- 模型层从 hotel/HotelID 统一重命名为 shop/ShopID
- 删除旧 migrations(001-004),新增 001_init 综合迁移文件
- 更新 schema.sql、testutil、handler/service/model 相关引用
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-07 22:20:12 +08:00 |
|
wangjia
|
37112d6599
|
feat(client): 登录历史下拉、macOS 兼容修复、UI 优化
- 替换 flutter_secure_storage 为 shared_preferences,解决 macOS Keychain 签名报错
- 登录页门店编号/用户名支持历史下拉(最多5条,LRU 淘汰),使用 Overlay + CompositedTransformFollower 实现浮层
- logout 仅删除 auth token,保留登录历史
- AppShell 时钟抽为独立 _ClockWidget,避免每秒 setState 导致 TabBarView 叠影
- ShellRoute 子路由改用 NoTransitionPage,消除切换页面时的过渡动画叠影
- 新增 auth_state_test、auth_repository_test、login_screen_test 共 14 个单元/Widget 测试
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-05 01:21:40 +08:00 |
|
wangjia
|
cc687ae0c3
|
feat(client): 登录模块对接后端 API
- auth_state: 增加 refreshToken 字段 + flutter_secure_storage 持久化
- api_client: 增加 401 自动 refresh + retry 拦截器
- auth_repository: 封装 POST /api/v1/auth/login 调用,错误信息本地化
- login_screen: 增加门店编号字段,调真实 API,行内错误展示
- main: 启动时 restore 持久化登录态,避免每次重启都要重新登录
- 修复 app_shell: hotelName → hotelNo
- 修复 widget_test: 移除失效的占位测试
测试账号:门店编号 H001 / 用户名 admin / 密码 password123
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-04 23:18:57 +08:00 |
|
wangjia
|
7849f6e7e5
|
chore: 添加 macOS/Web 平台支持 + 修复编译错误 + 开发环境文档
- 修复 CardTheme → CardThemeData(Flutter 3.41 API 变更)
- 修复 finance_screen 缺少 FormDialog import
- 修复工具栏 Row overflow(添加横向滚动)
- flutter create --platforms=macos,web 生成平台配置
- 添加 docs/dev-setup.md:完整开发环境配置指南
含 Go/Flutter/Docker 安装、已知 macOS 26 兼容问题及解决方案
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-04 13:36:39 +08:00 |
|
wangjia
|
76ab19ea47
|
feat(client): 初版 Flutter UI 框架,仿照参考截图实现
- 蓝色顶栏(#1565C0)+ 深蓝侧边栏(#0D47A1),含折叠/展开
- 底部状态栏:门店编号、登录用户、登录时间、实时时钟、版本号
- 登录页:居中卡片,支持密码显示/隐藏
- 入库单列表:筛选/搜索/日期选择/分页,三个 Tab(入库单/查询/审核)
- 新建入库单:基本信息 + 商品明细动态增删,实时计算合计金额
- 出库单列表:同入库单风格
- 库存查询:4 张统计卡片 + 颜色高亮缺货/预警行,库存预警 Tab
- 往来单位、财务、商品、系统设置(用户/仓库/编号规则/系统参数)
- 使用 Riverpod 状态管理 + go_router 路由 + Dio HTTP
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-04 12:51:41 +08:00 |
|
wangjia
|
d6397083c0
|
feat(agents): 新增 UI 设计师 Agent + Figma MCP + 设计存档 Skills
UI 设计师 Agent (.claude/agents/ui-designer.md):
- 自动判断设计复杂度
- 简单变更:直接输出文字规范,flutter-coder 立即实现
- 复杂设计:输出 Figma 设计需求文档并暂停,等用户确认设计稿
- 包含完整视觉规范(颜色、字体、间距、状态标签)
Figma MCP 配置 (.mcp.json):
- 接入 Figma 官方 MCP Server (https://mcp.figma.com/mcp)
- 支持读取设计文件、组件、Token
Skills (.claude/skills/):
- /archive-design:将确认上线的设计存档到 docs/design/archive/
含 Figma 链接、设计决策、组件清单、版本历史
- /design-review:对比 Figma 设计稿与 Flutter 实现,输出还原度报告
标注颜色/间距/布局差异,分必须修复和建议调整两级
更新 CLAUDE.md:
- 工作流中加入 ui-designer(架构后、编码前)
- 上线前运行 /design-review,上线后运行 /archive-design
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-04 09:20:58 +08:00 |
|
wangjia
|
f8524bfa3f
|
feat(agents): 多 Agent 协作体系
新增 10 个专职 Agent 定义文件(.claude/agents/):
- requirements-analyst: 需求分析,输出用户故事和验收标准
- architect: 技术方案设计,模块划分和接口定义
- api-designer: RESTful API 规范,混合格式文档
- db-designer: MySQL 表设计和迁移脚本
- backend-coder: Go 后端实现,严格分层架构
- flutter-coder: Flutter 跨端 UI 实现
- test-engineer: 自动化测试,只写测试不改业务代码
- linter: 代码风格检查和自动修复
- code-reviewer: 代码质量审查,输出审查报告
- security-auditor: 安全漏洞扫描,重点多租户隔离
- devops: Dockerfile 和 CI/CD 流水线
- sre: 故障诊断和运维 Runbook
- doc-writer: API 文档和用户手册
新增 CLAUDE.md Orchestrator 规则:
- 自动判断任务类型并选择 Agent 组合
- 并行/串行调度规则(api+db 并行,backend+flutter 并行)
- Agent 边界规则(每个 Agent 只能写自己职责范围的文件)
- 文件传递 + 短链式反馈的混合通信协议
- Git 提交规范和质量门禁
新增 docs/context/project.md:
- 所有 Agent 的共享项目上下文
- 技术栈、目录结构、核心业务规则、已实现接口列表
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-04 08:47:36 +08:00 |
|
wangjia
|
7a09d1537c
|
test: 后端自动化测试套件
Service 单元测试(SQLite in-memory):
- auth: 登录成功/失败/禁用账号,token 刷新
- stock: 入库审核、出库审核(含库存不足)、单号生成
- license: 激活、设备绑定验证、过期检测
Handler 集成测试(httptest + SQLite):
- auth: 登录 API 成功/401 场景
- product: CRUD 完整流程 + hotel_id 隔离验证
- stock_in: 创建→提交→审核完整流程
- stock_out: 完整流程 + 库存不足 400
- inventory: 库存查询/过滤/盘点创建
- warehouse: CRUD
覆盖率:service 90.4%,handler 56.1%
共 50 个测试用例,全部 PASS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-04 07:24:14 +08:00 |
|
wangjia
|
0e42f0e417
|
init: 后端框架脚手架 (Go + Gin + GORM + MySQL)
- 项目目录结构:backend/ deploy/ schema/ migrations/
- 数据库 Schema:所有建表 SQL,含 hotel_id 多租户隔离
- Go 后端:config、model、handler、service、middleware、router
- 认证:账号密码登录 + JWT(Access + Refresh Token)
- 许可证:HMAC-SHA256 激活码生成 + 设备绑定验证
- 业务模块:商品、仓库、往来单位、入库、出库、库存、盘点
- 库存事务:入库/出库审核时原子更新库存 + 流水记录
- 数据导入:Excel/CSV 批量导入商品、往来单位
- Docker Compose:本地 MySQL + Adminer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-04 01:24:53 +08:00 |
|