feat: wire admin workflows to real APIs
This commit is contained in:
@@ -55,9 +55,10 @@
|
||||
- 账单流水
|
||||
- 企业认证
|
||||
- 用户管理
|
||||
- 账号设置
|
||||
- 系统日志
|
||||
|
||||
第一版不展示独立“账号设置”菜单,退出登录、修改密码统一放在右上角用户头像下拉菜单。
|
||||
|
||||
暂不开发:
|
||||
|
||||
- 彩信服务分组下全部菜单
|
||||
@@ -241,26 +242,41 @@
|
||||
- 展示总发送量、成功率、通道健康度、待处理审核数。
|
||||
- 发送监控展示通道状态、发送趋势、失败率、积压队列。
|
||||
- 数据统计支持按企业、应用、通道、日期统计。
|
||||
- 运营概览一级菜单下只保留运营看板、发送监控、数据统计;客户管理独立作为一级业务域展示,避免重复菜单。
|
||||
- 右上角消息铃铛展示所有待审核任务总数,并按企业认证、短信审核、短信模板审核、签名审核等分类展示;点击分类跳转到对应审核页面。
|
||||
- 新审核任务进入时,运营端应触发浏览器通知或站内提醒;提醒数据必须来自真实待审核数量接口,不得只写死前端数字。
|
||||
|
||||
### 5.11 运营端客户与企业
|
||||
|
||||
- 支持企业列表、企业详情、新增、编辑、启用、停用。
|
||||
- 支持企业认证资料审核。
|
||||
- 支持查看企业下应用、签名、模板、发送记录、报备记录。
|
||||
- 企业管理列表不提供无业务意义的“详情”按钮;需要查看明细时从企业应用、签名、模板、发送记录等业务入口进入。
|
||||
- 企业应用管理编辑保存后返回企业应用管理列表。
|
||||
- 企业应用列表展示 CMPP 连接数;点击连接数打开连接详情弹窗,内容包含连接 id、状态、连接建立时间、最近心跳时间、上次提交时间、窗口占用等。
|
||||
- 企业应用连接详情支持删除连接;删除连接必须调用真实后端接口或 Gateway 回写接口,并写入系统日志。
|
||||
- 企业应用列表提供 CMPP 连接参数查看与一键复制能力,参数来源于真实应用/通道配置,不允许只在前端拼接假数据。
|
||||
|
||||
### 5.12 运营端审核
|
||||
|
||||
- 企业认证审核:通过、驳回、查看材料。
|
||||
- 企业认证详情必须展示客户提交的主体资料、统一社会信用代码、法定代表人、注册地址、营业执照附件、对公账户验证资料、联系人信息、提交时间、审核备注、驳回原因等;通过/驳回必须更新认证记录和租户认证状态,并写操作日志。
|
||||
- 短信模板审核:通过、驳回、敏感词提示、变量检查。
|
||||
- 短信模板审核必须支持按客户、应用、模板内容、审核编号和审核状态搜索;搜索应由真实后端 API 支持,前端只做展示和交互。
|
||||
- 短信审核:查看短信内容、号码量、计费条数、进入审核原因、命中规则、风险原因;支持通过、驳回。
|
||||
- 审核动作集中在审核中心;企业应用/签名/模板管理页面只做查询、维护、停用、备注和查看审核记录。
|
||||
|
||||
### 5.13 运营端通道管理
|
||||
|
||||
- 支持新增、编辑、删除、启用、停用短信通道。
|
||||
- 删除通道采用软删除或停用归档,不能破坏历史发送、报备、日志外键;删除、启用、停用、复制等高影响操作必须二次确认并写系统日志。
|
||||
- 支持复制通道:复制后新建一个通道,除 id/code 自动生成外,通道配置、CMPP 参数、通道报备字段、签名/引流报备材料和个性化字段配置均需从源通道复制;名称默认追加“副本”。
|
||||
- 支持发送测试短信。
|
||||
- 支持查看通道成功率、未知率、失败率、累计发送量。
|
||||
- 支持进入通道报备详情。
|
||||
- 通道报备详情页中,签名下的引流信息默认收起,用户点击后展开;展开/收起只影响页面展示,不改变报备数据。
|
||||
- 通道列表状态区域展示“链接日志”入口;点击后弹窗展示真实连接日志,包括新建连接、断开、心跳、重连、异常等事件,日志来源于 Gateway 回写或 OperationLog。
|
||||
- 通道操作按钮应保持一致的两列布局,报备详情、编辑、复制、发送测试、启停、删除等操作文案清晰。
|
||||
|
||||
### 5.14 运营端通道组管理
|
||||
|
||||
@@ -288,6 +304,9 @@
|
||||
- 敏感词管理:发送前和审核时命中提示或拦截。
|
||||
- 手机号段库:用于运营商识别和路由。
|
||||
- 引流信息字段库:用于签名/报备资料结构化采集。
|
||||
- 企业黑名单、全局黑名单、敏感词管理必须提供搜索、添加、启停/删除功能;所有操作调用真实后端 API,写入系统日志。
|
||||
- 企业黑名单支持按企业、应用、手机号、入库原因、状态搜索;全局黑名单支持按手机号、原因、状态搜索;敏感词支持按词、分类/级别、状态搜索。
|
||||
- “引流信息字段库”菜单命名为“报备字段库”,编辑、删除按钮使用通用操作按钮样式。
|
||||
|
||||
### 5.18 风控规则闭环
|
||||
|
||||
@@ -318,8 +337,11 @@
|
||||
|
||||
### 5.21 系统管理与审计
|
||||
|
||||
- 用户管理支持角色、权限、启停、重置密码。
|
||||
- 系统日志记录登录、配置变更、审核、发送、导入导出、密钥重置等操作。
|
||||
- 用户管理支持角色、权限、启停、重置密码;客户端用户角色第一版限定一个企业管理员,避免多个企业管理员导致租户管理边界不清。
|
||||
- 用户管理删除按钮使用统一危险操作样式;删除、启停、重置密码必须二次确认并写操作日志。
|
||||
- 客户端和运营端右上角用户头像提供下拉菜单,支持退出登录、修改密码;账号设置独立菜单第一版不展示。
|
||||
- 客户端和运营端系统日志均支持分页、搜索和详情展示;详情列内容较长时使用详情卡/弹窗展示,不能被表格窄列截断。
|
||||
- 系统日志记录登录、退出、配置变更、审核、发送、导入导出、密钥重置、通道复制、通道启停、通道删除、连接状态变化、安全控制变更等操作。
|
||||
|
||||
## 6. 非功能需求
|
||||
|
||||
@@ -550,6 +572,12 @@
|
||||
- `GET /api/client/billing/transactions`
|
||||
- `POST /api/client/enterprise-certification`
|
||||
- `GET /api/client/users`
|
||||
- `POST /api/client/users`
|
||||
- `PUT /api/client/users/{id}`
|
||||
- `DELETE /api/client/users/{id}`
|
||||
- `POST /api/client/users/{id}/status`
|
||||
- `POST /api/client/users/{id}/password/reset`
|
||||
- `POST /api/client/auth/password/change`
|
||||
- `GET /api/client/system-logs`
|
||||
|
||||
### 10.2 运营端 API
|
||||
@@ -561,15 +589,29 @@
|
||||
- `POST /api/admin/enterprises`
|
||||
- `PUT /api/admin/enterprises/{id}`
|
||||
- `GET /api/admin/enterprise-applications`
|
||||
- `PUT /api/admin/enterprise-applications/{id}`
|
||||
- `GET /api/admin/enterprise-applications/{id}/connections`
|
||||
- `DELETE /api/admin/enterprise-applications/{id}/connections/{connectionId}`
|
||||
- `GET /api/admin/enterprise-applications/{id}/cmpp-params`
|
||||
- `GET /api/admin/enterprise-signatures`
|
||||
- `GET /api/admin/enterprise-templates`
|
||||
- `GET /api/admin/enterprise-certifications`
|
||||
- `GET /api/admin/enterprise-certifications/{id}`
|
||||
- `POST /api/admin/enterprise-certifications/{id}/approve`
|
||||
- `POST /api/admin/enterprise-certifications/{id}/reject`
|
||||
- `GET /api/admin/audit-summary`
|
||||
- `POST /api/admin/audits/{id}/approve`
|
||||
- `POST /api/admin/audits/{id}/reject`
|
||||
- `GET /api/admin/channels`
|
||||
- `POST /api/admin/channels`
|
||||
- `PUT /api/admin/channels/{id}`
|
||||
- `POST /api/admin/channels/{id}/status`
|
||||
- `DELETE /api/admin/channels/{id}`
|
||||
- `POST /api/admin/channels/{id}/copy`
|
||||
- `POST /api/admin/channels/{id}/test`
|
||||
- `GET /api/admin/channels/{id}/reports`
|
||||
- `GET /api/admin/channels/{id}/connections`
|
||||
- `GET /api/admin/channels/{id}/link-logs`
|
||||
- `POST /api/admin/channel-groups`
|
||||
- `GET /api/admin/report-tasks`
|
||||
- `POST /api/admin/report-tasks/generate`
|
||||
@@ -579,9 +621,18 @@
|
||||
- `GET /api/admin/sms/tasks`
|
||||
- `GET /api/admin/sms/records`
|
||||
- `GET /api/admin/sms/uplinks`
|
||||
- `GET /api/admin/blacklists/enterprise`
|
||||
- `GET /api/admin/blacklists/global`
|
||||
- `GET /api/admin/sensitive-words`
|
||||
- `GET /api/admin/dictionaries/blacklists/enterprise`
|
||||
- `POST /api/admin/dictionaries/blacklists/enterprise`
|
||||
- `POST /api/admin/dictionaries/blacklists/enterprise/{id}/status`
|
||||
- `DELETE /api/admin/dictionaries/blacklists/enterprise/{id}`
|
||||
- `GET /api/admin/dictionaries/blacklists/global`
|
||||
- `POST /api/admin/dictionaries/blacklists/global`
|
||||
- `POST /api/admin/dictionaries/blacklists/global/{id}/status`
|
||||
- `DELETE /api/admin/dictionaries/blacklists/global/{id}`
|
||||
- `GET /api/admin/dictionaries/sensitive-words`
|
||||
- `POST /api/admin/dictionaries/sensitive-words`
|
||||
- `POST /api/admin/dictionaries/sensitive-words/{id}/status`
|
||||
- `DELETE /api/admin/dictionaries/sensitive-words/{id}`
|
||||
- `GET /api/admin/risk-rules`
|
||||
- `POST /api/admin/risk-rules`
|
||||
- `PUT /api/admin/risk-rules/{id}`
|
||||
@@ -593,7 +644,17 @@
|
||||
- `POST /api/admin/billing/recharges`
|
||||
- `GET /api/admin/phone-segments`
|
||||
- `GET /api/admin/drainage-fields`
|
||||
- `POST /api/admin/drainage-fields`
|
||||
- `PUT /api/admin/drainage-fields/{id}`
|
||||
- `DELETE /api/admin/drainage-fields/{id}`
|
||||
- `GET /api/admin/users`
|
||||
- `POST /api/admin/users`
|
||||
- `PUT /api/admin/users/{id}`
|
||||
- `DELETE /api/admin/users/{id}`
|
||||
- `POST /api/admin/users/{id}/status`
|
||||
- `POST /api/admin/users/{id}/password/reset`
|
||||
- `POST /api/admin/auth/password/change`
|
||||
- `GET /api/admin/system-logs`
|
||||
|
||||
### 10.3 通道回调 API
|
||||
|
||||
@@ -774,8 +835,9 @@
|
||||
2. NestJS 后端实现 Prisma schema、migration、Service、Controller、DTO、单元测试。
|
||||
3. Go Gateway 实现配置、连接管理、CMPP submit/deliver/active test、回执事件发布、单元测试。
|
||||
4. 前端将对应 mock 数据替换为 API 调用,保留现有视觉样式。
|
||||
5. 补充错误处理、权限校验、操作日志。
|
||||
6. 运行构建和相关测试。
|
||||
5. 原型阶段的 mock、localStorage 或静态数据只能作为开发临时兜底,不得作为真实开发完成标准;审核、通道、连接、日志、黑名单、敏感词、报备字段、用户、账务等闭环必须接入真实 API、数据库或 Gateway 回写。
|
||||
6. 补充错误处理、权限校验、操作日志。
|
||||
7. 运行构建和相关测试,并更新测试进度文档。
|
||||
```
|
||||
|
||||
## 14. 已确认关键决策
|
||||
@@ -1096,6 +1158,7 @@
|
||||
- 不从零手写整个 CMPP 协议栈,也不直接照搬完整开源网关;协议层可复用,服务层按本项目自研。
|
||||
- NestJS 负责业务审核、风控、计费、报备、路由和发送编排。
|
||||
- Go Gateway 只负责 CMPP 连接、协议提交、submit resp、回执、上行事件回传。
|
||||
- 当前项目已进入真实开发阶段;前端 mock、localStorage 或静态数据只能临时兜底,不能作为功能完成标准。涉及审核、通道、连接、日志、安全控制、用户、账务等闭环时,必须接入真实 API、数据库或 Gateway 回写,并补测试。
|
||||
|
||||
请从 docs/first-version-development-requirements.md 的“阶段 0:技术 Spike”开始执行。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user