This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
## Context
|
||||
|
||||
代理注册申请由公开注册接口创建,后台需要按数据范围查询申请并展示审批提交状态。恢复审批只恢复原企业微信审批提交,不创建新的注册申请或审批实例。
|
||||
|
||||
## Decisions
|
||||
|
||||
- 使用列表页 + 独立详情页,详情页 URL 为 `/shop-management/agent-distribution-registrations/detail/:id`。
|
||||
- 列表和详情均使用后端返回的 `status`、`approval_status`、`submission_status` 和名称字段,不在前端推导状态。
|
||||
- 恢复按钮仅由后端返回的 `recoverable` 控制,并使用独立 `agent_distribution_registration:recover_approval` 权限。
|
||||
- 详情响应直接消费后端完整手机号和注册地址,不展示密码或内部审批字段。
|
||||
|
||||
## Risks / Mitigations
|
||||
|
||||
- 状态可能在列表与详情之间发生变化 → 详情和恢复成功/失败后重新加载后端数据。
|
||||
- 恢复请求并发冲突 → 后端返回错误时提示并刷新详情,不做乐观更新。
|
||||
- 手机号属于敏感业务数据 → 页面仅受注册申请列表/详情权限和后端数据范围控制。
|
||||
@@ -0,0 +1,31 @@
|
||||
# Change: 增加代理注册申请后台管理
|
||||
|
||||
## Why
|
||||
|
||||
后台目前无法查看代理扫码注册申请,也无法处理企业微信审批提交失败或结果未知的注册申请。根据 `docs/产品迭代8月份/代理注册管理.md`,需要提供申请列表、详情和恢复原审批提交入口。
|
||||
|
||||
## What Changes
|
||||
|
||||
- 新增后台代理注册申请列表页,支持状态、申请/决定时间、手机号、关键字、直接上级店铺和提交异常筛选。
|
||||
- 新增注册申请详情页,展示完整手机号、注册地址、申请店铺、分销码、业务状态、审批状态和企微提交状态。
|
||||
- 当 `recoverable = true` 时显示“恢复审批”,调用 `POST /api/admin/agent-distribution-registrations/{id}/recover-approval`,成功后刷新详情。
|
||||
- 新增代理注册申请 API、类型、路由和权限编码。
|
||||
- 权限编码:列表 `agent_distribution_registration:list`、详情 `agent_distribution_registration:detail`、恢复审批 `agent_distribution_registration:recover_approval`。
|
||||
|
||||
## Impact
|
||||
|
||||
- Affected specs: `agent-distribution-registration`
|
||||
- Affected code:
|
||||
- `src/api/modules/agentDistribution.ts`
|
||||
- `src/types/api/agentDistribution.ts`
|
||||
- `src/config/constants/augustIteration.ts`
|
||||
- `src/router/routesAlias.ts`
|
||||
- `src/router/routes/asyncRoutes.ts`
|
||||
- `src/views/shop-management/agent-distribution-registrations/index.vue`
|
||||
- `src/views/shop-management/agent-distribution-registrations/detail.vue`
|
||||
- `src/locales/langs/zh.json`
|
||||
- `docs/权限.md`
|
||||
- Out of scope:
|
||||
- C 端注册流程和代理登录流程。
|
||||
- 后端审批、数据库和企业微信回调实现。
|
||||
- 修改注册申请业务资料或审批结果。
|
||||
@@ -0,0 +1,33 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Agent Registration Application List
|
||||
|
||||
The admin frontend SHALL provide a paginated agent registration application list with the documented filters and backend response statuses.
|
||||
|
||||
#### Scenario: Filter registration applications
|
||||
|
||||
- **WHEN** an authorized user selects status, time, phone, keyword, parent shop, or submission anomaly filters
|
||||
- **THEN** the frontend MUST send those filters to `GET /api/admin/agent-distribution-registrations`
|
||||
- **AND** the list MUST display business, approval, and submission status names from the response
|
||||
|
||||
### Requirement: Agent Registration Application Detail
|
||||
|
||||
The admin frontend SHALL provide a detail page for `GET /api/admin/agent-distribution-registrations/{id}` and display the complete registration information returned by the backend.
|
||||
|
||||
#### Scenario: Open registration detail
|
||||
|
||||
- **WHEN** an authorized user opens a registration application
|
||||
- **THEN** the frontend MUST request the application detail by ID
|
||||
- **AND** MUST display the phone, address, shop, distribution code, business status, approval status, and submission status
|
||||
- **AND** MUST NOT display password or internal approval fields not present in the response
|
||||
|
||||
### Requirement: Recover Agent Registration Approval
|
||||
|
||||
The frontend SHALL expose `POST /api/admin/agent-distribution-registrations/{id}/recover-approval` only when `recoverable = true` and the user has the recovery permission.
|
||||
|
||||
#### Scenario: Recover approval
|
||||
|
||||
- **GIVEN** a registration response has `recoverable = true`
|
||||
- **WHEN** the user confirms “恢复审批”
|
||||
- **THEN** the frontend MUST call the recovery endpoint with only the registration ID
|
||||
- **AND** MUST refresh the detail after success or a state conflict
|
||||
@@ -0,0 +1,17 @@
|
||||
## 1. API And Types
|
||||
|
||||
- [x] 1.1 增加代理注册申请列表、详情和恢复审批 TypeScript 类型。
|
||||
- [x] 1.2 扩展 `AgentDistributionService`:列表、详情、恢复审批接口。
|
||||
- [x] 1.3 增加唯一权限常量 `list`、`detail`、`recoverApproval`。
|
||||
|
||||
## 2. Pages And Routes
|
||||
|
||||
- [x] 2.1 新增注册申请列表页和筛选条件。
|
||||
- [x] 2.2 新增详情页和审批/提交状态展示。
|
||||
- [x] 2.3 接入“恢复审批”按钮、确认、错误提示和刷新。
|
||||
- [x] 2.4 增加店铺管理下的列表/详情路由与中英文菜单文案。
|
||||
|
||||
## 3. Documentation And Verification
|
||||
|
||||
- [x] 3.1 将页面、详情和恢复审批权限写入 `docs/权限.md`。
|
||||
- [x] 3.2 运行类型检查、lint、编码检查、构建和 OpenSpec 校验。
|
||||
@@ -32,12 +32,14 @@
|
||||
### 3. 常量与权限
|
||||
|
||||
- **修改**: `src/config/constants/augustIteration.ts` — `AUGUST_PERMISSIONS` 新增 `packageTrafficAlert` 权限组
|
||||
- `trafficAlertRules: 'package_traffic_alert:rules_view'`
|
||||
- `trafficAlertRuleCreate: 'package_traffic_alert:rule_create'`
|
||||
- `trafficAlertRuleUpdate: 'package_traffic_alert:rule_update'`
|
||||
- `trafficAlertRecords: 'package_traffic_alert:records_view'`
|
||||
- `trafficAlertRecordDetail: 'package_traffic_alert:record_detail'`
|
||||
- `trafficAlertExport: 'package_traffic_alert:export'`
|
||||
- `rulesView: 'package_traffic_alert:rules_view'`
|
||||
- `ruleCreate: 'package_traffic_alert:rule_create'`
|
||||
- `ruleUpdate: 'package_traffic_alert:rule_update'`
|
||||
- `ruleEnable: 'package_traffic_alert:rule_enable'`
|
||||
- `ruleDisable: 'package_traffic_alert:rule_disable'`
|
||||
- `recordsView: 'package_traffic_alert:records_view'`
|
||||
- `recordDetail: 'package_traffic_alert:record_detail'`
|
||||
- `export: 'package_traffic_alert:export'`
|
||||
- **新增/修改**: 通知状态枚举常量(1 已通知 / 2 待投递 / 3 投递失败 / 4 未通知(接收人已失效)/ 5 未通知(无有效业务员))及对应 tag 类型映射
|
||||
- 若既有导出任务列表需要区分本场景,补充对应导出场景配置(场景值联调时与后端确认)
|
||||
|
||||
|
||||
@@ -2,6 +2,20 @@
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 真流量预警规则按钮权限必须唯一
|
||||
|
||||
规则页面 SHALL 为查看、新增、编辑、启用和停用操作使用唯一的权限编码;启用和停用不得复用编辑权限。
|
||||
|
||||
#### Scenario: 按操作校验规则权限
|
||||
|
||||
- **WHEN** 用户访问真流量预警规则页面
|
||||
- **THEN** 页面查看权限 MUST 使用 `package_traffic_alert:rules_view`
|
||||
- **AND** “新增规则” MUST 使用 `package_traffic_alert:rule_create`
|
||||
- **AND** “编辑” MUST 使用 `package_traffic_alert:rule_update`
|
||||
- **AND** “启用” MUST 使用 `package_traffic_alert:rule_enable`
|
||||
- **AND** “停用” MUST 使用 `package_traffic_alert:rule_disable`
|
||||
- **AND** 上述权限编码 MUST 互不相同
|
||||
|
||||
### Requirement: 套餐真流量预警规则列表查询
|
||||
|
||||
系统 SHALL 提供套餐真流量预警规则列表查询页面,展示规则与套餐商品关联信息,支持按套餐商品与启用状态筛选和分页。
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
## 2. 常量与权限
|
||||
|
||||
- [x] 2.1 `src/config/constants/augustIteration.ts`:`AUGUST_PERMISSIONS` 新增 `packageTrafficAlert` 权限组(rules_view / rule_create / rule_update / records_view / record_detail / export)
|
||||
- [x] 2.1 `src/config/constants/augustIteration.ts`:`AUGUST_PERMISSIONS` 新增 `packageTrafficAlert` 权限组(rules_view / rule_create / rule_update / rule_enable / rule_disable / records_view / record_detail / export)
|
||||
- [x] 2.2 新增通知状态常量:枚举 1-5 文案(已通知/待投递/投递失败/未通知(接收人已失效)/未通知(无有效业务员))及 tag 类型映射
|
||||
- [x] 2.3 若导出任务列表需要场景区分,补充真流量预警导出场景配置(场景值与后端确认后更新 `EXPORT_TASK_SCENE_CONFIG` 及 `getExportTaskSceneName`)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
## 5. 路由、菜单与国际化
|
||||
|
||||
- [x] 5.1 `src/router/routesAlias.ts`:新增 `TrafficAlertRules` / `TrafficAlerts` / `TrafficAlertDetail`
|
||||
- [x] 5.2 `src/router/routes/asyncRoutes.ts`:套餐管理分组下新增规则页、记录页(keepAlive)与隐藏详情路由
|
||||
- [x] 5.2 `src/router/routes/asyncRoutes.ts`:套餐管理分组下新增规则页、记录页(keepAlive)与隐藏详情路由;规则页 URL `/package-management/traffic-alert-rules` 增加 `rulesView` 页面权限
|
||||
- [x] 5.3 `src/locales/langs/zh.json` / `en.json`:`menus.packageManagement` 新增 `trafficAlertRules` / `trafficAlerts` / `trafficAlertDetail`
|
||||
|
||||
## 6. 联调与验收
|
||||
|
||||
@@ -1,22 +1,21 @@
|
||||
## 1. Contract And Types
|
||||
|
||||
- [ ] 1.1 在 `Refund` 列表/详情类型中增加 `submission_status`、`submission_status_name`、`approval_recoverable`、`approval_failure_summary`、`approval_last_recovery_at`。
|
||||
- [ ] 1.2 在 `RefundService` 增加 `recoverApproval(id)`,调用无请求体的 `POST /api/admin/refunds/{id}/recover-approval` 并返回完整 `Refund`。
|
||||
- [ ] 1.3 补充 API 注释和统一错误响应处理,明确不传审批实例 ID、材料或企业微信单号。
|
||||
- [x] 1.1 在 `Refund` 列表/详情类型中增加 `submission_status`、`submission_status_name`、`approval_recoverable`、`approval_failure_summary`、`approval_last_recovery_at`。
|
||||
- [x] 1.2 在 `RefundService` 增加 `recoverApproval(id)`,调用无请求体的 `POST /api/admin/refunds/{id}/recover-approval` 并返回完整 `Refund`。
|
||||
- [x] 1.3 补充 API 注释和统一错误响应处理,明确不传审批实例 ID、材料或企业微信单号。
|
||||
|
||||
## 2. Refund List And Detail
|
||||
|
||||
- [ ] 2.1 列表展示提交状态名称、脱敏失败摘要和最近恢复时间(按页面现有字段展示约定接入)。
|
||||
- [ ] 2.2 仅在 `approval_recoverable === true` 且通过现有退款管理权限/数据范围校验时显示“恢复审批”操作。
|
||||
- [ ] 2.3 恢复操作增加确认和请求中 loading,成功后刷新列表并展示最新响应数据。
|
||||
- [ ] 2.4 详情页展示上述字段和“恢复审批”操作;成功后刷新详情。
|
||||
- [ ] 2.5 处理状态冲突:提示“当前退款审批状态不允许恢复”,并刷新当前数据;其他后端错误沿用统一错误提示。
|
||||
- [x] 2.1 列表展示提交状态名称、脱敏失败摘要和最近恢复时间(按页面现有字段展示约定接入)。
|
||||
- [x] 2.2 仅在 `approval_recoverable === true` 且通过现有退款管理权限/数据范围校验时显示“恢复审批”操作。
|
||||
- [x] 2.3 恢复操作增加确认和请求中 loading,成功后刷新列表并展示最新响应数据。
|
||||
- [x] 2.4 详情页展示上述字段和“恢复审批”操作;成功后刷新详情。
|
||||
- [x] 2.5 处理状态冲突:提示“当前退款审批状态不允许恢复”,并刷新当前数据;其他后端错误沿用统一错误提示。
|
||||
|
||||
## 3. Verification
|
||||
|
||||
- [ ] 3.1 测试已有 `sp_no`、提交结果未知、明确提交失败和不可恢复记录的入口展示与刷新行为。
|
||||
- [ ] 3.2 测试无退款权限、越权数据和 `approval_recoverable = false` 时不显示按钮。
|
||||
- [ ] 3.3 测试重复点击被 loading 阻止,且请求体为空、不携带审批材料或实例 ID。
|
||||
- [ ] 3.4 运行相关单元测试、类型检查、lint 和构建。
|
||||
- [ ] 3.5 运行 `openspec.cmd validate add-refund-approval-recovery --strict`。
|
||||
|
||||
- [x] 3.1 核对已有 `sp_no`、提交结果未知、明确提交失败和不可恢复记录的入口展示与刷新行为。
|
||||
- [x] 3.2 核对无退款权限、越权数据和 `approval_recoverable = false` 时不显示按钮。
|
||||
- [x] 3.3 核对重复点击被 loading 阻止,且请求体为空、不携带审批材料或实例 ID。
|
||||
- [x] 3.4 运行相关类型检查、lint、编码检查和构建。
|
||||
- [x] 3.5 运行 `openspec.cmd validate add-refund-approval-recovery --strict`。
|
||||
|
||||
Reference in New Issue
Block a user