Files
lislgosms/docs/testing-progress.md
T

27 KiB
Raw Blame History

第一版系统化测试进度

2026-07-01

新增测试基础

  • API 引入 Jest + ts-jest。
  • API 新增脚本:
    • npm --prefix api test
    • npm --prefix api test -- <spec>
  • 根目录新增脚本:
    • npm run test:api
    • npm run test:gateway

新增 API 测试

测试文件 覆盖范围
api/src/risk-review/risk-review.service.spec.ts 最大号码数、重复率、非法号码率、黑名单率、模板变量异常、非工作时间营销大批量、短时间频控、直接拒绝、人工审核。
api/src/billing/billing.service.spec.ts 70/67 费用预估、余额/授信/套餐检查、充值、冻结、扣费、释放、退款、调整、短信计费记录。
api/src/send-chain/send-chain.service.spec.ts 批量任务创建、手机号去重拆分、发送入队、Gateway SubmitCommand 投递、submit result、receipt、uplink、72 小时未知转超时。
api/src/channels/channels.service.spec.ts 通道创建、路由规则、报备材料 upsert、报备任务创建、导出、回执导入、签名报备状态同步。
api/src/operations/operations.service.spec.ts 发送记录查询过滤、dashboard、statistics、trace、reconciliation。

新增 Gateway 测试

  • gateway/internal/tracker/tracker_test.go 增加并发 SEQID/MSGID/GatewayMessageID 映射测试。
  • 既有 Gateway 测试继续覆盖:
    • tracker 基础映射和未知 submit resp。
    • reconnector 重连和最终错误返回。
    • health handler。
    • gocmpp adapter。
    • spike simulator。

已执行命令

npm --prefix api test -- risk-review.service.spec.ts
npm --prefix api test -- billing.service.spec.ts
npm --prefix api test -- send-chain.service.spec.ts
npm --prefix api test -- channels.service.spec.ts
npm --prefix api test -- operations.service.spec.ts
npm run test:api
npm run verify:phase8
npm run build
npm run spike:gateway
npm --prefix api test
npm run test:gateway
node tools/smoke/real-env-smoke.mjs
$env:API_PORT='3101'; npm --prefix api run start:dev
node <inline step4 precheck smoke>
$env:API_PORT='3101'; $env:API_ENABLE_SEND_WORKER='true'; npm --prefix api run start:dev
node <inline step5 send-chain smoke>
node <inline step5 schedule probe>
$env:API_PORT='3101'; npm --prefix api run start:dev
node <inline step6 billing/reconciliation smoke>
node <inline step6 auto-billing probe>
npm run spike:contracts
npm run test:gateway
$env:API_PORT='3101'; $env:API_ENABLE_SEND_WORKER='true'; npm --prefix api run start:dev
node <inline step7 channel/cmpp status smoke>
npm run verify:phase8
npm run test:api
npm run test:gateway

当前结果

  • API Jest5 个 test suite 通过,22 个测试通过。
  • Gatewaynpm run spike:gateway 通过。
  • 阶段 8 完整验证:npm run verify:phase8 通过,其中 BullMQ spike 15000 条消息、并发 500、端到端 705.65 TPS,满足 500 TPS。
  • 前端 build 通过,仍存在既有 Vite chunk size warning。
  • API Jest 使用 mock 依赖的结果仅代表单元/轻集成测试通过;系统功能验收仍要求 PostgreSQL/Redis/MinIO 和真实 API smoke 通过。
  • 真实 PostgreSQL/Redis/MinIO smoke 通过:
    • PostgreSQL localhost:5432、Redis localhost:6379、MinIO localhost:9000/9001 端口均连通。
    • npm --prefix api run prisma:migrate:deploy 通过,无待应用迁移。
    • API 以真实 .env 启动,GET http://127.0.0.1:3101/api/health 返回 ok
    • tools/smoke/real-env-smoke.mjs 已补充最小幂等 seed,并验证登录、企业/客户、人工充值、余额检查、发送任务、MinIO 预签名上传、运营日志、发送链路追踪和账务对账聚合。
  • 第 4 步发送前置校验 smoke 通过:
    • TC-TEMPLATE-001TC-TEMPLATE-002TC-TEMPLATE-003 / TC-RISK-005TC-RISK-001TC-RISK-002TC-RISK-003TC-RISK-004TC-BILLING-001 / TC-TEMPLATE-005TC-BILLING-PRECHECK-001 均通过。
    • 记录两个接口健壮性问题:不存在的 reviewerId、不存在的 createdById 会触发数据库外键 500。
    • 客户侧导入发送、非法字符展示、敏感词接入发送前风控当前缺少完整入口,已在 docs/testing-execution-step-4.md 记录为阻塞缺口。
  • 第 5 步发送链路 smoke 通过:
    • TC-SEND-001 / TC-SEND-002TC-SEND-003 / TC-SEND-004TC-SEND-005TC-SEND-006TC-SEND-007TC-SEND-008TC-SEND-009 / TC-SEND-010 均通过。
    • 使用真实 Redis/BullMQ 和 API_ENABLE_SEND_WORKER=true 验证了任务创建、号码去重拆分、自动入队、Worker 消费、submit record、submit result、receipt、uplink、72 小时 unknown 转 timeout、客户端/运营端任务查看。
    • 定时发送探测发现 scheduledAt/sendMode=scheduled 会被接口忽略,任务直接变为 queued,已在 docs/testing-execution-step-5.md 记录为功能缺口。
  • 第 6 步计费和对账 smoke 通过:
    • TC-BILLING-001TC-BILLING-002 / TC-RECHARGE-001TC-BILLING-003TC-BILLING-004 / TC-BILLING-005 / TC-BILLING-006 / TC-BILLING-007TC-BILLING-008 / TC-RECON-001 seedTC-RECON-001TC-DASHBOARD-001 / TC-STAT-001TC-TRACE-001TC-BILLING-009 均通过。
    • 验证了费用预估、人工充值、余额检查、冻结、扣费、释放、退款、短信计费记录、账务流水、dashboard/statistics、trace 和 reconciliation。
    • 自动计费探测发现发送任务不会自动生成短信计费记录、账户交易流水,消息金额默认为 0,已在 docs/testing-execution-step-6.md 记录为发送计费集成缺口。
  • 第 7 步客户/通道 CMPP 连接状态和 Gateway smoke 通过:
    • TC-GW-CONTRACT-001TC-GW-001TC-GW-002TC-GW-003TC-GW-004TC-CMPP-STATUS-001 / TC-CHANNEL-001TC-CHANNEL-ROUTE-001TC-CHANNEL-METRIC-001TC-CMPP-SESSION-001 / TC-CONNECTION-COUNT-001TC-CMPP-STATUS-002 / TC-OPERATIONS-MONITOR-001TC-GATEWAY-EVENT-001 均通过。
    • 验证了 Gateway 队列契约、Go Gateway health/重连/tracker/gocmpp 模拟器、通道创建、路由、metrics、submit session、通道维度监控和 Gateway submit event trace。
    • 客户级 CMPP 连接状态、客户连接数量、通道连接列表和 Gateway health 聚合到运营 dashboard 尚缺少一等 API,已在 docs/testing-execution-step-7.md 记录。
  • 第 8 步最终回归通过:
    • npm run verify:phase8 通过,BullMQ 15000 条消息、并发 500、端到端 TPS 668.71,满足 500 TPSPrisma generate、API build、前端 build 均通过。
    • npm run test:api 通过,5 个 test suite、22 个 tests 全部通过。
    • npm run test:gateway 通过,Go Gateway health、connection、tracker、cmpp、spike 测试全部通过。
    • 最终归档见 docs/testing-execution-step-8.md

已知缺口

  • 暂未新增前端测试框架,前端仍以 npm run build 作为 smoke。
  • BullMQ 真实链路仍由 npm run spike:bullmq 覆盖,不在 Jest 内启动 Redis。
  • Gateway 未接真实运营商 SMSC;真实 CMPP 互通需要运营商测试环境后补充联调记录。
  • 客户侧导入发送、短信内容非法字符展示和敏感词发送前拦截尚未形成完整业务入口。
  • 定时短信发送缺少计划发送时间字段、scheduled 状态、到点触发和取消接口。
  • 发送链路尚未自动接入计费闭环,发送任务不会自动冻结/扣费/生成短信计费记录。
  • 客户/通道 CMPP 连接状态和连接数量尚未形成运营端/客户端一等接口,Gateway health 未聚合到 NestJS dashboard。

2026-07-01 缺口修复复测

本轮修复范围

  • P0 定时短信发送闭环:
    • SmsBatchTask 增加 scheduledAtcanceledAt 字段和 status/scheduledAt 索引。
    • CreateBatchTaskDto 支持 sendMode=scheduledscheduledAt
    • 新增定时任务取消和到点触发入口:POST /api/client/send/batch-tasks/:id/cancelPOST /api/admin/send/scheduled/dispatch-due
    • 到点触发前重新校验企业状态、认证状态、应用状态、模板审核状态、签名审核/报备状态和账户余额。
  • P0 发送链路自动计费闭环:
    • 发送创建时按通道单价写入消息计费条数、单价和金额。
    • 立即发送创建时执行账户检查和冻结;定时发送创建时检查余额,到点再冻结。
    • submit accepted 后生成/更新 SmsBillingRecord、写入 charged 流水;submit rejected/timeout 释放冻结;失败回执和 72 小时超时执行退款。
  • P0 发送前内容校验:
    • 风控评估接入敏感词字典和控制字符扫描。
    • variableIssues 扩展为 { variables, content },同时保留变量异常和内容异常证据。
    • emoji/UCS2、多空格和换行不直接拒绝,继续通过 70/67 字符长度影响计费。
  • P1/P2 补齐:
    • 新增企业认证模型/API,提交、审核通过、驳回会同步 Tenant.certificationStatus,发送前强制认证通过。
    • 新增客户侧导入预览/确认入口,覆盖 CSV/TXT 文本解析、20MB 限制、重复/非法/黑名单/变量缺失提示。
    • 新增客户/通道 CMPP 连接状态模型/APIGateway 或本地 Gateway 模拟器可通过真实 API 回写连接状态,运营 dashboard 聚合连接状态。
    • 新增应用密钥重置、应用/签名/模板状态变化、通道启停接口,并写入系统日志。
    • 无效 createdByIdreviewerId 改为明确 400,不再冒泡数据库外键 500。

新增/更新测试

测试文件 新增覆盖
api/src/send-chain/send-chain.service.spec.ts TC-SCHEDULE-001 到 006、TC-BILLING-AUTO-001 到 004、TC-IMPORT-001 到 006 子集、企业认证/状态阻断。
api/src/risk-review/risk-review.service.spec.ts TC-CONTENT-001 到 004 子集、敏感词和控制字符拦截、无效 createdById。
api/src/certification/certification.service.spec.ts TC-CERT-001 到 004 子集,认证提交、审核、驳回和租户状态同步。
api/src/channels/channels.service.spec.ts 通道启停日志、通道连接状态 upsert/list、客户连接状态 list。
api/src/sms-config/sms-config.service.spec.ts 无效 reviewerId 400,避免审核外键 500。
api/src/operations/operations.service.spec.ts Dashboard Gateway 连接状态聚合。

已执行命令

npm run prisma:generate
npm --prefix api test -- send-chain.service.spec.ts risk-review.service.spec.ts sms-config.service.spec.ts
npm --prefix api test
npm --prefix api run build
npm --prefix api run prisma:migrate:deploy
npm run verify:phase8
npm run test:api
npm run test:gateway

当前结果

  • Prisma Client 生成通过。
  • 新增迁移已应用到真实 PostgreSQL
    • 20260701103000_add_scheduled_sms_fields
    • 20260701110000_add_certification_and_connection_state
  • API build 通过。
  • API Jest7 个 test suite 通过,34 个测试通过。
  • 最终回归通过:
    • npm run verify:phase8 通过,BullMQ 15000 条消息、并发 500、端到端 TPS 608.93,满足 500 TPSPrisma generate、API build、前端 build 均通过。
    • npm run test:api 通过,7 个 test suite、34 个 tests 全部通过。
    • npm run test:gateway 通过,Go Gateway health、connection、tracker、cmpp、spike 测试全部通过。

剩余说明

  • 客户侧导入当前提供 API 级文本预览/确认闭环;浏览器端真实文件选择、GBK 二进制转码和错误文件下载仍需前端/E2E 后续覆盖。
  • Gateway 连接状态通过 NestJS API 支持 Go Gateway 或本地模拟器回写;真实运营商 SMSC 联调仍需运营商测试环境。

2026-07-02 运营端优化转真实后端补齐

本轮修复范围

  • 修正测试策略说明:mock 仅作为单元/轻集成测试替身,不能作为业务完成标准;新增页面能力必须接 NestJS API、Prisma/PostgreSQL 和必要操作日志。
  • 通道管理补齐真实 API
    • POST /api/admin/channels/:id/copy:复制通道配置、通道报备字段和该通道签名报备材料,写入操作日志。
    • DELETE /api/admin/channels/:id:软删除通道,避免破坏历史发送/报备外键。
    • GET /api/admin/channels/:id/link-logs:基于 OperationLogCmppConnectionState 查询链接日志。
  • 安全控制补齐真实 API:敏感词、全局黑名单、企业黑名单支持 keyword/status 查询、创建、启停/软删除,并写操作日志。
  • 模板审核补齐真实查询:运营端模板列表支持 keyword/status,并返回企业、应用、签名信息;前端模板审核页已改为调用真实 API。
  • 企业认证审核补齐真实查询:列表支持 keyword/status,详情返回企业信息和认证 materials;前端企业认证审核页已改为调用真实 API。
  • 前端新增 /api Vite 代理和 src/api/adminApi.ts,通道管理、模板审核、企业认证审核应调用真实 API;API 不可用时页面应展示错误态或空态,静态兜底不能作为验收通过依据。

新增/更新测试

测试文件 新增覆盖
api/src/channels/channels.service.spec.ts 通道复制、软删除、连接状态日志写入、链接日志查询。
api/src/dictionaries/dictionaries.service.spec.ts 敏感词、全局黑名单、企业黑名单查询、创建、软删除和操作日志。

已执行命令

npm --prefix api run build
npm --prefix api test
npm run build

当前结果

  • API build 通过。
  • API Jest8 个 test suite 通过,38 个测试通过。
  • 前端 build 通过,仍存在既有 Vite chunk size warning。

文档同步

  • 已将今天的客户端和运营端优化要求补入 docs/first-version-development-requirements.md
    • 去除客户端独立账号设置菜单,改为头像下拉承载退出登录和修改密码。
    • 明确模板审核搜索、企业认证详情审核、企业应用 CMPP 连接数/连接详情/参数复制、通道复制、通道软删除、通道链接日志、安全控制 CRUD、系统日志分页等均需要真实后端 API 支撑。
    • 补充客户端用户、运营端企业认证、通道、连接、字典、安全控制、系统日志等接口范围。
    • 修正 Codex 执行模板,明确 mock、localStorage 或静态数据不得作为真实开发完成标准。
  • 已将今天的验收点补入 docs/system-functional-test-cases.md
    • 新增 TC-CLIENT-010 到 TC-CLIENT-011。
    • 新增 TC-ADMIN-014 到 TC-ADMIN-022。

2026-07-02 新增浏览器和业务闭环用例执行

执行环境

  • APInpm --prefix api run start:dev,监听 http://localhost:3000/api
  • 前端:npm run build 后使用 npm run preview -- --port 4173,访问 http://localhost:4173
  • Browser 插件:可连接本地 tab,但对 Vite dev 页 Page.navigate 超时;改用临时目录 Playwright 包加本机 Chrome 执行浏览器 smoke,未修改项目依赖。
  • PostgreSQL:本地 localhost:5432 可用,API smoke 使用真实数据库。

已执行命令

npm run build

# 临时目录 C:\Users\hectorzhao\AppData\Local\Temp\cmpp-pw-smoke
npm init -y
npm install playwright --no-save
node <browser-and-api-smoke>

通过用例

用例 结果 覆盖点
TC-DASHBOARD-CLIENT-UI UI-SMOKE PASS / BACKEND GAP 客户端 Dashboard 可渲染账户余额、今日发送、账户状态,但页面数据仍需确认全部来自真实 API。
TC-DASHBOARD-ADMIN-UI UI-SMOKE PASS / BACKEND GAP 运营端 Dashboard 可渲染今日发送总量、总体成功率、企业消费排行、通道运行,但当前源码仍存在 mock 数据路径。
TC-BILLING-MANUAL-UI UI-SMOKE PASS / BACKEND GAP 运营端人工充值弹窗填写后,前端表格新增企业、金额、操作人和备注;该页面当前未调用真实充值 API。
TC-LOG-ADMIN-UI UI-SMOKE PASS / BACKEND GAP 运营端系统日志页面可展示人工充值、账户计费等记录;页面数据仍需接真实日志 API。
TC-LOG-CLIENT-UI UI-SMOKE PASS / BACKEND GAP 客户端系统日志页面可渲染并展示客户侧日志记录;页面数据仍需接真实日志 API。
TC-CMPP-STATUS-UI UI-SMOKE PASS / BACKEND GAP 企业应用管理可展示 CMPP 状态和连接数量并打开连接详情;页面当前仍有本地初始数据路径。
TC-FRONTEND-CONSOLE PASS 关键页面无相关 console error/pageerror;仅忽略 favicon 404。
TC-BILLING-MANUAL-API PASS 人工充值无需审批:确认后账户余额、短信条数、充值单、账户流水和 Dashboard transactions 聚合同步更新。
TC-CMPP-STATUS-API PASS 通道创建、Gateway 连接状态回写、按通道/客户查询、链接日志和 Dashboard gatewayConnections 聚合通过。

发现和说明

  • npm run dev 在本机 5173 被占用后切换到 5174Vite 首次依赖 bundling 长时间未完成,浏览器看到白屏;生产构建和 preview 渲染正常。
  • 运营端人工充值页面当前是前端本地状态 smoke,不能作为系统功能通过;真实入账闭环通过 POST /api/admin/billing/manual-recharges 验证。
  • 人工充值不需要审批,测试口径已同步修正为“有权限确认即入账,不产生 pending 审批态”。

真实后端缺口和 Bug 清单

编号 严重级别 问题 证据 期望修复
BUG-FE-001 P0 运营端人工充值页面未调用真实后端,提交后只更新前端本地表格状态。 src/apps/admin/AdminRechargeRecordsPage.tsx 使用 rechargeRecordsSeeduseStatesubmitManualRechargesetRecords 页面提交调用 POST /api/admin/billing/manual-recharges,成功后刷新真实充值记录、账户余额、流水和日志。
BUG-FE-002 P0 运营端 Dashboard 仍使用 mock service 和静态排行,不能证明真实统计准确。 src/apps/admin/AdminHome.tsx 引用 adminServicehourlySendTrendauditTrend,指标从前端数组计算。 接入 GET /api/admin/operations/dashboard/statistics 或拆分真实统计接口,所有卡片和排行从 API 返回。
BUG-FE-003 P0 客户端 Dashboard 仍使用 mock service,余额、发送量、最近充值等不是实时后端数据。 src/apps/client/ClientHome.tsx 使用 clientService.getOverview() 和客户端 mock 数据。 接入客户端真实 dashboard、账户、任务、充值流水 API,点击明细继承真实筛选条件。
BUG-FE-004 P0 客户端和运营端系统日志页面仍有静态数据路径,无法验证真实日志、分页、筛选和租户隔离。 src/apps/admin/AdminSystemLogsPage.tsxsrc/apps/client/ClientSystemLogsPage.tsx 页面 smoke 可展示,但未证明调用真实日志 API。 接入真实日志 API,支持分页、筛选、详情、租户隔离,失败动作也可查。
BUG-FE-005 P0 企业应用 CMPP 状态和连接详情页面仍使用本地初始数据,未读取真实连接状态 API。 src/apps/admin/AdminEnterpriseApplicationsPage.tsx 使用 initialSmsAppssetSmsApps,连接删除也是本地状态变更。 接入企业应用、连接状态、连接详情、连接删除/断开真实 API 或 Gateway 回写接口。
BUG-API-001 P1 通道创建参数缺失时返回 Prisma 500,而不是业务 400。 浏览器 smoke 第一轮 POST /api/admin/channels 缺少 code/gatewayHost/gatewayPort/account/passwordCipher/srcIdAPI 返回 Internal server error。 为通道创建 DTO 增加校验,缺失必填字段返回 400 和可读错误,并写失败日志。
BUG-DEV-001 P1 npm run dev 在 5173 被占用后切到 5174Vite 依赖 bundling 长时间未完成,浏览器看到白屏。 本轮浏览器测试中 5174 HTTP 后续可达,但首次打开截图为空白;生产 build/preview 正常。 检查 Vite dev 依赖预构建和端口占用问题,确保开发模式可稳定渲染。

2026-07-02 真实后端缺口修复

本轮修复范围

  • BUG-FE-001:运营端充值记录页移除 rechargeRecordsSeed 验收路径,加载真实租户、人工充值记录、账户余额和账户流水;确认人工充值调用 POST /api/admin/billing/manual-recharges,成功后刷新真实记录、账户、流水,并由后端写 billing.manual_recharge 操作日志,不产生 pending 审批态。
  • BUG-FE-002:运营端 Dashboard 移除 adminService、静态趋势和前端排行计算,改为调用 GET /api/admin/operations/dashboard/statistics、真实通道 API 和真实账户聚合。
  • BUG-FE-003:客户端 Dashboard 移除 clientService、静态趋势和本地 mock,改为调用 GET /api/client/operations/dashboard、客户端账务/任务聚合,并通过 x-tenant-id 限定当前租户。
  • BUG-FE-004:运营端和客户端系统日志页移除静态 logsSeed,接入真实日志 API,支持分页、关键字、级别、模块和时间范围;长详情使用详情卡展示 JSON 摘要。
  • BUG-FE-005:企业应用管理短信应用 tab 接入真实企业应用、租户连接状态、连接详情和 CMPP 参数 API;断开连接调用真实后端并写系统日志,变更后刷新列表。彩信 tab 仍为第一版待开发路径,不作为短信验收依据。
  • BUG-API-001:通道创建在 Service 层校验 code/name/gatewayHost/gatewayPort/account/passwordCipher/srcId,缺失或端口非法返回 400,不再让 Prisma validation error 冒泡成 500。
  • BUG-DEV-001:复现 Vite 8 dev server 在端口切换后依赖/模块转换请求超时,导致白屏;根 npm run dev 改为先 npm run buildvite preview --host 0.0.0.0,确保本地打开稳定。vite.config.ts 保留 optimizeDeps.noDiscovery,避免自动扫描引发的预构建卡住。

新增/更新测试

测试文件 新增覆盖
api/src/channels/channels.service.spec.ts 通道创建缺少必填字段时返回可读 400。
api/src/billing/billing.service.spec.ts 人工充值写入 billing.manual_recharge 操作日志。
api/src/operations/operations.service.spec.ts Dashboard 新增今日统计、账户/充值/待审核聚合和系统日志分页详情。
api/src/sms-config/sms-config.service.spec.ts 企业应用列表聚合真实 CMPP 连接状态、CMPP 参数读取、断开连接写日志。

已执行命令和 Smoke

npm --prefix api test
npm --prefix api run build
npm run build
npm run dev

# API HTTP smoke on API_PORT=3101
GET  /api/health
POST /api/admin/channels                 # 缺必填字段返回 400
GET  /api/admin/operations/dashboard/statistics
GET  /api/admin/system-logs?page=1&pageSize=2

当前结果

  • API Jest8 个 test suite 通过,43 个测试通过。
  • API build:通过。
  • 前端 build:通过,仍存在既有大 chunk warning。
  • npm run dev:通过,当前会 build 后启动 Vite preview,实际可访问 http://localhost:4173/,避免 Vite 8 dev optimizer/transform 白屏。
  • 浏览器 smoke 通过:
    • 运营端 Dashboard 渲染真实聚合指标,无相关 console error。
    • 运营端人工充值页渲染真实记录,人工充值弹窗展示真实企业下拉和确认入口。
    • 运营端系统日志页渲染真实日志,长详情以卡片展示。
    • 企业应用管理页渲染真实应用和 CMPP 状态,连接详情弹窗和 CMPP 参数弹窗可打开。
    • 客户端 Dashboard 和客户端系统日志页按当前租户渲染,无相关 console error。
  • API HTTP smoke/api/health 返回 ok;通道缺参返回 400 和可读错误;dashboard/statistics、system-logs 返回真实数据。

剩余说明

  • npm run dev 为稳定预览模式,不提供 Vite HMR;保留原因是 Vite 8/Rolldown dev transform 在当前 Windows + 中文路径工作区下会阻塞模块请求并造成白屏。开发时如需热更新,可另行评估降级 Vite 或迁移工作区路径后恢复原生 dev server。

2026-07-02 登录与用户管理闭环补充

本轮修复范围

  • 新增用户登录字段和 fail2ban 持久化字段:emailphonefailedLoginCountlockedUntillastLoginAtdeletedAt
  • 登录入口拆分为 /client/login/admin/login,两端均调用真实验证码和登录 API。
  • 运营端登录仅允许 platform_admin;客户端登录仅允许已关联企业的 enterprise_admin
  • 运营端用户管理接入真实 /api/admin/users,支持平台管理员和企业管理员的新增、编辑、启用/禁用、删除、改密;企业管理员必须关联企业。
  • 客户端用户管理接入真实 /api/client/users,所有操作继承当前登录企业 tenantId
  • 启用/禁用、删除均通过确认弹窗执行;用户删除采用软删除,不破坏历史日志和业务记录。
  • 连续 5 次登录失败后锁定 24 小时;登录成功清空失败次数和锁定状态。

已执行测试

npm --prefix api test -- users.service.spec.ts auth.service.spec.ts
npm --prefix api run prisma:generate
npm --prefix api run build
npm run build

当前结果

  • users.service.spec.tsauth.service.spec.ts:通过,覆盖用户类型约束、企业关联约束、操作日志、端登录隔离和失败次数累计。
  • API build:通过。
  • 前端 build:通过,仍有既有大 chunk warning。
  • tools/smoke/real-env-smoke.mjs 已同步企业管理员邮箱/手机号、角色 seed、验证码登录和 CMPP 端口 17890
  • 真实数据库迁移、浏览器端登录 smoke 需要在生产验证环境执行 prisma migrate deploy 后补充记录。

2026-07-02 非彩信纯 mock 菜单真实化

本轮修复范围

  • 客户端:充值套餐、账单流水、批量任务、短信发送、短信签名、短信模板改为调用真实 API;签名材料使用真实文件元数据和材料关联接口;发送任务调用真实批量任务接口。
  • 运营端:数据统计、账务账户、发送监控、敏感词、全局黑名单、企业黑名单、手机号段库、报备字段库、通道组、通道报备字段、报备任务、报备记录、短信审核、短信记录改为真实 API。
  • 企业管理:客户列表、客户表单、客户详情由 adminEnterpriseMock/localStorage 改为真实租户、账户、应用、签名、模板接口;后端补充租户编辑、状态变更和删除接口。
  • 通道管理:删除静态通道兜底,API 失败展示错误态。
  • 企业认证审核:删除静态认证兜底,API 失败展示错误态。
  • 企业签名/企业模板运营端列表只展示真实短信配置数据;彩信相关菜单继续作为待开发边界,不计入第一版短信验收。

已执行命令

npm --prefix api test
npm --prefix api run build
npm run build
npm run verify:phase8

当前结果

  • API Jest10 个 test suite 通过,49 个测试通过。
  • API build 通过。
  • 前端 build 通过,仍存在既有大 chunk warning。
  • npm run verify:phase8 通过:
    • Gateway 队列契约 4 个示例通过。
    • Go Gateway 测试通过。
    • BullMQ 15000 条消息、并发 500、端到端 TPS 681.47,满足 500 TPS。
    • Prisma generate、API build、前端 build 均通过。
  • 源码搜索剩余静态业务数据集中在彩信待开发页面、彩信审核页面、企业应用彩信 tab,以及 src/api/session.ts 的登录 session 持久化;非彩信主菜单的 clientService/adminService 业务路径已清理。

待复测

  • 浏览器 smoke 和真实文件上传 smoke 需要在生产验证环境补跑,重点复测客户端发送、签名材料上传、短信审核、短信记录、客户管理和报备任务。