update
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s

This commit is contained in:
2026-09-03 09:28:28 +08:00
parent dbfeeee253
commit 370fd3e67f
150 changed files with 64402 additions and 247 deletions

View File

@@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-08-31

View File

@@ -0,0 +1,29 @@
## Context
通道累计流量和停复机已有外部调用链;本能力增加本地停机锁及可靠任务,不改变套餐预警。
## Decisions
- 通道配置和卡周期锁分表;锁以通道、卡、周期唯一。
- 达量事务写锁和 Outbox 停机任务;新周期扫描按锁、主套餐和其他锁决定仅解锁或复机。
## 配置、锁与任务契约
### 通道配置
- 扩展既有运营商通道创建/编辑 DTO`traffic_threshold_enabled``traffic_threshold_value``traffic_threshold_unit``traffic_period_type``traffic_period_start_day``traffic_threshold_status`。仅超级管理员、平台用户可读写;阈值必须为正数,单位只能是系统支持的 MB/GB周期起始日为 128所有时间边界按上海时区计算。
- 启用时完整校验字段;停用时停止后续达量判断但不删除当前周期锁或历史任务结果。新增、更新、启用、停用均写通道 ID、前后字段、操作者和时间审计不向代理、企业、个人客户暴露配置字段。
### 达量停机
- 运营商流量同步/周期扫描按卡当前所属通道及上海时区周期边界读取运营商回传累计流量,换算至配置单位;不使用套餐真流量预警数据。达到或超过阈值时,事务中以 `(channel_id, card_id, period_start)` 唯一键创建通道阈值停机锁和 Outbox 停机任务。
- 唯一冲突表示该周期已处理;重复同步、并发扫描或任务重放不得创建第二把锁或重复发起停机。停机调用失败/未知保留锁、任务结果与安全失败原因,复用既有外部调用恢复;锁存在时所有人工或自动复机入口先拒绝。
### 新周期解锁与复机
- 周期转换任务锁定上周期仍有效的通道锁,解除其通道阈值限制;随后重新检查当前有效主套餐、风险停机、销户和其他停机锁。仅全部条件允许时写可靠复机任务;任一条件不满足时只解锁,不调用运营商。
- 复机任务成功记录结果;失败/未知保留可恢复执行结果,不重建通道锁或改变套餐状态。通道停用、卡换通道或删除配置均不得使历史锁/任务失去审计关联。
## Migration Plan
新增成对迁移;隔离库验证周期边界、重复达量、停机失败、复机条件和 up/down/up。

View File

@@ -0,0 +1,24 @@
## Scope
- 迭代编号:`AUG26-011`
## Why
运营商通道需按其计费周期流量自动停复机,不能与套餐预警混用。
## What Changes
- 新增通道阈值、周期和停机锁。
- 达量可靠停机,新周期按套餐和其他锁条件复机。
## Capabilities
### New Capabilities
- `carrier-channel-traffic-threshold`: 通道流量阈值控制。
### Modified Capabilities
- 无。
## Impact
影响通道、卡状态、可靠任务、外部运营商调用和 Schema。

View File

@@ -0,0 +1,25 @@
## Purpose
按运营商通道自身计费周期和累计流量控制停复机,独立于套餐真流量预警。
## ADDED Requirements
### Requirement: 通道阈值配置、权限与审计
仅超级管理员和平台用户 SHALL 在运营商通道新建或编辑时配置流量阈值开关、阈值数值、流量单位、统计周期和生效状态;阈值数值必须为正,单位必须为系统支持单位,统计周期必须能换算为明确起止边界。新增、修改、启用、停用均必须记录操作者、修改前后字段和时间。代理、企业和个人客户不得读取或修改通道阈值配置。
#### Scenario: 越权修改通道阈值
- **WHEN** 非超级管理员、非平台用户请求创建、编辑或启停通道阈值
- **THEN** 系统拒绝请求,不修改配置且不产生审计成功事实
### Requirement: 通道阈值停机与周期恢复
系统 SHALL 为每个已启用运营商通道按其配置统计周期判断运营商回传的每张卡当前周期累计流量;达量即写通道阈值停机锁、创建可靠停机任务并调用运营商停机。持锁卡在当前周期内 MUST 拒绝复机;调用失败或未知保留任务结果并按既有恢复机制处理。
新周期开始时,系统 SHALL 对仍持锁卡解除通道锁;仅存在有效主套餐且不存在风险停机、销户或其他停机锁时调用自动复机,不符合条件不得调用复机。复机失败记录结果并可靠处理。
#### Scenario: 达量后人工复机
- **WHEN** 当前计费周期内持有通道阈值停机锁的卡请求复机
- **THEN** 系统拒绝复机且保留该锁
#### Scenario: 新周期仍有其他停机锁
- **WHEN** 新周期开始的持锁卡没有风险停机但存在其他停机锁
- **THEN** 系统解除通道阈值锁但不调用运营商复机

View File

@@ -0,0 +1,8 @@
## 1. 阈值控制
- [ ] 1.1 追踪通道流量、卡状态、停复机锁、运营商任务与恢复链路。
- [ ] 1.2 新增通道配置、周期停机锁、任务结果的成对迁移、模型、索引和管理接口。
- [ ] 1.3 实现达量写锁/可靠停机、周期扫描解锁/条件复机及幂等恢复。
## 2. 验证
- [ ] 2.1 隔离库验证周期、达量、拒绝复机、其他锁、失败重试和 up/down/up。
- [ ] 2.2 运行 `gofmt -w``go build ./cmd/api ./cmd/worker``go run cmd/gendocs/main.go``openspec validate add-carrier-channel-traffic-thresholds --strict``openspec doctor --json`;自动化测试按项目决策为 N/A。