|
|
18796b16ff
|
归档
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m32s
|
2026-09-14 14:25:03 +08:00 |
|
|
|
1aa4eacee2
|
feat(退款分佣): 佣金回溯明细替换全额失效并补齐读侧与导出
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m26s
用 PRD 2.14 语义整体替换退款佣金「整单全额失效」实现:原佣金保持已发放不变,
回溯事实落在新表 tb_commission_clawback_record 的负数、不可提现明细上。
- 新增成对迁移 000220 建 tb_commission_clawback_record,唯一约束
(refund_id, original_commission_id) 为权威幂等键,附店铺+时间/原佣金/订单索引。
- 回溯用例(internal/service/refund/clawback.go):准入仅由退款申请状态、审批异常
标记与退款方式决定;金额按分整数计算,分母取冻结实收(缺失回落审批尝试)、
分子原路取渠道成功金额,乘法用 math/big 中间量,舍入差自末条起向前补差;
终态判据要求订单佣金已离开待计算且不存在 status IN (1,2,99) 的记录。
- 三层幂等:唯一约束兜底、佣金行行锁 + 钱包乐观锁、commission_deducted 仅作投影
并带 WHERE commission_deducted = false 条件置位;闭合三结果为已回溯、无需回溯、
审批异常转人工。
- 事务内顺序固定:锁提现申请行 → 锁尝试行 → 解冻冻结 → 置驳回 → 插回溯明细 →
扣 balance(允许为负)→ 写负数流水 → 审计;删除旧全额失效写入与其两个审计调用点,
refund.invalidate_commission 仅保留常量与注册供历史审计读取。
- 读侧:佣金明细列表 status 筛选透传,两表 UNION ALL 合并分页并以 source ASC 作
末位次序键;新增佣金明细详情接口并同步路由与 OpenAPI 装配。
- 导出:新增 commission_record 场景(白名单、exporter 注册、DTO oneof、DataSource
与列定义),粒度为佣金记录,原佣金与回溯各一行,金额保持分且可为负。
- 新增退款佣金回溯周期补偿任务(@every 1m / MaxRetry(3) / Timeout(10m) /
Unique(10m),独立队列),保留启动时补偿扫描,判据与既有实现一致。
Refs: AUG26-012
|
2026-09-14 13:40:34 +08:00 |
|
|
|
67893617fe
|
feat(退款): AUG26-006 补充当前退款套餐已用量与总量
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m33s
补齐 PRD §2.3.1「退款管理补充字段」:退款列表、详情与导出新增
「当前退款套餐已用量」与「当前退款套餐总量」两个纯展示字段。
- 套餐定位口径与退款套餐失效保持一致,按优先级取唯一一条:
冻结的 package_usage_id(且属于该订单)→ 订单主套餐 → 订单任一套餐,
同级按标识升序。不按当前世代或当前生效套餐推断;不按套餐状态过滤,
使退款后套餐转已失效时仍能回看用量。
- 列表与详情用固定两次查询批量解析(按标识、按订单),查询次数不随条数增长;
详情复用同一函数。解析不到套餐或记录已物理删除时返回 0,不阻断读取。
- 导出新增两列并改用同一优先级的 LATERAL 取法,不再依赖只按 r.package_usage_id
的 join——生产库 1296 条退款仅 157 条带该字段,旧取法会让多数行显示零值。
- 不改变退款金额校验、冻结实收、套餐失效、接续、停机与佣金回溯任何规则。
验证:测试库 junhong_cmp_test 实测冻结记录、订单主套餐回退、记录缺失返回 0 三项
解析场景与「4 条退款固定 2 次查询」;并以同批 43 条退款对拍 Go 解析器与导出 SQL,
口径不一致 0 条;导出 43 行列数与表头一致。无迁移、无接口路径变化。
|
2026-09-14 12:11:55 +08:00 |
|
|
|
09abee9778
|
docs(归档): 归档退款方式与原路退款变更并同步主规格
- 将 add-refund-methods-and-original-route-refunds 归档为
2026-09-14-add-refund-methods-and-original-route-refunds。
- 合并两份 delta 到主规格:
* order-refund-exchange:改写「订单、退款与换货状态门禁」,新增「退款实收金额与方式矩阵」
「企业微信唯一终审与审批尝试重提」「原路退款渠道能力与执行」「退款权益与订单状态时点」
「退款终态事实与失败分类」五项行为要求。
* merchant-payment-routing:改写「商户与微信授权配置管理」与「新支付商户快照与历史兼容」
(删除「不得新增渠道退款能力」与「不新增富友退款」,改由退款能力按商户凭证执行;
微信 v2 客户端证书改为可选凭证键)。
- 同步上下文健康检查证据链与入口矩阵:为新要求登记证据行,并把退款创建、重提、
企微审批回调、退款详情与 refund:channel:recovery 任务与对应要求双向关联。
|
2026-09-14 12:00:35 +08:00 |
|
|
|
ba0855d9eb
|
feat(退款): AUG26-006 退款方式选择与原路退款
按 PRD 2.3/2.4/2.5 落地套餐退款的方式矩阵与原路渠道退款:
- 退款申请派生并冻结权威实收金额(线上取原成功支付记录,钱包/线下取订单实际收款),
提交人不可填写或修改;按来源支付方式生成可选方式矩阵并在创建、提交、执行前重复校验。
- 审批切换为「每次提交一条不可变审批尝试记录 + 独立企业微信审批实例」,业务标识取尝试
记录主键;终态消费按尝试记录优先、退款申请兜底双读,兼容存量无实例与已关联实例申请。
新增活动退款部分唯一索引 (order_id) WHERE status IN (1,5,6)。
- 本地人工终审保持既有开关,补齐通过入口的 approval_instance_id IS NULL 守卫,使三个
入口一致拒绝已关联审批实例的申请;重提按尝试模式重写(仅已拒绝/已退回/原路失败且无异常)。
- 权益时点:企微通过事务写退款终态、按方式确定的订单态、钱包回款、员工账单冲销与可靠
失效事实;套餐失效/接续/停机仍由既有可靠机制最终一致执行,不把外部调用放入资金事务。
订单支付状态按方式置位:凭证退款与退回原钱包在企微通过时置已退款,原路须渠道明确成功。
- 按官方契约实现微信直连 v3、微信 v2(双向证书)、富友(/commonRefund 与 /refundQuery)、
支付宝四类原路退款;能力只由服务商类型与退款必需凭证完整性决定,无人工开关。
渠道请求号在提交时冻结到尝试记录,并以 channel_submitted_at 条件认领保证资金动作至多
提交一次(重复投递只查询不二次提交);不向任何渠道传递退款结果通知地址。
- 新增 refund:channel:recovery 恢复任务只查询回填;本地查询窗口超期(富友 72 小时、
微信 v2 7 天)转原路退款失败、渠道状态已失败、分类超时未知并置异常转人工,不放行自动
重提以避免重复退款。
- 同步退款 DTO/导出/审计资源与审计查询关联、商户凭证文档,并修正 fuiou 集成契约文档。
迁移 000218(退款尝试与渠道退款事实)、000219(微信 v2 客户端证书凭证)成对提供,
未修改既有迁移;测试库 junhong_cmp_test 完成 up/down/up 与行为核对,未调用真实渠道。
|
2026-09-14 11:55:16 +08:00 |
|
|
|
48c85a4916
|
docs(归档): 归档已用完套餐展示与支付购包即时复机两个变更
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m35s
- fix-depleted-package-display → archive/2026-09-14-fix-depleted-package-display;
补记验证:`GetCurrentMainPackage`(package_usage_store.go:63-66)按 status IN (1,2) 读取主套餐,
资产信息 `fillPackageInfo`(service/asset/service.go:348-349)复用该读取,
已用完主套餐返回名称、使用记录、时间与流量指标,待生效/已过期/已失效仍不作为当前套餐;
实现提交 ff25586,4 项任务全部完成。
- fix-immediate-package-payment-resume → archive/2026-09-14-fix-immediate-package-payment-resume;
补记八月迭代同步验证:定点同步提交 b38b2b3 已是 Iteration/8-11 的 HEAD 祖先,
在途支付商户装配保留(98c145f);services.go:277 `orderService.SetResumeCallback(stopResumeService)`
在位,`go build ./cmd/api ./cmd/worker` 通过;2.1/2.2 据此勾选。
- 主 Spec 同步:personal-customer 新增「资产信息展示当前可用或已用完主套餐」;
package-lifecycle 修改为支付成功后已生效主套餐触发一次即时自动复机检查。
openspec validate --all 为 38 passed / 0 failed;doctor healthy。
|
2026-09-14 09:49:03 +08:00 |
|
|
|
575d056f54
|
feat(代理分销提现): 落地扫码注册、提现资料资格与企微终审提现
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
AUG26-008。
- 迁移 000214–000217:tb_shop 全局唯一且不可修改的随机分销码(含存量回填)、
tb_agent_distribution_registration 待审批注册记录、tb_withdrawal_qualification 资料版本、
tb_commission_withdrawal_request_attempt 审批尝试记录,以及提现申请的 latest_*/异常标记列;
不修改既有迁移,down 在存在本 Change 业务事实或新类型场景行时拒绝破坏性回滚。
- 公开接口 POST /api/c/v1/agent-distribution-registrations:无认证,复用既有短信验证码校验、
消费与限流;无效分销码、停用上级、验证码无效或已消费统一返回「分销码不可用」且不落库,
审批通过前不创建店铺、账号或钱包。
- 审批通过才在同一事务内建启用店铺、代理主账号、钱包、上级层级与业务员快照,驳回不建实体,
重复回调不重复建实体,提交后清理上级下级缓存。
- 提现资料资格按不可变版本保存,替换合同或法人身份证即新增版本并同事务失效旧有效版本;
超管作废原因必填;代理停用与店铺删除联动失效。
- 提现每次提交或重提新增不可变审批尝试记录并冻结金额;企业微信通过仅一次从冻结扣减、
保持状态 2 并写 paid_at(不使用状态 4),驳回/cancelled/deleted 仅一次释放,
通过后撤销不回滚、不重新冻结、只写正交异常标记;加锁顺序统一为申请→尝试→钱包。
- 本地人工终审对已关联审批实例的申请返回状态冲突,approval_instance_id 为空的存量申请保持既有行为,
不新增任何配置开关。
- 补齐审批业务类型注册点全集:业务类型与场景字段常量、场景 DTO 两处枚举与中文描述、
场景字段白名单/合法类型/中文名、数据库 CHECK、Worker 决策消费者与装配、审批审计资源映射,
以及三个新审计资源与 13 个审计动作;失败/拒绝审计改为必达。
- 新增后台路由与 OpenAPI:资格提交/查询/作废、提现申请/重提/详情、店铺详情返回只读分销码。
- 归档本 Change:主 Spec 新增 agent-distribution-withdrawal 能力(5 个 Requirement)。
验证(junhong_cmp_test + Redis DB 6,显式 DB_*,未重置整库):
- 迁移 up → version 217 且 dirty=false → down 3 → up 回 217,fixture 复核残留为 0。
- 受控状态机脚手架 227 项通过 / 0 项失败,覆盖 18 组场景(幂等与乱序回调、资金冻结/释放/重提、
退款回扣 × 在途提现并发、负向场景拒绝审计与 14 个动作码审计真实落库)。
- gofmt 空、go build/go vet 通过、gendocs 与工作区逐字节一致、context-health 通过、
openspec validate --strict 通过、doctor healthy;自动化测试按项目决策为 N/A。
运行期前置(未完成,非代码交付物):由超管经 PUT /api/admin/wecom/scenes/{business_type} 为
agent_distribution_approval、withdrawal_qualification_approval、commission_withdrawal_approval
配置启用场景与模板控件映射;未配置时相应提交失败关闭。
|
2026-09-14 09:45:13 +08:00 |
|
|
|
315a7de3e4
|
docs(归档): 归档代理自充支付方式与员工代收款路由前缀两个变更
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 53s
- add-agent-self-recharge-payment-methods 归档为 2026-09-11-add-agent-self-recharge-payment-methods,delta 应用后主规格 agent-funds-commission 完成 1 条 Requirement 改名并新增 4 条 Requirement
- 在可达操作索引补充代理自充支付方式配置与付款凭证识别共 3 个端点
- 同步 requirement-evidence.json 与 entry-capability-requirement-matrix.json 证据链
- fix-employee-collection-route-prefix 归档为 2026-09-11-fix-employee-collection-route-prefix 并勾选任务 2.5
门禁:context-health 通过、openspec validate --all 40 passed / 0 failed、doctor healthy
|
2026-09-11 15:50:15 +08:00 |
|
|
|
5ee8e3cb4a
|
docs(员工代收款): 新增路由前缀修复治理变更并勾选 AUG26-017 门禁
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m30s
- 新增 OpenSpec Change fix-employee-collection-route-prefix,承载已落地的 ff1362d 路由前缀修复(无规格 delta,skip_specs)
- 记录根因(Register 的 basePath 只服务文档)、影响面(7 条根级残留、15 条同层抢占)、修复方式与验证方式
- AUG26-017 全局健康门禁实际通过后勾选 5.7(tasks 27/27)
|
2026-09-11 15:38:05 +08:00 |
|
|
|
7891189712
|
feat(代理自充): AUG26-017 代理自充收款方式与线下预存款审批字段
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m52s
- 受控配置新增代理在线自充允许范围(仅微信/仅支付宝/同时支持),读侧与创建侧取允许范围与可用商户池交集,两侧失败关闭
- 新增允许范围查询与修改端点,读限代理与平台账号、写限超级管理员,复用受控配置写服务留痕
- tb_agent_recharge_record 新增交易流水号、线下收款方式三列快照与其他凭证列(成对迁移 000213)
- 线下申请校验启用的收款方式字典项与必填交易流水号,交易流水号独立于在线渠道交易号、不参与去重
- 扩展 offline_recharge_approval 场景可映射字段白名单与字典引用保护
- 新增付款凭证识别能力与交易流水号预填接口,识别不落库、日志不记录载荷
|
2026-09-11 15:21:23 +08:00 |
|
|
|
9c3e3fe32b
|
归档员工代收款账单闭环变更并同步主规格
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m36s
- 新增主规格 openspec/specs/employee-collection-bill/spec.md(5 条 Requirement、22 个 Scenario)
- 变更目录归档至 openspec/changes/archive/2026-09-11-add-employee-collection-bills
|
2026-09-11 09:45:12 +08:00 |
|
|
|
69b37eb89b
|
docs(员工代收款): 补充审批中通过后撤销兜底语义并清理死参数
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m24s
- spec.md 增补「审批中收到通过后撤销」场景与规范条文:释放该次尝试全部审批中预占、转异常终态并记录原因、保留审计、禁止自动重提
- design.md「企业微信审批结果消费」补充审批中命中该决策的兜底处理与理由(避免申请永久停在审批中且预占永久占用账单)
- query/employeecollection 删除 approvalStatusOfAttempts 恒为 true 的 withOpinion 形参、修正失真注释,行为不变
OpenSpec Change: add-employee-collection-bills
|
2026-09-10 18:45:43 +08:00 |
|
|
|
ce24d5612e
|
feat(员工代收款): 新增员工代收款账单闭环
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
- 新增 6 张表与成对迁移 000212,扩展企业微信审批场景业务类型白名单
- 后台线下套餐订单与两条代理线下充值入账路径在来源成功事务内建账,来源唯一键幂等
- 核销申请、审批尝试记录、账单分摊预占与驳回重提,审批业务类型 employee_collection_approval
- 企业微信终态消费幂等:通过转已核销、驳回释放预占、通过后撤销不回滚并转异常终态
- 退款成功事务内按 bill_id+refund_id 幂等冲销账单或仅写退款关联提示
- 线下收款方式字典、账单查询/统计/关闭、申请查询与代办权限,均写入事务内审计
OpenSpec Change: add-employee-collection-bills
|
2026-09-10 18:24:05 +08:00 |
|
|
|
dc4e0d4103
|
归档支付商户池变更并同步主规格
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m25s
|
2026-09-10 12:03:28 +08:00 |
|
|
|
54823290c3
|
完成支付购包自动复机变更任务
|
2026-09-10 11:26:07 +08:00 |
|
|
|
b38b2b39c9
|
修复支付购包后自动复机
|
2026-09-10 11:26:07 +08:00 |
|
|
|
a9e2302f7c
|
1
|
2026-09-10 10:53:07 +08:00 |
|
|
|
98c145fe70
|
实现支付商户池与微信授权配置
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3m55s
新增收款商户、商户池轮询、微信授权配置独立管理;三类新支付
(C端套餐购买、C端资产钱包充值、代理在线预存款充值)无条件
经商户池选择并冻结路由,无旧综合配置回退。merchant_id 为空
历史支付继续按 payment_config_id 双读。凭证版本化加载与
ID+版本缓存保证轮换一致性。删除商户池新支付创建开关及全部
引用。
|
2026-09-09 18:13:04 +08:00 |
|
|
|
ff25586dc9
|
修复已用完套餐展示
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m43s
|
2026-09-08 17:25:34 +08:00 |
|
|
|
696120ab38
|
feat: 资产套餐历史增加主子层级查询
|
2026-09-07 17:17:15 +08:00 |
|
|
|
c7c2b17d78
|
归档
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 54s
|
2026-09-07 11:34:23 +08:00 |
|
|
|
5424751993
|
修复停复机忽略免实名策略并归档变更
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
|
2026-09-07 10:06:17 +08:00 |
|
|
|
370fd3e67f
|
update
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s
|
2026-09-03 09:28:28 +08:00 |
|
|
|
395e5fb47c
|
修复套餐接续停机竞态与轮询兜底
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 11m13s
|
2026-08-29 16:27:48 +08:00 |
|
|
|
62f3d25e81
|
修复批量订购
|
2026-08-26 14:54:26 +08:00 |
|
|
|
5797fd0e94
|
修复企微兜底机制
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m40s
|
2026-08-20 18:06:45 +08:00 |
|
|
|
22b95db2f9
|
每日清理
|
2026-08-20 12:03:17 +08:00 |
|
|
|
656a921ff0
|
富友支付支持
|
2026-08-18 17:13:20 +08:00 |
|
|
|
46c8e819df
|
修改相关证据
|
2026-08-18 16:30:16 +08:00 |
|
|
|
247d7d9f6e
|
新增接口
|
2026-08-18 16:15:46 +08:00 |
|
|
|
d256f6d176
|
合并七月迭代分支
|
2026-08-18 14:53:29 +08:00 |
|
|
|
c8052df8eb
|
补充退款列表应当让本店铺的人看见
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m30s
|
2026-08-18 11:44:30 +08:00 |
|
|
|
b5285877bf
|
归档
|
2026-08-13 17:45:49 +08:00 |
|
|
|
cbadf77517
|
修复价格不一致的问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m28s
|
2026-08-13 17:43:14 +08:00 |
|
|
|
6883b5b42b
|
归档
|
2026-08-13 17:26:36 +08:00 |
|
|
|
4c393bb427
|
回溯佣金
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m34s
|
2026-08-13 17:00:06 +08:00 |
|
|
|
7e7f1cbb67
|
更新
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 53s
|
2026-08-13 16:09:38 +08:00 |
|
|
|
fcfa347005
|
修复
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m38s
|
2026-08-12 10:42:35 +08:00 |
|
|
|
619d0c5efe
|
提案
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 51s
|
2026-08-11 15:39:51 +08:00 |
|
|
|
a795ca3650
|
修复通知
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m25s
|
2026-08-11 11:18:11 +08:00 |
|
|
|
f6b11eb9ac
|
修复
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m23s
|
2026-08-10 17:37:55 +08:00 |
|
|
|
77ce9db722
|
并发监控修复
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m20s
|
2026-08-10 16:58:33 +08:00 |
|
|
|
f15a64395f
|
修复反馈
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m30s
|
2026-08-10 16:30:38 +08:00 |
|
|
|
7aa03e91fb
|
修复
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m25s
|
2026-08-07 18:00:15 +08:00 |
|
|
|
79e2d9ff92
|
重置项目上下文与规范文档
|
2026-08-07 16:18:07 +08:00 |
|
|
|
c64f3d8b80
|
全局审计完成
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m31s
|
2026-08-07 11:02:52 +08:00 |
|
|
|
88cc5e96ec
|
暂存
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m32s
|
2026-08-06 09:35:00 +08:00 |
|
|
|
5e552d99bc
|
收口审计治理与套餐任务进展
Constraint: 在线热修前必须保存当前迭代分支全部有效代码进展
Confidence: medium
Scope-risk: broad
Directive: 后续修改需保持审计事件与业务事务边界一致
Tested: git diff --cached --check
Not-tested: 未运行全量测试,提交用于切换分支前保存既有工作
|
2026-08-05 14:30:54 +08:00 |
|
|
|
a0de08d789
|
避免套餐过期后排队权益永久失联
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m6s
线上保持现有纯 Asynq 架构,以公平孤儿扫描和提交后投递消除永久饥饿及事务可见性竞态。
Constraint: 线上保持现有纯 Asynq 架构,不引入 Outbox、迁移或新任务基础设施。
Rejected: 事务内投递或扩大扫描 LIMIT | 无法消除竞态和永久饥饿。
Confidence: high
Scope-risk: narrow
Directive: 后续分支整合时按目标分支的套餐接续架构独立处理,不混用本热修实现。
Tested: go build ./...(退出码 0);git diff --check;openspec validate fix-main-package-activation-starvation --strict。
Not-tested: 按用户要求未新增、修改或运行自动化测试;线上 SQL、查询计划和日志待部署后核验。
|
2026-08-03 09:58:05 +08:00 |
|
|
|
b3499adfca
|
固化七月迭代审计治理进展以隔离线上热修
Constraint: 切换 main 前必须保存当前七月分支全部项目进展,套餐生效提案仅属于 Iteration/7-11。
Rejected: 将七月套餐修复直接移植到 main | 两个分支的可靠投递架构不同。
Confidence: medium
Scope-risk: broad
Directive: 不得将本提交整体 cherry-pick 到 main;main 套餐热修必须基于其纯 Asynq 代码独立实施。
Tested: git diff --check;openspec validate fix-package-activation-starvation --strict。
Not-tested: 按用户要求未运行自动化测试;go build ./... 因当前审计改造中的 Enterprise 模型字面量和 role.recordFailure 参数类型错误未通过。
|
2026-08-03 09:47:22 +08:00 |
|