Commit Graph

636 Commits

Author SHA1 Message Date
wangjia 3d1402bec8 ci(deploy-client): 改手动触发(去 tag 自动) + Windows 合并为单节点
Design Source Checks / design-source (push) Successful in 4m35s
- 去掉 push tags 自动触发,只留 workflow_dispatch(打 tag 只作标记,发版手动 Run workflow)
  ——弱网+gitea tag 事件飘忽下反复出重复 run/卡死,改手动可控
- build-windows + build-windows-ci 合并为单个 build-windows(runs-on 表达式选 runner +
  step if 决定家里现编/mac 拉 github),DAG 只显示一个节点

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 19:53:17 +08:00
wangjia f9ba81ae43 fix(golden): 冻结应用时钟消除时间依赖非确定性(product_detail/license/inventory_check)
golden 失败根因:商品详情屏用实时 DateTime.now() 算「近30天出库」,随真实时间推移
6月流水掉出30天窗口→渲染变化→对不上。license/inventory_check 同理(剩余天数/盘点日期)。
修复:
- product_detail_screen: DateTime.now() → appNow()(可注入时钟)
- golden_harness: 所有 golden 渲染前冻结 appClock=2026-07-01 + tearDown 复位(ds-flow 钉死动态值)
- 重录 license_mobile / m_inventory_check 6 张 golden;product_detail 冻结后自动匹配无需改图
本地 flutter test test/golden/ 全 120 通过。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 19:53:17 +08:00
wangjia 067f21c273 release: 触发 client-v1.1.9 发版(稳定网络重发 #2)
Design Source Checks / design-source (push) Failing after 8m48s
Deploy Client / build-client-web (push) Failing after 4m30s
Deploy Client / build-macos (push) Has been skipped
Deploy Client / build-android (push) Has been skipped
Deploy Client / build-ios (push) Has been skipped
Deploy Client / build-windows-ci (push) Successful in 7m29s
Deploy Client / build-windows (push) Has been cancelled
Deploy Client / release-deploy-client (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 19:18:45 +08:00
wangjia aa4a3951f7 release: 触发 client-v1.1.9 发版(WiFi 稳定网络重发)
Design Source Checks / design-source (push) Failing after 1m59s
Deploy Client / build-client-web (push) Failing after 15m28s
Deploy Client / build-macos (push) Has been skipped
Deploy Client / build-android (push) Has been skipped
Deploy Client / build-ios (push) Has been skipped
Deploy Client / build-windows-ci (push) Failing after 1s
Deploy Client / build-windows (push) Has been cancelled
Deploy Client / release-deploy-client (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 10:41:15 +08:00
wangjia 5eec510f1e ci(windows): NAS 暂存设 continue-on-error(发版已从 GitHub 拉,NAS 仅最佳努力记录)
Design Source Checks / design-source (push) Failing after 4m4s
Deploy Client / build-client-web (push) Successful in 5m3s
Deploy Client / build-windows-ci (push) Successful in 4m57s
Deploy Client / build-macos (push) Failing after 4m38s
Deploy Client / build-android (push) Has been skipped
Deploy Client / build-ios (push) Has been skipped
Deploy Client / build-windows (push) Has been cancelled
Deploy Client / release-deploy-client (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 09:38:03 +08:00
wangjia 161dee17b1 ci(windows): 加 permissions contents:write——GITHUB_TOKEN 默认只读建不了 Release(403)
Design Source Checks / design-source (push) Failing after 5m48s
Deploy Client / build-macos (push) Successful in 8m50s
Deploy Client / build-client-web (push) Successful in 13m39s
Deploy Client / build-windows-ci (push) Successful in 4m34s
Deploy Client / build-android (push) Successful in 11m59s
Deploy Client / build-ios (push) Failing after 2m43s
Deploy Client / build-windows (push) Has been cancelled
Deploy Client / release-deploy-client (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 09:21:49 +08:00
wangjia c8eabe0596 ci(windows): Windows 包发版改从 GitHub Release 拉取(免 frps)
Design Source Checks / design-source (push) Failing after 5m2s
mac-runner off-LAN 时,从 NAS 经 ali frps 下载 26MB 太慢/易断(实测 ~220KB/s 且中途断)。
改为:windows.yml 额外发布到 GitHub Release winstage-v<版本>;deploy-client 的
build-windows-ci 从 github.com 拉(不过 frps)+ 重试断点续传 + 完整性校验。
需 gitea 密钥 GH_TOKEN(已设)。NAS 暂存保留作记录。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 09:13:50 +08:00
wangjia 03772542d2 docs(changelog): 1.1.9 发版说明
Design Source Checks / design-source (push) Failing after 11m21s
Deploy Client / build-client-web (push) Successful in 7m49s
Deploy Client / build-windows-ci (push) Failing after 5m10s
Deploy Client / build-macos (push) Successful in 12m17s
Deploy Client / build-ios (push) Has been cancelled
Deploy Client / build-windows (push) Has been cancelled
Deploy Client / release-deploy-client (push) Has been cancelled
Deploy Client / build-android (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
winstage-v1.1.9
2026-07-18 08:16:55 +08:00
wangjia 5cf8958313 feat(prototype): 登记支付状态图标 待支付/已支付/已关闭
Design Source Checks / design-source (push) Has been cancelled
ds-flow 原型单源:BADGE_ICON 补三个支付状态图标,先登记再供页面使用。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 07:53:53 +08:00
wangjia f6e326794e fix(backend): 出入库列表 Preload(Items) 供手机端卡片显示品项数
List 之前未 preload items,手机端 MCard sub 行拿不到 items.length。
入库进价对 operator 本就可见(客户端无条件展示+待定价逻辑依赖 costPrice),
故 stock_in 不加脱敏;stock_out 侧成本敏感,List 已有 stripStockOutCost 兜底,安全。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 07:53:53 +08:00
wangjia fcd8733679 fix(ci): fetch 用 browser_download_url 下载(assets API 返回元数据非二进制)+ 大小校验
Design Source Checks / design-source (push) Has been cancelled
测试发现 Gitea /releases/{id}/assets/{id} 端点返回附件元数据 JSON(260B)而非二进制。
改用 browser_download_url 直链下载,并加 <1MB 拒绝发版的完整性校验。
端到端验证:winstage-v9.9.9 → 拉到完整 25M PE32 安装器;版本不匹配硬失败。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
winstage-v1.0.52
2026-07-18 07:30:38 +08:00
wangjia 0a54ded445 ci(windows): GitHub 云构建 Windows 安装器暂存 NAS + 发版可选来源(home/github)
家里 Windows runner 关机时的备用构建源。
- windows.yml: 构建 Inno 安装器(复用 compile-windows.sh)→ 暂存 NAS gitea winstage-v<版本>
- deploy-client.yml: build-windows 加 home/github 开关(参数 windows_source 优先,变量 WINDOWS_SOURCE 兜底),新增 build-windows-ci 从 NAS 按版本拉取
- stage/fetch 脚本: 版本强匹配,拉不到硬失败

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-18 07:08:48 +08:00
wangjia fd654f21ac ci(windows): 构建注入生产后端 BASE_URL/PUBLIC_URL=https://jiu.51yanmei.com(原默认 localhost 连不上后端) 2026-07-16 04:03:13 +08:00
wangjia 32416e6983 ci: GitHub Actions windows-latest 构建 jiu client(flutter build windows + 打包 artifact) 2026-07-16 02:58:08 +08:00
wangjia 905e0700da docs: iOS 上架 runbook 补 ASC 商店文案备稿(副标题/描述/关键词/URL)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 06:54:03 +08:00
wangjia 1167a01c6a docs: iOS App Store 上架流程 runbook(备案-2A/保留 iPad/S003 演示门店已拍板)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 06:49:57 +08:00
wangjia c9936df780 feat(client): 关于页页脚改为 App 备案号-2A(工信部 App 备案 2026-07-15 下号,原型同步)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 06:49:50 +08:00
wangjia 737b1481a6 fix(client): 单实例「已在运行」提示框缺应用主题——DsButton 取 tokens 空指针闪退
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 05:58:43 +08:00
wangjia 3888cf2d65 feat(client): 慢请求监控(>500ms 记日志+上报);拆除列表 provider 的 _cache 失败兜底
- SlowRequestInterceptor:单次 API 调用超 500ms 即 debugPrint long-request
  日志并经 ErrorReporter 上报(error_type=slow_api,按 method+归一路径 5 分钟
  节流)。服务端 GIN 日志只见自身处理耗时,网络往返段只有客户端可观测。
- 拆除 10 个列表 provider 的 _cache 失败兜底:实测线上接口客户端视角典型
  50-120ms、最坏约 270ms(列表类全部 <500ms),失败静默端旧数据弊大于利
  (曾放大跨账号残留问题),改为明确进入错误态由用户重试。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 00:49:29 +08:00
wangjia 1723e480c1 fix(client): 订单管理打开自动重拉列表 + 订单时间 UTC 显示转本地时区
- 打开订单管理 tab 时 invalidate 重建列表 provider(保留旧值展示不闪屏),
  新下单/已删单不再需要手动刷新才同步
- license.dart 全部时间字段解析后 toLocal()(同 session.dart 惯例),
  修复订单创建/支付时间显示为 UTC(慢 8 小时)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 00:39:29 +08:00
wangjia b8567b0f4e fix(client): 切换账号显示上一账号数据——登录/登出按会话纪元重建 ProviderScope
张三登录后看到汤宇飞的订单列表(含已删行):业务 provider 的 notifier 实例
与 _cache 兜底缓存跨账号存活,拉取失败时把上一账号数据端给新账号(10 个
列表 provider 同款模式)。根治:会话纪元 sessionEpoch(Riverpod 体系外
ValueNotifier)作 ProviderScope 的 key,login/logout 后自增重建整棵状态树。
logout 的撤销会话 POST 改为不阻塞,确保清盘先于 scope 重建,防止新 scope
restore 读到旧 token 把上一账号登回来。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 00:39:18 +08:00
wangjia 858f24f74b fix(backend): license_purchases.pay_url 512→TEXT——支付宝网关 URL 超列宽导致下单 1406 失败
真单联调发现:pay v2 redirect payload.url 是支付宝网关完整签名 URL(2KB+),
回填 pay_url 报 Data too long,且残留 out_trade_no='' 行使重试撞唯一索引。
model + schema.sql + db-schema.html 三处同步,AutoMigrate 自动 ALTER。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 23:58:57 +08:00
wangjia 94a5f437a5 fix(client): 财务汇总下拉候选改全量往来单位并修占位叠词与表头垂直居中(验收反馈)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:10:11 +08:00
wangjia 4bd083f2eb fix(client): 财务汇总往来搜索改为表头下拉框形态(验收反馈)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:35:11 +08:00
wangjia edb85c88da feat(client): 财务应收应付汇总增加往来单位搜索(两端,原型同步)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:02:44 +08:00
wangjia 6069b390df docs(plans): 六项前端体验优化实现计划双产物入库并登记索引
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:23:26 +08:00
wangjia 04d5a53961 docs(design): 六项前端优化 CONTRACT 台账回填与手册同步
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:21:28 +08:00
wangjia 9f620e9fc7 test(client): 出入库状态多选语义与默认仓库填充回归用例
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:16:29 +08:00
wangjia f555b99565 feat(client): 新建出入库单默认填充默认仓库(两端,原型同步)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:16:29 +08:00
wangjia d4c5964932 feat(client): 出入库列表状态筛选改多选并默认草稿+待审核(两端,原型同步)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:16:29 +08:00
wangjia e499bbc842 test(client): 财务往来单位筛选交互与移动视口防裁剪回归用例
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:26:45 +08:00
wangjia a2aca2e7fc feat(client): 财务筛选增加往来单位并统一自定义时间组件(两端,原型同步)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:26:45 +08:00
wangjia 782cf057a3 fix(client): 出入库抽屉生产日期截取防空串崩溃
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:12:55 +08:00
wangjia 44c985e6b5 feat(client): 出入库单详情抽屉明细增加生产日期+批次号列(两端,抽屉加宽 660,原型同步)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 10:12:55 +08:00
wangjia 3721fe6006 feat(client): 库存列表批次号与生产日期列位对调(原型同步)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 09:42:52 +08:00
wangjia 7e020a04b3 feat(client): 库存商品抽屉增加供应商与批次号信息行(两端,原型同步)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 09:40:16 +08:00
wangjia 7a9f480ae3 feat(scripts): local_test.sh 增量构建(跳过无变化编译) + Android install -d 允许降级
- 增量构建:每平台记全源码指纹(client/ 下所有源文件内容 + 版本号 VER + 平台名,排除
  build/.dart_tool/ephemeral/.gradle/Pods 等生成物);产物在且指纹未变则跳过 flutter
  编译直接安装/启动。--force/-f 强制重编。指纹存 client/build/.local_test_fp_*(gitignore)。
- 三平台均先 fail-fast 设备检测再判断编译。
- Android 安装加 -d 允许 versionCode 降级(修 INSTALL_FAILED_VERSION_DOWNGRADE)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 12:55:53 +08:00
wangjia e6660614ce feat(scripts): local_test.sh 增加 --android——编译 APK 并装到 USB Android 设备
照 --ios 分支模式:flutter build apk --release(无 key.properties 时 Gradle 回退 debug
签名可本地安装)→ adb 检测已授权设备(awk 取状态=device 的首台,排除 unauthorized/offline,
adb 优先 PATH 回退常见 SDK 位置)→ install -r → monkey 拉起 com.yanmei.jiu。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 12:30:52 +08:00
wangjia 709e59b1b7 fix(scripts): local_test.sh --ios 检测不到已连 iPhone——设备状态匹配 connected
新版 Xcode devicectl 对 USB 直连并解锁的 iPhone 显示状态 'connected',脚本原来只筛
'available (paired)'(该状态在新版仅配对未直连的设备如 Apple Watch 才有),导致
'未检测到已配对 iPhone'。改为 grep iPhone 行 + 词匹配 connected|available(两版 Xcode
都收,-w 避免误命中 disconnected/unavailable)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 12:18:34 +08:00
wangjia 8216ee321f fix(scripts): local_test.sh 被 sh(POSIX 模式 bash) 调起报进程替换语法错误——首行加守卫重执行到普通 bash
macOS /bin/sh = bash --posix:设 BASH_VERSION 但禁用进程替换,line 56 的 2> >(grep ...)
在解析时即报 syntax error near unexpected token '>'。守卫检测 SHELLOPTS 含 posix 或非 bash
时 exec bash 重执行,honor 脚本文档里的 'sh scripts/local_test.sh' 用法。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 08:20:22 +08:00
wangjia 51c0cfda56 fix(client): 继续支付补 launchUrl 异常兜底 + 我的 hub 授权管理图标统一 shield
- license_orders_tab _continuePay 包 try/catch,打开失败出 toast 不静默
- me hub 授权管理图标 trendingUp→shield,与侧边栏一致;me golden ×3 同步更新

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 02:11:53 +08:00
wangjia 18b97d5d35 refactor(backend): 清理 settle 残单预查死代码块——入参金额直接回填,fail-closed 语义不变
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 01:31:39 +08:00
wangjia 3b5d84a7e3 docs: pay 对接指南升 v2 契约 + 授权管理屏文档同步 + db-schema 四新列
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 00:44:03 +08:00
wangjia 22e07613a1 feat(client): 授权管理独立一级屏——授权/购买续费/订单管理三 tab(桌面+移动)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 00:24:59 +08:00
wangjia 9fe1e2766f feat(client): 购买卡按 render_type 分发——redirect 外跳/qr 内嵌二维码/重选取消订单
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 23:46:19 +08:00
wangjia 179051a8fa feat(client): 购买模型/仓库切 pay v2 契约(render_type 多态 + 分金额 + 订单列表)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 23:34:21 +08:00
wangjia 45a43c20a4 fix(backend): 订单列表 user_name 在 real_name 为空时回退 username
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 23:27:24 +08:00
wangjia 7e99a7a7ee feat(backend): 授权订单列表接口——分页/筛选/汇总,支撑订单管理 tab
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 23:21:24 +08:00
wangjia 7e5a697f28 feat(backend): 购买单取消透传 pay v2 cancel
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:40:44 +08:00
wangjia f00f453d6f feat(backend): pay 查单兜底适配 v2 订单八态 + 残单补查移出行锁事务
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:34:34 +08:00