wangjia
|
71fc982bb2
|
chore: bump 1.0.72+73(优惠套餐 + 发版测自动更新)
ci-pangolin / Lint — shellcheck (pull_request) Successful in 12s
ci-pangolin / Redline Scan — 脱敏 (UI 文案) (pull_request) Successful in 28s
ci-pangolin / Cleartext Scan — Android 禁明文 (pull_request) Successful in 18s
ci-pangolin / OpenAPI Sync Check (pull_request) Successful in 46s
ci-pangolin / Portable SQL — 可移植性 (mysql/sqlite) (pull_request) Successful in 21s
ci-pangolin / Flutter — analyze + test (pull_request) Successful in 34s
ci-pangolin / Codegen Drift — token 生成物未漂移 (pull_request) Successful in 4s
ci-pangolin / DS-flow — 原型/跨端同源/代码色单源闸 (pull_request) Successful in 4s
ci-pangolin / Go — build + test (pull_request) Failing after 11s
ci-pangolin / E2E Smoke — L4 进程级端到端 (pull_request) Failing after 10s
ci-pangolin / Go — integration (mysql/redis testcontainers) (pull_request) Successful in 5m6s
ci-pangolin / Golden — 视觉回归 (全量:components/auth/desktop/tablet) (pull_request) Failing after 21s
Deploy Client / build-windows (push) Successful in 1m54s
Deploy Client / build-android (push) Successful in 2m0s
Deploy Client / build-macos (push) Successful in 3m37s
Deploy Client / build-ios (push) Successful in 4m56s
Deploy Client / release-deploy (push) Successful in 2m9s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
client-v1.0.72
|
2026-07-12 20:01:13 +08:00 |
|
wangjia
|
17d99acf62
|
feat(client/purchase): 全员优惠月付特殊卡片(¥6/$1,随渠道显价)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 19:34:07 +08:00 |
|
wangjia
|
7ac9fa40f0
|
feat(server/pay): catalog 加全员优惠月付 pro_month_promo(¥6/$1)+ Promo 标记
优惠档全员可见,客户端用特殊卡片展示;pay 侧需种同 biz_code 商品后方可真下单
(未种前 product_not_found→404,UI 先就绪)。catalog 测试更新为 4 档 + promo 断言。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 19:27:34 +08:00 |
|
wangjia
|
2d599f836d
|
chore(scripts): local_test.sh API_URL 支持 env 覆盖(发版烘生产域名)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 19:04:34 +08:00 |
|
wangjia
|
e5f831796f
|
chore: bump 1.0.71+72(PlansScreen删除 + Redeem 文案 + 过期单重新购买)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 18:58:09 +08:00 |
|
wangjia
|
41f42dc250
|
fix(client/orders): 过期单动作改「重新购买」(orderRebuy),不再用歧义的「继续支付」
过期单 pay 会话已失效,点击本质是重新下单;expired 与 canceled 同用 orderRebuy。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 18:56:01 +08:00 |
|
wangjia
|
04d5cbc11f
|
feat(l10n): 账户入口 redeemEntry 改「Redeem」(去掉「& buy」,购买已独立成购买套餐行)
6 语言:Redeem/兑换/コード引き換え/코드 등록/Активация/Canjear;account golden 重录。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 18:54:58 +08:00 |
|
wangjia
|
2416c943cb
|
refactor(client): 删除死代码 PlansScreen + NavView.plans + choosePlan l10n(Renew→Purchase 直达后无调用者)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 18:53:10 +08:00 |
|
wangjia
|
d0bd24bc4b
|
chore: bump 1.0.70+71(账户 IA 重构 + 订单过期态)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 18:44:02 +08:00 |
|
wangjia
|
8fba080d20
|
docs(pay-v2): IA 重构 + 订单过期态 落地验收记录(step5)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 18:32:24 +08:00 |
|
wangjia
|
0421c86099
|
test(golden): 重录 IA 漂移的 7 个 desktop golden(侧栏 Account + 账户页重排导致 shell 变化)
account/contact/devices/plans/redeem/servers/stats —— 均因 desktop_shell 侧栏加 Account 一级项 + account_page 重排,渲染变化,非 bug。full suite 232 全绿。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 18:31:56 +08:00 |
|
wangjia
|
73012ee03c
|
feat(client/orders): 订单列表/详情显示 expired 过期态
- _statusPill 函数加 'expired' => neutral 灰状态胶囊(复用 canceled 视觉档)
- actions() 函数让 expired 单复用 created 分支,显示「继续支付」按钮
- 对接后端 Task 0 返回的 status=='expired' + Task 2 的 t.orderStatusExpired
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 18:28:28 +08:00 |
|
wangjia
|
5cf42a64c8
|
feat(settings): 删购买/订单卡 + 归连接/外观/关于三组 + Web 链接下沉底部
购买套餐/我的订单入口已归 Account 页,设置页不再重复;设置页重组为
「连接」(开关组)/「外观」(语言+深色)/「关于」(协议/检查更新/版本+
Web 用户中心链接下沉底部)三组,标题走 l10n settingsGroupConn/Appearance/About。
新增 settings_ia_test.dart(TDD)+ 重录 desktop_settings golden。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
2026-07-12 18:10:37 +08:00 |
|
wangjia
|
44f22dcf52
|
fix(client/notif): 通知占位示例文案改英文(默认语言一致,避免英文 app 显中文)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 18:05:24 +08:00 |
|
wangjia
|
f5669c1a67
|
feat(notif): 通知占位屏 + 移动顶栏铃铛(Spec ③接口占位)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 18:01:07 +08:00 |
|
wangjia
|
dd3323add9
|
chore: 取消跟踪 local-l13-start.sh(本地联调脚本,含 throwaway 值,不入 git)+ gitignore
误由 Task5 fix 的 git add 扫入,回退。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 17:57:52 +08:00 |
|
wangjia
|
2d37ef1e7b
|
fix(client): NotificationBell.onTap 恢复 required 非空(对齐规范)
- notification_bell.dart: VoidCallback? → VoidCallback(字段非空)
- content_top_bar.dart: 在 null-guard 内用 onBell! 传给 NotificationBell
- flutter analyze: No issues found
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 17:57:02 +08:00 |
|
wangjia
|
df19629944
|
feat(shell): 桌面侧栏加 Account 一级项 + 顶栏通知铃铛 + invite/notifications 视图接线
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 17:51:48 +08:00 |
|
wangjia
|
b839c77712
|
feat(account): IA 重排+邀请入口+删偏好卡+设置/联系 formFactor 门控
账户页重排为:账户信息 → 购买套餐/我的订单/兑换码(三行合一) → 邀请好友(新增,
gift 图标+t.inviteEntry/inviteEntrySub,接 NavView.invite) → 设备(常显)/
设置/联系(仅 mobile,桌面侧栏已有同入口,formFactor 门控避免重复) → 退出。
删语言/主题/协议卡及仅供其用的 _LangSwitch/_PangolinSwitch(l10n getter 保留,
Settings 页仍用)。_NavRow 加可选 subtitle 用于邀请卡副标题。
新增 InviteScreen(client/lib/screens/invite_page.dart)占位屏:邀请码/链接卡
(可复制,值写死 PANGOLIN-DEMO)+ 奖励规则三条 + 我的奖励占位卡,顶部
TODO(spec-2) 标注接口点(邀请码/链接由后端签发,奖励进度来自 /v1/invite)。
顺带修复 desktop_shell.dart 非穷尽 switch 编译错误(NavView 加 invite 后未接线,
整个 client 目前无法编译);notifications 分支占位回落账户页,留给 Task 6 接线。
test/widget/account_ia_test.dart 新增桌面态 IA 结构断言(邀请入口存在/语言不在/
兑换在);account_desktop_nav_test.dart 同步去掉桌面态设置/联系两个失效断言
(改走桌面侧栏,非账户卡),加邀请入口断言。desktop/tablet 账户页 golden 重录。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 17:44:51 +08:00 |
|
wangjia
|
c520449002
|
refactor(contact): 渠道抽单源常量 + RedeemScreen 删去哪买引流卡(仅留兑换码)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 17:30:25 +08:00 |
|
wangjia
|
3a270cbeb0
|
feat(l10n): 邀请/通知/设置分组文案 ×6 语言(Spec ②③占位)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 17:25:30 +08:00 |
|
wangjia
|
c48ff034e2
|
feat(nav): NavView 加 invite/notifications + kAccountSubViews 收录 invite
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 17:21:30 +08:00 |
|
wangjia
|
b9e2f8c2da
|
feat(server/pay): 订单展示层过期态(created 超 TTL 显 expired,零迁移)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-12 17:18:02 +08:00 |
|
wangjia
|
a0367b37e5
|
docs(plan): IA 计划加 Task 0 订单过期态后端 + 前端 expired 处理 + 部署步骤
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 17:14:09 +08:00 |
|
wangjia
|
6f74c80025
|
docs(plan): 账户 IA 重构 Flutter 实现计划(8 任务,TDD,含 Spec ②③占位接口)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 17:07:08 +08:00 |
|
wangjia
|
040e715479
|
fix(prototype): 桌面内容视图宽度统一 600 居中(账户/设置/设备/订单/通知/邀请一致)
设置原全宽、账户/通知/邀请原 600 左对齐、订单/设备 600 居中 → 全部 600 居中,去除设备内联冗余(靠 account-view 类)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 17:07:08 +08:00 |
|
wangjia
|
576e9ee5a5
|
design(prototype): 设备⋮弹出菜单(重命名/强制退出/清除登录信息) + 设备管理页宽度收窄600居中
- 设备行 ⋮ 加弹出菜单(本机仅重命名/他机三项,清除为 danger),复用 .menu 原子,外部点击关闭
- 设备管理页内容 max-width:600 居中(对齐订单/账户页,不再全宽)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 17:01:28 +08:00 |
|
wangjia
|
18858b33d4
|
design(prototype): 设备管理改下钻页 + 桌面登录页注册表单切换
- 我的设备:账户页内联列表 → 一行入口(计数+chevron)→ 独立设备管理页/子屏(完整列表+⋮操作),对齐真实 DevicesScreen + IA spec
- 桌面登录静态帧:「没有账户?免费注册」→ 切换到注册表单(邮箱/密码/确认密码 + 已有账户?登录 返回)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 16:47:10 +08:00 |
|
wangjia
|
53426bd4c1
|
fix(ds): .plan-banner 窄宽度按钮换行 + 名字保底宽度(修 Renew/Upgrade 覆盖用户名)
pbn-row flex-wrap + pbn-info min-width:96px:窄容器下按钮换到下一行、
名字不再被挤成 me…;宽屏按钮仍靠右。容器驱动,桌面/移动/手机框一并生效。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 16:44:52 +08:00 |
|
wangjia
|
7700c43216
|
design(prototype): 设备超限整合为全窗口挡板 overlay + 演示语言控件改 6 语言下拉
- 设备超限从脱离主窗口的独立静态帧 → 盖满可交互窗口的根级 overlay(还原真实 client 登录后挡板),桌面+移动,演示控制触发
- 顶栏演示段 LANGUAGE 从中/EN 两档 seg → 6 语言 langsel 下拉(与 Settings 一致;非中英回退英文内容)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 16:37:21 +08:00 |
|
wangjia
|
6ff048967e
|
chore(prototype): 移除 setting-row 冗余 inline width(原子已带,防重复源)
|
2026-07-12 16:22:02 +08:00 |
|
wangjia
|
6f4be57ab8
|
fix(ds): .setting-row 加 box-sizing:border-box(width:100%+padding 出界修复)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 09:31:29 +08:00 |
|
wangjia
|
5002a4f35d
|
fix(ds): .setting-row 原子按钮安全化(border/background/width/text-align 重置)
作 <button> 用时浏览器默认粗边框穿透 → 账户卡各行显重黑边。原子内重置,
保留 border-bottom 细分隔线。单源修复,所有 setting-row-as-button 一并生效。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 09:27:21 +08:00 |
|
wangjia
|
6f5a805536
|
design(prototype): 渲染新 IA 视觉稿(桌面+移动)— 含 bell 图标单源 + 通知/邀请预留
- icons.js 加 bell(codegen→pangolin_icons.dart,L1 同集 59)
- 侧栏提 Account 为一级/顶栏通知铃铛/Account 重排(购买&订单&兑换 + 邀请好友)
- Settings 归三组(连接/外观/关于)+ Web 链接降级;Contact 单源;兑换码仅码
- 通知收件箱 + 邀请好友 占位屏(细节各自 Spec ②③)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 09:08:25 +08:00 |
|
wangjia
|
77a37fce12
|
docs(design): 账户/设置/联系 信息架构重构 Spec ①(去重+归位,含邀请/通知预留位)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 08:40:55 +08:00 |
|
wangjia
|
e51d9dce6a
|
fix(windows): 恢复 pangolin.iss(上个提交被坏 one-liner 清空)+ bump 1.0.69
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 07:27:14 +08:00 |
|
wangjia
|
48afe86475
|
fix(client): 设置页购买入口改为显示套餐(PurchaseScreen)而非兑换/去哪买链接
- 「购买套餐」→ PurchaseScreen(渠道 switch + 三档套餐 + 下单),不再进 RedeemScreen 的引流卡
- bump 1.0.69+70
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 07:24:18 +08:00 |
|
wangjia
|
a164490001
|
fix(client): 设置页兑换入口空 onTap 修复 + 新增我的订单入口(桌面侧栏 Settings 路径)
- settings_page 的「兑换&购买」行 onTap 之前是空占位 → 接上 open(redeem)
- 新增「我的订单」行 → open(orders)
- bump 1.0.68+69
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 07:15:37 +08:00 |
|
wangjia
|
8b4575181d
|
chore: bump 1.0.67+68(含订单/联系/收据布局修复,超越本地 1.0.66 干净升级)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 06:54:34 +08:00 |
|
wangjia
|
bcd3a0bbb1
|
design: 订单详情收据式布局重构(三屏一致)— 单卡+粘土条+撕裂线+去冗余
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 06:54:18 +08:00 |
|
wangjia
|
c3d32a476e
|
fix(client): 联系/购买渠道卡点击外部打开(修空 onTap)+ 桌面账户子导航复现测试
- channel_launch: @→t.me / 邮箱→mailto / 域名→https,外部打开
- 联系页(桌面)/联系&兑换子页(移动)渠道卡接上 onTap
- account_desktop_nav_test: 证明桌面设置/兑换/联系/订单导航正常(231 全绿)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 06:54:18 +08:00 |
|
wangjia
|
b30f472d90
|
fix(server/pay): 订单展示金额兜底 — 老单 amount_minor=0 回退档位展示价(按方式结算币种)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 06:54:18 +08:00 |
|
wangjia
|
ff91be928a
|
docs(pay-v2): 开发决策日志 step3-4(客户端落地 + 集成测试)
ci-pangolin / Lint — shellcheck (pull_request) Successful in 10s
ci-pangolin / Redline Scan — 脱敏 (UI 文案) (pull_request) Successful in 25s
ci-pangolin / Cleartext Scan — Android 禁明文 (pull_request) Successful in 16s
ci-pangolin / Portable SQL — 可移植性 (mysql/sqlite) (pull_request) Successful in 17s
ci-pangolin / OpenAPI Sync Check (pull_request) Successful in 57s
ci-pangolin / Flutter — analyze + test (pull_request) Successful in 37s
ci-pangolin / Codegen Drift — token 生成物未漂移 (pull_request) Successful in 4s
ci-pangolin / DS-flow — 原型/跨端同源/代码色单源闸 (pull_request) Successful in 3s
ci-pangolin / Go — build + test (pull_request) Failing after 12s
ci-pangolin / E2E Smoke — L4 进程级端到端 (pull_request) Failing after 11s
ci-pangolin / Go — integration (mysql/redis testcontainers) (pull_request) Failing after 4m49s
ci-pangolin / Golden — 视觉回归 (全量:components/auth/desktop/tablet) (pull_request) Failing after 20s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 00:07:51 +08:00 |
|
wangjia
|
272eca04ce
|
feat(client): pay v2 支付渠道 switch + 订单列表/详情端到端
购买/支付(Phase B):
- 新 SegSwitch 段控 widget(镜像 .segswitch 原子)
- 购买页重构:顶部支付渠道 switch(默认 USDT→加密货币 / 人民币→支付宝),套餐价随渠道分币种显示,删底部弹窗选方式;点购买直达支付页
- 支付页加订单信息卡(套餐/渠道/金额按币种)
- models:PayChannel + PayCatalogItem.priceUsdtMicro/priceLabel(ch)/perMonthLabel(ch)
订单(P0,全新):
- payment_api.listOrders() + orders_provider(列表 + 详情 family)
- OrdersScreen 列表→详情(状态 pill / 可复制订单号 / 继续支付·重新购买)
- 导航:NavView.orders + desktop_shell 分支 + account 入口
配套:
- l10n +19 getter(支付渠道 4 + 订单 15)×6 语言,l10n 闸绿
- 图标单源迁移 lucide_icons_flutter + pangolin_icons.dart(codegen)
- 联系渠道订正(Telegram/邮件 support@yanmeiai.com/官网) + 前端去广告&时长
- 测试:购买 switch 分币种 + 订单列表/空态/详情 + 假 API listOrders;golden 重录
- flutter analyze 0 error,flutter test 226 全绿
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-12 00:07:15 +08:00 |
|
wangjia
|
f6ce5267d5
|
feat(design): 支付渠道 switch 原型 + segswitch 原子 + 图标/语言同源闸
- .segswitch 段控原子入 atoms.css + 登记 index.html
- purchase/ui-mobile/ui-desktop 三屏:购买页支付渠道 switch(USDT→crypto 默认 / 人民币→alipay),套餐价随渠道分币种显示,删两步弹层 + nezha
- 订单列表/详情集成进移动+桌面主框架
- icons.js 58 图标 sprite 单源 + gen_flutter_icons codegen + check-l1-sync 同源闸(图标同集 + l10n 完整)
- pay-v2 开发决策日志 docs/pay-v2-dev-log.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-11 23:45:55 +08:00 |
|
wangjia
|
a5adbf347b
|
feat(server/pay): 订单列表端点 + 分币种展示价 + 富字段详情
- GET /v1/pay/orders 订单列表(Store.ListByUser,本地台账倒序)
- catalog 增 PriceUsdtMicro(USDT 一口价展示) + SettlementCurrency/DisplayAmountMinor
- 下单按支付方式落展示金额/结算币种(crypto→USDT / 法币→CNY),webhook 覆盖实际
- GetOrder 详情回带 sku/plan/method/amount/currency/created_at/paid_at
- 新增 List 越权/倒序/富字段 + 分币种展示金额 + 详情富字段测试
- 修 3 个 pre-existing 迁移测试(renumber 后 21→23 遗留)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-11 23:45:21 +08:00 |
|
wangjia
|
43c76fb978
|
Merge remote-tracking branch 'origin/main' into feat/pay-v2-integration
ci-pangolin / Redline Scan — 脱敏 (UI 文案) (push) Successful in 25s
ci-pangolin / Lint — shellcheck (push) Successful in 29s
ci-pangolin / Cleartext Scan — Android 禁明文 (push) Successful in 22s
ci-pangolin / OpenAPI Sync Check (push) Successful in 40s
ci-pangolin / Portable SQL — 可移植性 (mysql/sqlite) (push) Successful in 19s
ci-pangolin / Flutter — analyze + test (push) Failing after 4m59s
ci-pangolin / Codegen Drift — token 生成物未漂移 (push) Successful in 1m51s
ci-pangolin / DS-flow — 原型/跨端同源/代码色单源闸 (push) Successful in 5s
ci-pangolin / Go — build + test (push) Failing after 1m33s
ci-pangolin / E2E Smoke — L4 进程级端到端 (push) Failing after 14s
ci-pangolin / Go — integration (mysql/redis testcontainers) (push) Failing after 4m59s
ci-pangolin / Golden — 视觉回归 (全量:components/auth/desktop/tablet) (push) Failing after 4s
# Conflicts:
# docs/index.html
# server/cmd/server/main.go
|
2026-07-11 16:44:05 +08:00 |
|
wangjia
|
05922710b2
|
feat(server): CORS 中间件(白名单跨域,支持用户中心/官网前端)
控制面无 CORS 导致 pangolin.yanmeiai.com 的用户中心跨域打 api.yanmeiai.com 被浏览器拦(Network error)。
加白名单 CORS(env CORS_ALLOWED_ORIGINS,默认 https://pangolin.yanmeiai.com):回显 Origin、应答预检 OPTIONS、
放行 Authorization/Content-Type;不用 '*'、不放行 credentials(走 Bearer token)。
|
2026-07-11 15:33:07 +08:00 |
|
wangjia
|
1a7b93ed2f
|
feat(server): /buy 自包含购买页(同源,USDT+哪吒,登录→下单→轮询开通)
单文件 HTML(内联 CSS+JS,go:embed)挂在公开 GET /buy,与 /v1/pay 同源免 CORS:
登录 -> 拉取套餐 -> 选 USDT/哪吒下单 -> 按 render_type(crypto_address/redirect/qr)
展示付款信息 -> 轮询订单直到 activated,页面隐藏/关闭时停止轮询。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-11 14:52:21 +08:00 |
|
wangjia
|
1198ecc556
|
fix(migrations): 恢复线性迁移编号,与生产已应用的对齐
集成分支曾把已上线的 000020_ad_bonus_minutes(#21)/000021_devices_user_scoped_uuid(#27)
两个迁移错误覆盖成 codes_lib_legacy_rename/pay_purchases,与生产(schema_migrations=21)
的实际血统冲突,导致 golang-migrate 在生产上找不到 version 21 文件而报错。
恢复为:020 ad_bonus / 021 devices / 022 codes_lib_legacy_rename / 023 pay_purchases。
生产库副本完整试跑通过:version→23,pay_purchases 建好,subscriptions CHECK 加 'pay',
codes 库表就位,3 用户/3 订阅数据零丢失。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
|
2026-07-11 14:25:09 +08:00 |
|