ur38 issues
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# 01 — 扩展代理主钱包信用模型与领域不变量
|
||||
|
||||
**What to build:** 系统能够在不改变历史钱包行为的前提下表达代理主钱包信用额度,并由统一 Wallet Domain 安全计算现金可用金额、总可用金额和欠款。数据库与领域层共同拒绝非法开关组合、负额度、越界结果和算术溢出。
|
||||
|
||||
**Blocked by:** `.scratch/tech-public-foundation/issues/01-public-migration-ownership-and-gates.md` — 01 — 建立公共迁移所有权与检查门禁
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 主通道为 Infrastructure,辅助通道为复杂写 Domain。
|
||||
|
||||
**完整业务边界:** 本票收口代理主钱包信用字段、Wallet Domain 金额语义、数据库检查约束和历史数据兼容。明确不迁移具体扣款、冻结、充值或退款入口,不改变佣金钱包和资产钱包的业务边界。
|
||||
|
||||
- [ ] 迁移前置检查从目标 PostgreSQL 查询真实约束定义和异常数据;历史主钱包及佣金钱包均固化为关闭信用、额度为零,升级后原有现金行为不变。
|
||||
- [ ] 代理主钱包支持信用开关和分单位 `int64` 额度;佣金钱包始终无信用并保持余额非负,数据库不存在外键或 GORM 关联标签。
|
||||
- [ ] Wallet Domain 统一提供现金可用金额、有效信用额度、总可用金额、欠款状态和欠款金额,并保证关闭/0、开启/正数及总可用金额不小于零。
|
||||
- [ ] 领域与数据库共同拒绝负额度、开启/0、关闭/非零、冻结金额为负、主钱包超出信用边界及所有加减法溢出场景。
|
||||
- [ ] 真实 PostgreSQL 迁移测试覆盖升级、降级的安全条件、约束拒绝、重复执行检查和历史钱包兼容;出现负余额后的发布说明明确禁止回滚到旧钱包逻辑。
|
||||
- [ ] 领域单元测试覆盖普通现金、部分使用信用、用尽信用、超过信用、冻结占用但未形成欠款,以及正负整数边界。
|
||||
@@ -0,0 +1,21 @@
|
||||
# 02 — 配置客户角色的新建代理默认信用模板
|
||||
|
||||
**What to build:** 获得授权的平台人员可以为客户角色配置“新建代理默认信用”模板,并清楚获得该设置只影响未来新建店铺的接口契约。模板变更与不可变 Audit Event 同事务提交,任何审计失败都会回滚业务更新。
|
||||
|
||||
**Blocked by:**
|
||||
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md` — 01 — 扩展代理主钱包信用模型与领域不变量
|
||||
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 简单写 Application 事务脚本。
|
||||
|
||||
**完整业务边界:** 本票收口角色默认信用模板的配置、权限、校验、读取响应和审计。明确不调整任何既有钱包实际额度,不扫描既有店铺,不让店铺角色关系成为运行时信用来源。
|
||||
|
||||
- [ ] 客户角色可通过独立接口保存合法的信用开关和额度组合;响应及角色管理所需读取契约明确这是新建代理模板。
|
||||
- [ ] 平台角色只能保持关闭/0;代理账号一律禁止配置模板,平台账号仍需满足既有角色管理权限,超级管理员按既有规则放行。
|
||||
- [ ] 负额度、开启/0、关闭/非零、超出 `int64` 或分单位转换不精确的请求以统一中文错误拒绝,Handler 不泄露底层校验信息。
|
||||
- [ ] 模板更新和包含操作人、角色、开关及额度前后值的 Audit Event 在同一事务提交;审计失败时模板不变。
|
||||
- [ ] 修改模板后,所有既有代理主钱包和后续店铺角色增删结果保持不变,并有集成测试证明不存在级联更新。
|
||||
- [ ] 新接口完成路由注册、统一响应、OpenAPI 文档生成接入及权限回归测试。
|
||||
@@ -0,0 +1,18 @@
|
||||
# 03 — 新建店铺原子复制角色信用模板
|
||||
|
||||
**What to build:** 创建代理店铺时,系统在一个 PostgreSQL 事务中重新读取唯一默认客户角色,并把当时的信用模板一次性复制到新主钱包。店铺、初始账号、角色关系和两个钱包任一步失败都不会留下半成品。
|
||||
|
||||
**Blocked by:** `.scratch/ur38-agent-main-wallet-credit/issues/02-role-default-credit-template.md` — 02 — 配置客户角色的新建代理默认信用模板
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 主通道为简单写 Application 事务脚本,辅助通道为 Infrastructure。
|
||||
|
||||
**完整业务边界:** 本票收口现有店铺创建完整用例及信用模板快照。明确不迁移店铺编辑、查询、禁用和其他 CRUD,不允许创建请求直接覆盖信用字段,也不改变创建后的角色维护语义。
|
||||
|
||||
- [ ] 创建用例在事务内重新读取并校验请求中的唯一默认角色是启用的客户角色,不能使用事务外过期快照决定钱包信用。
|
||||
- [ ] 店铺、初始主账号、账号角色、店铺角色、主钱包、佣金钱包和信用模板复制在同一 PostgreSQL 事务内全成全败。
|
||||
- [ ] 主钱包复制角色当时的模板,佣金钱包固定关闭/0;创建请求中的未知或显式信用字段不能改变快照结果。
|
||||
- [ ] 模板更新与并发创建的事务快照语义稳定可验证,创建完成后的角色模板或店铺角色变化均不影响钱包。
|
||||
- [ ] 故障注入集成测试逐步覆盖每个写入点,证明任一步失败均不残留店铺、账号、关系或钱包半成品。
|
||||
- [ ] 现有店铺创建权限、校验、响应和非信用字段行为保持兼容,并更新相关中文功能文档。
|
||||
@@ -0,0 +1,21 @@
|
||||
# 04 — 授权平台人员调整店铺实际信用额度
|
||||
|
||||
**What to build:** 超级管理员或同时具备独立授信权限和目标店铺数据范围的平台账号,可以安全调整代理主钱包的实际信用额度。旧版本、越权目标和无法覆盖当前资金占用的降额均被明确拒绝,且不会覆盖并发写入。
|
||||
|
||||
**Blocked by:**
|
||||
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md` — 01 — 扩展代理主钱包信用模型与领域不变量
|
||||
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 复杂写,Application UseCase → Wallet Domain → Repository/Infrastructure。
|
||||
|
||||
**完整业务边界:** 本票收口既有代理主钱包实际信用额度的授权调整、不变量、乐观锁和审计。明确不允许代理调整自己或任何下级,不复用角色模板作为运行时事实,不修改余额或冻结金额,不创建金额为零的钱包流水。
|
||||
|
||||
- [ ] 独立调额接口只允许超级管理员,或具备独立信用额度管理权限且满足目标店铺既有查看/数据范围的平台账号调用。
|
||||
- [ ] 代理本人、直属下级、更深层下级、无独立权限的平台账号和企业账号均被后端独立拒绝,单独通过店铺管理检查不能获得调额权。
|
||||
- [ ] Wallet Domain 校验开关组合、算术安全和调整后的总可用金额;欠款或冻结占用导致关闭或降额越界时保持原值并返回统一业务错误。
|
||||
- [ ] 更新条件同时约束主钱包类型和请求版本,成功后版本递增;零受影响行重新读取并稳定区分并发冲突、无权/不存在及额度不足。
|
||||
- [ ] 钱包更新与包含操作人、请求上下文、余额、冻结金额、开关、额度和版本前后值的 Audit Event 同事务提交,且不产生伪钱包交易流水。
|
||||
- [ ] 权限矩阵、提高额度、安全降额、欠款关闭、冻结占用、旧版本并发及整数边界均有真实 PostgreSQL/API 集成测试;新 Handler 接入两个 OpenAPI 文档生成入口。
|
||||
@@ -0,0 +1,23 @@
|
||||
# 05 — 统一代理订单、代购与钱包支付扣款
|
||||
|
||||
**What to build:** 所有本需求触碰的代理订单支付、代购和后台套餐订购都通过同一个代理主钱包扣款能力结算。扣款统一使用总可用金额,能够在现金不足时安全使用信用,并原子维护订单事实、钱包版本、真实金额流水和可靠事件。
|
||||
|
||||
**Blocked by:**
|
||||
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md` — 01 — 扩展代理主钱包信用模型与领域不变量
|
||||
- `.scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md` — 02 — 在业务事务中可靠写入公共 Outbox
|
||||
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 复杂写,Application UseCase → Wallet Domain → Repository/Infrastructure;Order Application 为辅助编排通道。
|
||||
|
||||
**完整业务边界:** 本票收口代理主钱包扣款能力及现有被触碰的代理订单、代购、单资产后台订购调用点。它同时为 UR#36 的单资产套餐订购命令提供稳定钱包接缝。明确不迁移资产钱包支付、佣金钱包、不相关订单创建流程或整个订单模块。
|
||||
|
||||
- [ ] 统一扣款命令按代理主钱包加载聚合,以 `balance - frozen_balance + effective_credit` 判断资金边界,并安全允许账面余额在额度内变为负数。
|
||||
- [ ] 钱包保存使用版本或等价行锁防止并发超额,成功后版本递增;并发请求不能让总可用金额小于零。
|
||||
- [ ] 订单/业务单状态条件、钱包扣款、真实金额流水、Payment 事实、必要套餐处理、Audit Event 和 Outbox 在各完整用例的同一事务提交。
|
||||
- [ ] 相同业务单重试不会重复扣款、重复建流水或重复激活;余额不足和版本冲突不会留下已支付订单或其他部分事实。
|
||||
- [ ] 现有代理钱包支付、平台代理订购和代购调用点不再自行维护现金余额条件,均调用统一能力;旧 Service 如保留只能作为内部迁移门面。
|
||||
- [ ] UR#36 可调用稳定的代理主钱包扣款 Application/Port 接缝,而无需复制信用公式、直接更新钱包模型或依赖旧 Store 条件。
|
||||
- [ ] 集成测试逐一覆盖现金支付、部分信用、用尽信用、超额拒绝、代购付款钱包定位、并发支付、幂等重试、流水快照及 Outbox 回滚。
|
||||
@@ -0,0 +1,22 @@
|
||||
# 06 — 统一代理主钱包冻结与解冻
|
||||
|
||||
**What to build:** 需要预占代理主钱包资金的完整用例可以统一冻结、解冻和完成冻结资金扣除,并与普通扣款维护同一个信用边界。并发冻结、取消和完成不会造成重复处理或总可用金额越界。
|
||||
|
||||
**Blocked by:**
|
||||
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md` — 01 — 扩展代理主钱包信用模型与领域不变量
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/05-unified-agent-wallet-debit.md` — 05 — 统一代理订单、代购与钱包支付扣款
|
||||
- `.scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md` — 02 — 在业务事务中可靠写入公共 Outbox
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 复杂写,Application UseCase → Wallet Domain → Repository/Infrastructure。
|
||||
|
||||
**完整业务边界:** 本票收口代理主钱包冻结、解冻和冻结资金最终扣除的完整用例及统一并发规则。明确不迁移佣金钱包提现、资产钱包冻结或没有触碰代理主钱包的预占流程。
|
||||
|
||||
- [ ] 冻结使用总可用金额作为边界,允许冻结占用信用但不把冻结金额直接计为欠款;冻结成功后版本递增。
|
||||
- [ ] 解冻只减少合法冻结金额,完成冻结资金扣除同时减少余额和冻结金额,并保持冻结金额非负及主钱包总可用金额合法。
|
||||
- [ ] 每个调用用例将业务状态、钱包版本、必要真实金额流水、Audit Event 和 Outbox 在同一事务维护,失败时整体回滚。
|
||||
- [ ] 状态条件和稳定业务引用保证重复冻结、重复取消、重复完成不会二次改变钱包;并发零受影响行可区分业务已处理与真实资金冲突。
|
||||
- [ ] 现有代理主钱包冻结相关调用点不再直接拼接现金条件或绕过 Wallet Domain;佣金钱包原有提现边界保持不变。
|
||||
- [ ] 测试覆盖纯现金冻结、占用信用、超额冻结、欠款状态下解冻、部分解冻、完成扣除、重复请求和并发竞态。
|
||||
@@ -0,0 +1,22 @@
|
||||
# 07 — 统一代理主钱包充值入账与人工调整
|
||||
|
||||
**What to build:** 当前代理充值到账和人工余额调整通过统一 Wallet Application 写入主钱包,使正向入账能够正确清偿负余额并一致维护版本、真实金额流水、业务状态、审计和可靠事件。
|
||||
|
||||
**Blocked by:**
|
||||
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md` — 01 — 扩展代理主钱包信用模型与领域不变量
|
||||
- `.scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md` — 02 — 在业务事务中可靠写入公共 Outbox
|
||||
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 复杂写,Application UseCase → Wallet Domain → Repository/Infrastructure。
|
||||
|
||||
**完整业务边界:** 本票收口现有代理主钱包充值入账和人工余额调整的资金写入边界。明确不建设 UR#34 的支付、企业微信审批或站内通知流程,不迁移佣金入账和资产钱包充值,只为这些外部流程提供稳定的主钱包入账能力。
|
||||
|
||||
- [ ] 正向入账通过 Wallet Domain 安全增加账面余额并递增版本,负余额钱包优先自然表现为欠款减少,不修改信用额度或冻结金额。
|
||||
- [ ] 充值业务单状态或人工调整幂等键、钱包更新、唯一真实金额流水、Audit Event 和 Outbox 在同一事务提交。
|
||||
- [ ] 重复回调、重复 Worker 或人工重试不重复入账;钱包或流水写入失败不会留下已完成业务单,已确认外部收款事实按其所属用例的处理状态保留并可重试。
|
||||
- [ ] 充值和人工调整调用点不再直接更新代理主钱包余额,旧 Service 如保留只能调用统一 Application 能力。
|
||||
- [ ] 金额为零、负数、加法溢出、错误钱包类型和不存在目标均以统一错误拒绝,客户端不接收底层数据库错误。
|
||||
- [ ] 集成测试覆盖普通入账、负余额清偿、仍有欠款、重复入账、并发入账、流水唯一性、审计失败和 Outbox 失败回滚。
|
||||
@@ -0,0 +1,23 @@
|
||||
# 08 — 统一代理订单退款回充
|
||||
|
||||
**What to build:** 代理钱包订单退款能够沿原扣款流水准确回充原主钱包,并通过统一 Wallet Application 幂等维护余额、版本、退款事实、真实金额流水和可靠事件。原付款使用信用不影响退款定位和金额口径。
|
||||
|
||||
**Blocked by:**
|
||||
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/05-unified-agent-wallet-debit.md` — 05 — 统一代理订单、代购与钱包支付扣款
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/07-unified-agent-wallet-credit-posting.md` — 07 — 统一代理主钱包充值入账与人工调整
|
||||
- `.scratch/tech-public-foundation/issues/02-transactional-public-outbox-write.md` — 02 — 在业务事务中可靠写入公共 Outbox
|
||||
- `.scratch/tech-global-audit/issues/01-audit-event-write-loop.md` — 01 — 交付不可变 Audit Event 写入闭环
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 复杂写,Application UseCase → Wallet Domain → Repository/Infrastructure;Refund Application 为辅助编排通道。
|
||||
|
||||
**完整业务边界:** 本票收口代理订单退款回充主钱包的完整资金用例及历史扣款流水兼容定位。明确不迁移资产钱包退款、佣金回扣、套餐失效和企微审批等非代理主钱包边界。
|
||||
|
||||
- [ ] 新订单退款以原扣款流水定位实际付款主钱包和代购关联店铺,历史缺失流水订单按已确定的兼容规则定位且不会退款到错误钱包。
|
||||
- [ ] 退款状态条件、钱包回充、版本递增、唯一真实退款流水、Audit Event 和 Outbox 在同一事务提交。
|
||||
- [ ] 退款增加账面余额并自然减少或清偿欠款,不修改冻结金额或信用额度;金额运算溢出时整个事务拒绝。
|
||||
- [ ] 同一退款与原扣款业务引用形成稳定防重边界,重复审批、Worker 重试和并发请求不会重复回充或重复写流水。
|
||||
- [ ] 代理退款调用点不再直接增加钱包余额,资产钱包退款及其他退款后处理保持原有边界。
|
||||
- [ ] 测试覆盖现金扣款退款、信用扣款退款、代购退款、历史流水兼容、重复退款、并发退款及任一事务写入失败回滚。
|
||||
@@ -0,0 +1,21 @@
|
||||
# 09 — 资金概况返回信用、总可用金额与欠款
|
||||
|
||||
**What to build:** 平台和代理在现有资金概况范围内可以直接查看代理主钱包的账面余额、冻结金额、现金可用金额、信用额度、总可用金额、欠款和版本。所有派生金额由服务端统一投影,前端无需自行重算。
|
||||
|
||||
**Blocked by:**
|
||||
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/01-agent-main-wallet-credit-foundation.md` — 01 — 扩展代理主钱包信用模型与领域不变量
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/04-manage-shop-credit-limit.md` — 04 — 授权平台人员调整店铺实际信用额度
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** Query。
|
||||
|
||||
**完整业务边界:** 本票收口现有资金概况读取模型的信用字段、派生金额、分页筛选和数据权限。明确不通过聚合根读取,不执行任何写操作,不新增绕过现有范围的全量接口,不把信用纳入 UR#97 的现金低余额预警。
|
||||
|
||||
- [ ] 现有资金概况接口对每个代理返回账面余额、冻结金额、现金可用金额、信用开关、额度、总可用金额、欠款状态、欠款金额和钱包版本,金额单位统一为分。
|
||||
- [ ] 现金可用金额固定为余额减冻结金额,总可用金额只加启用后的额度;欠款只由负账面余额决定,冻结占用信用但余额非负时不能误报欠款。
|
||||
- [ ] Query 延续现有分页、店铺和主账号筛选及平台/代理数据范围,批量投影主钱包信息且不存在按行钱包查询的 N+1。
|
||||
- [ ] 代理和无调额权限的平台账号仍可在既有查看范围读取资金事实,但响应不暗示其具有调整权限;后端调额授权继续由写接口独立判断。
|
||||
- [ ] UR#97 的现金低余额口径继续只消费现金可用金额,信用额度不能掩盖现金风险。
|
||||
- [ ] API 集成测试覆盖关闭信用、使用信用、冻结信用、负余额欠款、分页筛选、数据范围和金额边界;OpenAPI 契约明确前端展示及并发冲突刷新所需字段。
|
||||
@@ -0,0 +1,29 @@
|
||||
# 10 — 完成信用钱包停机切换与发布门禁
|
||||
|
||||
**What to build:** 发布负责人能够在停机窗口确认代理主钱包所有已触碰写入端、查询接口和数据库约束已经同时理解信用额度,再安全开放授信配置。发布检查能阻止旧现金条件、异常钱包、未投递事件或不安全回滚进入生产。
|
||||
|
||||
**Blocked by:**
|
||||
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/02-role-default-credit-template.md` — 02 — 配置客户角色的新建代理默认信用模板
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/03-atomic-shop-credit-snapshot.md` — 03 — 新建店铺原子复制角色信用模板
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/04-manage-shop-credit-limit.md` — 04 — 授权平台人员调整店铺实际信用额度
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/05-unified-agent-wallet-debit.md` — 05 — 统一代理订单、代购与钱包支付扣款
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/06-unified-agent-wallet-reservation.md` — 06 — 统一代理主钱包冻结与解冻
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/07-unified-agent-wallet-credit-posting.md` — 07 — 统一代理主钱包充值入账与人工调整
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/08-unified-agent-wallet-refund.md` — 08 — 统一代理订单退款回充
|
||||
- `.scratch/ur38-agent-main-wallet-credit/issues/09-fund-summary-credit-query.md` — 09 — 资金概况返回信用、总可用金额与欠款
|
||||
- `.scratch/tech-public-foundation/issues/03-outbox-at-least-once-delivery.md` — 03 — 完成 Outbox 到 Asynq 的至少一次投递闭环
|
||||
|
||||
**Status:** ready-for-agent
|
||||
|
||||
**架构通道:** 主通道为 Infrastructure,辅助通道为 Application 集成与 Query 验收。
|
||||
|
||||
**完整业务边界:** 本票收口 UR#38 的停机切换、旧写入口契约收缩、数据库验证、文档和发布回滚门禁。明确不迁移佣金钱包、资产钱包或未被本需求触碰的旧模块;不实现仓库外前端,只交付完整接口与交互验收契约。
|
||||
|
||||
- [ ] 静态盘点和集成测试证明代理主钱包扣款、冻结、解冻、充值、退款、人工调整及 UR#36 可消费的扣款接缝均使用统一 Wallet Domain/Application,不再存在旧现金条件写入口。
|
||||
- [ ] 停机迁移前后检查目标库真实约束、字段、索引、非法开关组合、冻结异常、总可用金额异常和历史信用关闭状态,任何异常以中文安全摘要阻断发布。
|
||||
- [ ] 端到端验收覆盖普通现金支付、信用扣款、冻结与解冻、充值清偿、退款回充、调额、创建店铺快照、并发冲突、幂等和可靠事件投递。
|
||||
- [ ] 开放普通访问前保持所有历史钱包信用关闭,并验证资金概况、角色模板、店铺调额接口权限及 OpenAPI 文档与真实路由一致。
|
||||
- [ ] 中文功能总结、README、数据库发布步骤、监控指标、异常处理和联调清单齐全;交互契约覆盖角色提示、按钮权限、金额精确显示、降额失败和版本冲突刷新。
|
||||
- [ ] 回滚说明区分未产生负余额时的安全回退与已产生负余额后的禁止回退条件;后者只能先清偿欠款或继续保留理解信用的资金逻辑。
|
||||
- [ ] 旧钱包写接缝仅在全部调用方完成迁移后收缩或删除,CI、真实 PostgreSQL/Redis/Asynq 集成测试和迁移检查全部通过后方可完成本票。
|
||||
Reference in New Issue
Block a user