wangjia
|
5b9262a166
|
docs(design): 移动端落地收尾——CONTRACT 台账入表 + 实现计划 HTML 阅读版登记
- CONTRACT 块4:移动壳/我的/授权/盘点入验收表(同步·golden);通知两屏登记二期、
建单两屏登记拍板不落地;「移动愿景原型」小节改记 2026-07-04 已落地;
授权面板代码先行行更新为公共 license_panel.dart
- docs/plans/mobile-screens-implementation.html:实现计划阅读版(Stage0/四包/合流验收),
登记 docs/index.html「实现计划」分类
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-04 12:23:27 +08:00 |
|
wangjia
|
24123eb93c
|
feat(client): App 内在线购买/续费授权(管理员支付宝下单+到账轮询)
- 新增套餐目录 license_plans.dart(标准/高级 × 月付/年付,与官网 checkout 一致)
- license 模型/仓库新增 PurchaseOrder/PurchaseStatusInfo 与下单、查单接口
- 系统设置授权面板:管理员显示「在线购买 / 续费」按钮,弹窗选套餐→
外部浏览器打开支付宝收银台→3s 轮询到账→自动刷新授权并展示新到期日
- 用户手册(docs.md + user-manual.html)同步补充在线购买入口说明
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
|
2026-07-03 21:57:03 +08:00 |
|
wangjia
|
b856f5fec8
|
docs: 用户/开发手册 HTML 版、db-schema 补 license_purchases、CLAUDE.md 文档地图、pay 对接指南
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
|
2026-07-03 20:40:21 +08:00 |
|
wangjia
|
85a6eb9150
|
docs: 定价重设计原型同步(stock-in.js 双模式/详情三列)+ CLAUDE.md 定价口径节 + db-schema/CONTRACT 更新
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
|
2026-07-03 12:44:22 +08:00 |
|
wangjia
|
d5b11c0943
|
docs: 发版前评审/安全审计报告、迁移 runbook、CLAUDE.md 表格口径更新
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
|
2026-07-03 09:58:30 +08:00 |
|
wangjia
|
2ad893fb40
|
docs: 出入库单打印排版方案(6 种黑白样式 HTML + PDF)
参考真实发票/送货单产出 6 种黑白排版供选型,已登记 docs 索引。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-26 18:10:19 +08:00 |
|
wangjia
|
21aa2523b7
|
docs: 暂估价→确认进价 设计方案(HTML)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-23 20:07:50 +08:00 |
|
wangjia
|
2e941fdb5f
|
docs: 退单功能交互原型(order-return-prototype.html)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZ4DskSRKsSiheQonFtQvx
|
2026-06-21 22:17:02 +08:00 |
|
wangjia
|
dcb1d7c44c
|
docs: 更新项目总览(product=序列号模型/API/三条发版线) + CLAUDE.md 数据模型铁律
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZ4DskSRKsSiheQonFtQvx
|
2026-06-21 21:24:41 +08:00 |
|
wangjia
|
f955391830
|
docs: license-design 增补 v2 时长兑换券模型说明
顶部新增 v2 节,标注 v1 的 Ed25519 token 方案已废弃,记录兑换券
模型/数据表/Redeem 流程/与 v1 差异;运行时降级 phase 两版共用。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-19 12:14:35 +08:00 |
|
wangjia
|
51c81fd943
|
docs: 会话安全方案文档 + 本地测试脚本
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-19 07:34:07 +08:00 |
|
wangjia
|
48e282dd97
|
feat(devops): macOS 构建接入 Developer ID 签名 + 公证
- compile-macos.sh:flutter build 后 codesign(hardened runtime + timestamp
+ Release.entitlements)→ notarytool 公证(复用 App Store Connect API key)
→ stapler staple → 重新打包,产出已签名+公证+stapled 的 .app
- 强制策略:缺 MACOS_DEVELOPER_ID_CERT_P12_BASE64 / APPSTORE_API_KEY_P8_BASE64
时在 flutter build 前 fail-fast,绝不产出未签名包
- deploy-client.yml:build-macos 步骤注入证书与 API key secrets
- 新增 docs/macos-signing.md:Developer ID Application 证书创建与 secret 配置
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-17 12:56:08 +08:00 |
|
wangjia
|
aa7099ba94
|
feat(devops): 发版拆分为 client/site/server 三条独立流水线
将单一 CI/CD 流水线拆成三条互不影响的发布流水线,各有 tag 前缀、独立版本
序列与独立 CHANGELOG:
- client(client-v*):Flutter 全平台 + version.yaml 自更新清单
- site(site-v*):web/ Eleventy 营销站,不含 web 版 app
- server(server-v*):backend Go 服务 + 共享基建 nginx/systemd
新增 3 个 workflow(deploy-client/site/server.yml)替换 deploy.yml;CI 脚本
按 part 拆分为 compile-/release-/deploy-{client,site,server}.sh,抽出公共函数
lib-forgejo.sh;compile-{macos,android,ios,windows}.sh 改去 client-v 前缀;
manual.yml 按前缀路由回滚。
跨流水线解耦:version.yaml 归 client,后端每请求实时读取(不重启、不触发
server 流水线);官网下载页的版本徽章/下载链接/更新日志时间线运行时经
/api/v1/public/release 动态拉取(API 不可达回退构建时静态内容)。为此一次性
扩展后端 changelog 字段(version.go/public.go)与 download.njk 动态渲染。
CHANGELOG.md 重命名为 CHANGELOG-client.md,新增 CHANGELOG-site/server.md;
重写 /release 命令为 /release <part> [version];同步更新 CLAUDE.md 与部署文档。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-17 08:21:28 +08:00 |
|
wangjia
|
36564571fa
|
chore: 补提测试修复、新增测试工具和设计文档
- fix(test): 同步 listInventory 签名(补 series/spec 参数)
- test(backend): 新增 import_parse_test.go
- chore(backend): 新增 cmd/test_xls 调试工具
- docs: UI 筛选组件设计规范、Gemini 项目配置
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-15 11:17:35 +08:00 |
|
wangjia
|
47b3c89460
|
feat(web): 新增更新日志、服务条款、隐私政策页面;关于页更新日志链接修正
- web/dist/changelog/ 版本历史页,收录 v1.0.0–v1.0.29 全部发版记录
- web/dist/terms/ 服务条款页(付费/授权/数据/免责等)
- web/dist/privacy/ 隐私政策页(数据收集/使用/共享/用户权利等)
- 全站页脚补充 更新日志、服务条款、隐私政策三个链接
- about_screen 「更新日志」按钮链接由 /downloads/ 改为 /changelog/
- 新增 backend/cmd/issue 工具,用于签发指定门店的授权码 token
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-10 22:56:22 +08:00 |
|
wangjia
|
8925646eef
|
docs(architecture): 授权信息功能完整方案设计文档
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-09 23:53:35 +08:00 |
|
wangjia
|
99f34a6223
|
chore(web): 删除 scan.html,清理 /scan/ nginx 路由和文档
scan.html 从未被实际触发——二维码 URL 格式为 /product/<uuid>,
由 Flutter Web PublicProductScreen 处理,scan.html 是孤立死页。
- 删除 web/scan.html
- 移除 nginx-jiu.conf 中 /scan/ location 块
- 更新文档路由表(/scan/<id> → /product/<uuid>)
- 标记 todo #4 完成
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-08 02:07:19 +08:00 |
|
wangjia
|
480ce836bb
|
chore: release v1.0.18
Deploy / build-linux-web (push) Successful in 53s
Deploy / build-windows (push) Successful in 1m48s
Deploy / build-macos (push) Successful in 1m17s
Deploy / build-android (push) Successful in 4m13s
Deploy / build-ios (push) Successful in 9s
Deploy / release-deploy (push) Successful in 1m37s
移动端响应式适配(抽屉导航/列表卡片/弹窗自适应)、Android 正式签名与 APK 发布、
iOS(TestFlight) 工程与 CI、多平台构建流水线、相关文档同步。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-07 07:55:33 +08:00 |
|
wangjia
|
93878511e5
|
docs: 补充 SSH remote 地址
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-25 00:51:12 +08:00 |
|
wangjia
|
503ee7372e
|
chore: git remote 迁移至 git.51yanmei.com,新增 Android 平台支持
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-25 00:49:22 +08:00 |
|
wangjia
|
9f94cc97b7
|
fix(test): 修复测试数据库 schema 和 Flutter 测试与屏幕重构的兼容性
- backend/testutil/setup.go: SQLite shops 表补充 business_hours 列
- stock_in_screen_test: 入库管理双 Tab 重构后,draft/pending 测试改为先切换到「入库审核」Tab
- stock_out_insufficient_stock_flow_test: Inventory 构造参数 productUnit→unit,补充必填 id
- inventory_repository_test: mock 数据改为平铺字段格式,补充必填 id
- docs: 新增 NAS + Gitea 部署文档(Runner 设置、Shadowrocket 中继说明)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-24 10:48:21 +08:00 |
|
wangjia
|
c1ed81dfab
|
feat: 财务结清、酒行信息、库存备注编辑、标签溯源、入库必填校验
后端
- 新增 shop handler:GET/PUT /shop/info(管理员权限)
- 新增 finance CloseByRef:按单据 ref_type+ref_id 结清账款
- 新增 inventory UpdateRemark:PUT /inventory/:id/remark
- 入库/出库审批自动生成财务应付/应收记录(去除金额>0限制)
- 种子数据 S001-S003 补充真实门店信息
前端
- 设置页新增「酒行信息」Tab,管理员可编辑门店名称/地址/电话/负责人
- 入库单列表新增结清按钮(含确认弹窗),出库单同步
- 入库表单:规格、系列、生产日期、供应商、商品名称改为提交必填
- 入库/出库列表新增入库时间、出库时间、创建时间列
- 商品标签标题改为读取 shop 表门店名,扫码文案改为「扫码溯源 · TRACE」
- 标签页脚显示门店地址和电话(从 API 读取,不再依赖编译时 dart-define)
- 库存备注支持点击编辑,超4字截断显示+Hover展示全文
- ApiClient 新增 patch() 方法(已改用 PUT 规避 CORS)
文档
- 新增 docs/user-manual.md 完整用户操作手册(12章)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-23 14:05:41 +08:00 |
|
wangjia
|
f5b28dd09a
|
docs: 同步更新项目上下文和规则文档
- project.md:补充 AppConfig、FilterableColumnHeader、license/update/connectivity
provider、批次追踪页面、GET /version 接口、并发安全规则、dev.sh stop 命令、
scripts/.logs gitignore、表格 UI 规范(hover + 列头筛选 + 客户端筛选模式)
- CLAUDE.md:新增前端 URL 配置、平台判断、表格列头筛选、权限中间件、
并发安全(FOR UPDATE)等强制规则
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-18 19:13:25 +08:00 |
|
wangjia
|
66e54af8c6
|
feat: 商品追踪页面 + 出库提交库存校验
后端:
- feat(backend): 重命名 Batches→Products 接口,新增库存状态(在售/已卖出)和买家信息
- feat(backend): 出库单创建/提交时校验仓库库存,不足则返回明确错误信息
- fix(backend): 出库创建 status 判断逻辑修复(空值默认 draft)
前端:
- feat(client): 批次追踪改为商品追踪,新增状态列(在售/已卖出)和买家/时间列
- fix(client): 无批次号时显示"无批次"而非空
- refactor(client): BatchRecord → ProductTrackingRecord,repository 接口更新
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:26:42 +08:00 |
|
wangjia
|
5f8e7cfa7e
|
docs: 补充 Flutter 热重载快捷键说明
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-08 08:47:57 +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
|
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
|
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
|
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 |
|