Commit Graph

613 Commits

Author SHA1 Message Date
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
wangjia 7f713c4c96 feat(backend): pay webhook 升 v2 事件模型——event_type 分发、amount_minor 核对、nonce 防重放
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:47:55 +08:00
wangjia f5a70d08cc test(backend): 补下单后查单失败金额留 0 的兜底分支用例
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:38:28 +08:00
wangjia a5d7a1dc00 feat(backend): pay 下单/查单切 v2 契约——sku 直用 biz_code、session 多态响应、金额 int64 分
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:33:51 +08:00
wangjia bc183ab7df feat(backend): license_purchases 增 amount_minor/currency/pay_url/renewed_to 列 + 存量回填(pay v2 金额口径)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:26:59 +08:00
wangjia ceabc7977b docs: pay v2 改造计划双产物落库(.md 真相源 + HTML 阅读版)+ 索引登记
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:23:26 +08:00
wangjia 1669ce6602 docs: 设计真相源铁律升级——原型与真实代码 100% 一致、前端改动原型先行
- CLAUDE.md:废除 2026-07-04「不追求全量同步」三态治理,改动必须先改原型、同提交落地;漂移即 bug
- CONTRACT.md:真相源口径同步;授权面板/购买卡移出代码先行清单(已回填);授权管理独立屏三 tab 台账登记

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:19:13 +08:00
wangjia 13b7274dbd feat(design): 原型三域回填对齐真实端 + 授权管理提升独立一级屏(三 tab,桌面+移动)
三域回填(原型=真实 100% 一致铁律首轮集中对齐):
- 库存域:多选筛选 chip(N 项摘要+×单清)/抽屉打印标签/成本按角色标注/移动三态筛选入口/共享抽屉生产日期行
- 设置授权关于域:授权信息三格横排/购买卡三阶段同构/iOS 合规双态/隐私同意弹窗/注销账号入口/客服邮箱统一/关于页按钮规格
- 日期组件域:扁平滚轮面板(输入框+滚轮同宽居中)/范围起止双窗格并排锚定下拉/移动 sheet 纵排,.wheel-* 提升 atoms 并登记

授权管理提升(design-first,评审通过):
- 新增 license.html 独立一级屏(侧边栏「系统」组):授权信息/在线购买续费/订单管理三 tab
- m-license.html 同构三 tab;订单管理 tab=license_purchases 流水(KPI/筛选/表格·卡流/详情)
- settings 子导航摘除授权项;iOS 合规态隐藏购买 tab;index 登记更新

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:19:03 +08:00
wangjia adfa0ca34c fix(design): 原型 serve 热重载 SSE 改短轮询——多标签 SSE 常驻连接占满 Chrome 同域 6 连接上限致整站卡死
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:18:48 +08:00
wangjia 658df690f6 docs: 历史导入出库价格错列修复复盘 runbook(2026-07-10)
Design Source Checks / design-source (push) Successful in 47s
根因/修复设计/执行结果/遗留脏数据清单/回滚方式,登记 docs/index.html

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 17:29:19 +08:00
wangjia e19c498dba fix(backend): 历史导入出库明细价格错列——售价误落成本列,新增修复工具
Design Source Checks / design-source (push) Successful in 39s
根因:旧系统出库明细「单价/金额」是售价口径(应收侧),import-history 误落
cost_price/cost_amount,sale_price 留 0(整单显示待定价);单头 sale_total
却按售价口径正确落库,明细与单头矛盾。实证:ZXZ027628 出库"成本"14300=售价,
真实进价 13600 在库存/入库侧。

- import-history:出库明细「单价/金额」改落 sale_price/sale_amount(成本留 0 待回查)
- 新增 cmd/fix-history-prices 一次性修复线上数据:售价归位 + 按商品编号
  回查真实进价(①入库明细 ②库存快照 ③商品进价)+ profit_total 同口径重算;
  sale_total 不动(应收不变);默认 dry-run,--apply 落库,幂等可重跑
- 测试:四种成本来源/dry-run 回滚/幂等/非占位明细不波及/利润应收口径

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 16:55:03 +08:00
wangjia 39a2f14e0b chore: release client-v1.1.8
Design Source Checks / design-source (push) Successful in 56s
Deploy Client / build-client-web (push) Successful in 1m11s
Deploy Client / build-macos (push) Successful in 2m47s
Deploy Client / build-android (push) Successful in 9m55s
Deploy Client / build-ios (push) Successful in 4m6s
Deploy Client / build-windows (push) Successful in 2m47s
Deploy Client / release-deploy-client (push) Successful in 1m30s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
client-v1.1.8
2026-07-10 10:18:38 +08:00
wangjia 2c25bbfd85 feat(client): 库存移动卡片品名后缀生产日期 + 商品抽屉生产日期行
- 原型先行(L1):mobile-atoms 新增 .mc-nm .mc-date 原子(xs muted mono 左距8),
  index.html 登记,m-inventory 卡片模板与详情 sheet 同步补生产日期
- MCard 新增 nmSuffix 插槽镜像 .mc-date;库存窄屏卡片品名后缀生产日期小字
- Product 模型补 production_date(只读侧,不进 toJson);商品抽屉信息区
  新增「生产日期」行(分类后、当前库存前,mono)
- 重生成库存移动 golden ×6(inventory_list_mobile / m_inventory 三主题)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 09:56:43 +08:00
wangjia b20be72155 docs: 重画系统架构图——单脊柱布局替代五线乌鸦脚,补 Redis 节点
Design Source Checks / design-source (push) Successful in 53s
客户端五端收进分组条(单一竖线入 nginx),标签白底不再压线,
nginx 泳道排满不留空带,MySQL/Redis 并排(jiu_redis 上线后架构图欠账)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 22:27:28 +08:00
wangjia fb8337b156 ci: retrigger checks——pangolin runner 误挂 mac 标签抢跑已摘除
Design Source Checks / design-source (push) Successful in 1m2s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 19:12:59 +08:00
wangjia 05203a9b5b refactor: 原型迁移 .superpowers/prototype → design/prototype(与 CONTRACT 同目录)
Design Source Checks / design-source (push) Failing after 14m23s
- git mv 全目录(历史保留);.gitignore 收敛为整个 .superpowers/ 忽略
- 全仓 16 处引用同步(CI checks.yml / l1-sync / screens.mjs / hooks /
  CLAUDE.md / CONTRACT / SSR 模板注释 / docs / web 注释)
- 修 pre-commit 路径正则残留;5180 评审服务已切新路径
- 验证:check-ds 12 道 / l1-sync 6 道 / fidelity 抽查全过

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 18:47:31 +08:00
wangjia d1b7e8e2e9 refactor(client): 前端体系治理——漏斗退役/老卡片标 legacy/fidelity 收阈/文档口径修正
- DsFilterHeader 删除(筛选已全部上移工具栏 chips,屏内零引用)
- mobile_list_card 标 LEGACY 禁新用(6 屏迁移 MCard 登记 todo #13)
- fidelity 阈值按 2026-07-07 实测收紧:一刀切 8% → 各屏实测最大残差+2pp
  (4%~7%),新阈下 36 屏×主题全过;proto 基准同步重摄(含库存改版)
- CLAUDE.md 修正:表格筛选口径(工具栏 chips+列头仅排序)、响应式导航
  (Drawer 退役→底部 5 tab,修文字滞后)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 18:24:48 +08:00
wangjia 21a4a8cab7 ci: 补三道缺口闸——CI 强制 flutter test + SSR 模板 token 同源 + 徽章图标映射同集
- checks.yml 加 flutter test(DoD 写了但此前无闸,golden 回归全靠自觉;
  本地 /release client 门禁同步加了 flutter test,该文件 gitignore 不入库)
- check-l1-sync ⑤:backend 公开页模板内联 token 值须与原型 tokens.css
  对应主题块一致(模板自包含手拷值,此前仅注释约定零校验;已注入漂移自证)
- check-l1-sync ⑥:BADGE_ICON ↔ kStatusIcons 状态词同集(此前两端手工转录)
- 顺修 gen_tokens 旧路径注释(client/lib/core/theme/tool/ → client/tool/)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 18:24:34 +08:00
wangjia 8912b8ef7f docs: 前端开发全景文档——设计系统/工具链/各道闸/规则单一入口
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 17:51:07 +08:00
wangjia 33987faa9b chore(scripts): local_test.sh 过滤锁屏 iPhone 的 xcodebuild 握手噪音
DTDK passcode protected 每 3s 刷屏(构建 generic/platform=iOS 不需真机),
stderr 定向过滤堆栈噪音,真错误仍透传。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 17:31:27 +08:00
wangjia 7328d85912 chore: release client-v1.1.7
Design Source Checks / design-source (push) Successful in 18s
Deploy Client / build-client-web (push) Successful in 55s
Deploy Client / build-windows (push) Successful in 2m11s
Deploy Client / build-macos (push) Successful in 2m57s
Deploy Client / build-android (push) Successful in 1m40s
Deploy Client / build-ios (push) Successful in 3m9s
Deploy Client / release-deploy-client (push) Successful in 1m33s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
client-v1.1.7
2026-07-07 17:11:04 +08:00
wangjia d7782cc048 chore: release server-v1.1.11
Design Source Checks / design-source (push) Successful in 17s
Deploy Server / release-deploy-server (push) Successful in 1m2s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
server-v1.1.11
2026-07-07 17:10:28 +08:00
wangjia dd447b8b32 chore(prototype): 库存原型搜索合一——编码并入商品名搜索框(与 Flutter 实现对齐)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 17:08:09 +08:00
wangjia e0d9b8ab09 feat(client): 库存筛选全部上移工具栏(参照出库管理),列头漏斗退役
- 工具栏:搜索 + 规格/系列/仓库 多选 chip(值/N 项 摘要 + × 单清)+ 状态
  单选 chip + 重置;列头只留 5 列排序箭头
- 原型 inventory.html 同步:toolbar 三 chip + openDimFilter、COLS 状态去
  filter、clearFilters/chip 值渲染跟进
- 桌面库存 golden 重录 ×3

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-07 17:01:54 +08:00