104 lines
17 KiB
Markdown
104 lines
17 KiB
Markdown
# CMPP 平台项目日志
|
||
|
||
> 整理范围:本机 Codex 中工作目录为 `CMPP平台建设` 的全部可读取会话,时间为 2026-06-16 至 2026-07-22。仅列出发生实际项目工作的日期;无项目对话的日期不补写。内容同时参考 Git 提交、需求文档、系统功能测试用例和测试进度,以区分本地完成、已提交及已部署状态。
|
||
|
||
## 2026-06-16
|
||
|
||
项目从客户端纯前端原型复现起步,确定使用 React、TypeScript、Vite 和自研 UI 组件,不接数据库与后端。当天集中完成批量任务列表、任务详情、日期区间日历、定时发送控件、短信发送详情和上行短信页面,并将查询面板、分页、详情区块、时间选择等能力沉淀到全局组件库。主要问题是早期误把截图中的“发送详情”理解成统计看板,经用户指出后按查询列表重做;日期区间的 hover、选中态和内容换行也经过多轮细调。各批次均以 `npm run build` 验证,只有既有构建体积提示。
|
||
|
||
## 2026-06-17
|
||
|
||
继续补齐客户端基础配置和展示页面,完成短信应用、签名与引流信息、短信模板、彩信签名报备和彩信模板管理,并统一新增/编辑弹窗结构。短信模板支持变量插入、计费提示和内容预览;彩信模板支持多帧编辑、预览及三网审核状态。当天反复调整卡片内部间距、操作按钮、状态同行展示和宽弹窗底部区域,暴露出仅按截图逐处修改容易造成“过松—过紧”来回摆动的问题。为减少后续视觉漂移,新增全局 UI 设计规范,统一颜色、字号、间距、卡片、表格、弹窗和导航约定,构建持续通过。
|
||
|
||
## 2026-06-18
|
||
|
||
客户端侧补充彩信发送、彩信任务、彩信发送详情、上行彩信、用户管理、系统日志和企业认证;随后开始运营端原型,完成运营看板、企业管理及重型企业详情的第一轮实现。项目明确新原则:截图只提供字段、流程和状态参考,视觉必须复用自研控件与全局规范,不再像素级照搬。过程中曾出现两次改动不符合预期并讨论回滚,同时发现目录尚未纳入 Git,导致缺少安全恢复点;随后安装 Git 并建立版本管理意识。运营看板经过删减筛选、拆分签名排行和统一网格后定型,构建通过。
|
||
|
||
## 2026-06-19
|
||
|
||
运营端进入业务配置密集开发,完成短信和彩信应用配置、短信签名与引流资料、短信和彩信模板审核、企业认证审核、短信审核及号码列表弹窗。随后实现短信通道列表、新增编辑、发送测试、通道报备详情和状态维护,支持签名下展开引流信息。主要问题集中在复杂表格操作区被裁切、按钮层级混乱以及报备详情入口缺失;通过压缩信息列、重组发送质量面板、固定操作区并将报备入口单独突出解决。还纠正了彩信不应具有引流链接、模板审核应展示所属应用等业务差异。页面和弹窗均保持本地 mock 交互,构建及 1280×720 页面检查通过。
|
||
|
||
## 2026-06-20
|
||
|
||
围绕通道报备可配置能力继续完善原型。在通道报备详情中新增“个性化引流信息报备字段”弹窗,支持字段池搜索、添加、必填配置、通道字段映射、排序和删除,并实际验证字段数量变化、弹窗滚动与布局。随后新增独立彩信通道管理菜单和页面,具备通道搜索、运营商与状态筛选、发送质量、启停、编辑、删除以及表单必填校验。当天的难点是既要保留短信通道的复杂报备逻辑,又要避免把短信特有概念错误带入彩信;最终两类通道拆分建模,全部维持纯前端状态,浏览器检查无裁切和控制台错误,构建通过。
|
||
|
||
## 2026-06-21
|
||
|
||
完成短信通道组列表及添加/编辑页面,覆盖基础设置、省网分流、全国通道、通道选择和优先级配置;又补齐运营端短信和彩信任务进度、任务详情、短信记录、彩信记录和短信上行记录。任务列表统一采用“主信息行+模板内容独立行”,详情弹窗恢复计费规则归属。当天另行复盘单个任务耗时过长,确认超长会话、页面分散、频繁构建和浏览器验证共同增加执行时间,并整理新会话接手提示,明确目录、纯前端边界、自研控件和禁止接后端等约束。功能构建通过,但 Vite 大 chunk 警告仍存在。
|
||
|
||
## 2026-06-30
|
||
|
||
对早期原型进行结构化收口:拆分企业管理、应用、签名、引流和模板模块,补齐删除确认,并将短信签名、引流资料、短信模板和彩信模板的新增编辑功能对齐旧企业详情。随后审视“通道字段配置—客户上传—运营审核—生成报备任务—导出资料—导入回执—维护状态”全流程,发现已有能力点状分散,遂新增一级“报备任务”菜单及任务、记录二级页面,统一导出和双入口回执导入。还统一运营端页面标题与图标规范。项目完成首次正式 Git 提交与远端推送,形成可回滚基线。
|
||
|
||
## 2026-07-01
|
||
|
||
项目从纯前端原型转向真实平台建设,建立 Phase 0–8 技术评估、工程骨架、NestJS、Prisma/PostgreSQL、Redis/BullMQ、MinIO、CMPP Gateway、风控、计费、发送链和运营验收方案。当天新增首批 Prisma migration、人工充值、操作日志、真实环境 smoke,以及风险审核、计费、发送链、通道报备和运营查询测试。核心问题是大量页面仍依赖 mock、localStorage 或静态数组,与“所有功能必须真实后端”的新验收标准冲突;因此同步重写需求、测试计划、功能用例和缺口清单,并规定缺少真实依赖只能标记阻塞,不能算通过。多轮测试与构建完成并提交。
|
||
|
||
## 2026-07-02
|
||
|
||
集中清理真实后端缺口,将运营看板、系统日志、人工充值、通道状态、敏感词、黑名单、企业应用和剩余短信页面接入真实 NestJS API。补齐登录、用户、角色、权限和会话流程,完成运营端操作闭环,并将非彩信的纯 mock 菜单逐步真实化。当天遇到的主要问题包括 PostgreSQL、Redis、MinIO 未启动导致的环境阻塞,Prisma schema 与迁移不同步,以及前端虽能展示但增删改只改本地状态。通过新增服务测试、真实环境 smoke、API/前端构建和文档复测区分代码通过与环境未执行项;相关修复分批提交,CMPP 对外端口统一为 17890。
|
||
|
||
## 2026-07-03
|
||
|
||
完善真实发送路由与失败补发:通道组改为按单运营商组织,应用配置客户费率,通道组成员携带运营商、省份和优先级;发送时校验真实在线连接与最终通道报备状态,提交失败、超时或失败回执按规则切换备用全国通道,并确保迟到旧回执不能覆盖已送达结果,冻结、扣费、释放和退款保持幂等。同步补齐报备回执的真实文件上传、解析和菜单后端化。难点是旧模型允许单通道路由、运营商口径混用及失败状态重复计费,需同时调整 Prisma、服务和测试。定向测试、API/前端构建及真实 PostgreSQL migration 均通过。
|
||
|
||
## 2026-07-06
|
||
|
||
围绕企业管理和文件链路做回归修复:企业列表补充关键字段和真实分页,企业编辑页恢复完整资料,上传预览、下载、删除及人工充值入口接入真实 API;补充本地 MinIO 启动脚本,避免上传功能因对象存储不可用而假通过。应用级 CMPP 连接、签名与引流表单也建立后端基线,并修复通道连接与真实路由交互。当天主要问题是部分页面仍保留老原型的本地初始数据、上传仅显示文件名而未落 MinIO,以及弹窗复杂度造成操作项遮挡。最终通过相关服务测试、前端构建和页面审计收口,随后提交真实后端与通道连接修复。
|
||
|
||
## 2026-07-07
|
||
|
||
完成第一轮完整生产部署能力及 Gateway 下游 CMPP 入站。新增 ARM64、Node、Go、PostgreSQL、MinIO、本地对象存储和 API systemd 等部署兼容处理,解决国内网络下载、数据库密码特殊字符、已有 MinIO、Prisma health check 带 schema 参数等连续安装问题。Gateway 开始监听 17890,支持真实 CONNECT 鉴权、应用独立六位账号、IP 白名单和 Submit 解包,NestJS 复用模板、签名、风控、余额、运营商、路由与队列链路。另补充应用优先队列、手机号段 Tab 和通道组补发上限。部署过程多次因环境差异失败,最终以逐项修复和健康检查完成生产基线。
|
||
|
||
## 2026-07-08
|
||
|
||
围绕 Gateway 可靠性连续推进二十四个阶段,完成上游 SubmitCommand 独立消费、客户侧 Deliver 持久化与重投、普通上行匹配、长短信拆分和长上行重组、多连接窗口控制、配置入口、在途恢复、断线补偿、保守回执归因、死信治理、自动退避、批量重投、告警、Dashboard、在线 Presence、恢复候选视图、锁与状态审计、分片补偿及共享接入号上行认领。主要困难是跨 Redis Stream、PostgreSQL、Gateway 内存状态和客户 TCP 会话保持一致,任何环节都不能用“已入队”冒充已投递。最终相关测试、构建和生产恢复流程完成,形成可观察、可重试、可审计的链路。
|
||
|
||
## 2026-07-09
|
||
|
||
修复生产通道测试短信和 CMPP2.0 上游链路。通道测试从独立记录走真实发送、提交和回执闭环,发送详情展示原始回执码及本地时间;Gateway 按通道版本发送 CMPP2 包并正确解析 Deliver 回执。同步修复部署覆盖管理员密码、登录失败无提示、通道复制后错误启用、连接池状态回写、应用 CMPP 凭据及接口开关/接口类型。当天最关键的问题是配置显示成功但真实协议版本和凭据不一致,导致页面、数据库与 Gateway 状态互相矛盾。通过生产日志、真实记录、数据库和连接状态逐层核对后分批提交,未以单一页面状态作为验收依据。
|
||
|
||
## 2026-07-10
|
||
|
||
导入 2026 年 4 月手机号段数据,过滤异常后生产落库 516217 条,并将查询改为真实服务端分页和搜索。随后按瑕疵台账完成企业充值、通道配置、通道报备、通道组、用户会话失效、审核与企业配置五批修复。问题包括前端猜测总页数、Linux 脚本换行、已有管理员部署冲突、文件名中文编码、Dashboard 待审核统计取错表,以及启停、TPS、扩展位数等配置未真正进入 Gateway。每批均运行定向测试、API/前端构建和生产健康检查;真实受保护接口、PostgreSQL、Redis、MinIO、Nginx 与 Gateway 证据均完成核对。
|
||
|
||
## 2026-07-11
|
||
|
||
完成文档瑕疵二次闭环和 CMPP 协议关键修复。Gateway 根据 CONNECT 版本协商 CMPP2.0/2.1/3.0,记录解包失败和 Submit 业务日志;模板、报备或余额失败也先落真实批次、请求、短信及失败回执,避免客户收到成功却平台无记录。新增企业应用下游连接表,区分客户 bind 与上游通道连接;短信记录持久化运营商和省份并回填历史数据。还重做运营查询控件和手机号段分页。主要问题是固定 CMPP3 解包导致字段错位、上游连接状态被误当成客户在线状态。API 全量、Gateway 测试、迁移与生产部署通过。
|
||
|
||
## 2026-07-12
|
||
|
||
系统整改固定条数截断和错误总数口径:生产企业实际 105 条、应用 204 条,但旧页面只取前 100 条并把数组长度当总数;本次审计并移除各业务列表的 100/200/500 固定上限。客户端任务页同时隔离 CMPP 和通道测试内部批次,仅展示客户批量任务。CMPP 模板不匹配改为按应用、账号和内容哈希在短窗口聚合人工审核。报备字段库与企业签名、引流资料建立真实关联,按生效路由求通道字段合集和必填规则。难点是生产相关表暂无真实字段样本,因此只验证结构、接口和空态,未注入虚假数据冒充验收。
|
||
|
||
## 2026-07-13
|
||
|
||
修复签名审核与通道报备混为一谈的问题。发送路由不再被签名全局 `reportStatus` 一票否决,而是仅从真实已报备候选通道中选路;运营端分别展示签名审核状态、三网报备汇总和“部分通过 x/y”。同时优化企业模板、企业签名布局,补齐签名审核、引流信息独立审核、通道报备任务门禁及报备状态闭环。生产核查发现【安徽航天信息】一个通道通过、一个报备中,旧前端却统一显示审核中,正好暴露状态映射丢失。修复经服务测试、构建、备份、部署和生产资源校验通过;登录后截图仍受验证码会话限制,未虚报页面验收。
|
||
|
||
## 2026-07-14
|
||
|
||
集中治理报备追溯、会话安全、下游 ACK、计费和系统日志。运营列表支持组合搜索并保留历史报备来源;CMPP 入站接受完整黑括号签名及部分通道放行。服务端新增安全 Cookie 会话、自动锁定和失效校验。下游回执要求 `CMPP_DELIVER_RESP` 精确 Msg_Id 确认,修复 SubmitResp 尚未写出就先发 Deliver、Msg_Id=0 被误判送达等时序问题,并迁移纠正历史错误状态。计费统一以现金余额为主,补齐 72 小时无回执退款;OperationLog 增加分页索引、归档和保留策略。生产 Worker 配置缺失也被定位修复,全量测试、迁移和部署健康检查通过。
|
||
|
||
## 2026-07-15
|
||
|
||
当天完成多个生产批次:报表导出与通用 Select、签名及引流资料 Excel 批量导入、统一通道报备、TPS 配置口径、报表对账、利润与发送质量、接入号填充与扩展码、运营列表排序、批量驳回、模板签名自动填充,以及下游人工重投、告警和依赖安全治理。资料文件与内嵌图片进入 MinIO,映射、版本和任务快照落 PostgreSQL,导入不再自动生成报备任务。主要问题是 WPS 多行表头、图片解析、通道 TPS 与通道组字段归属混乱、Gateway 重启后通道状态丢失。各批次均测试、备份并部署,最终服务、端口、Redis Stream 和 51 条 migration 正常。
|
||
|
||
## 2026-07-16
|
||
|
||
完成 HTTP 开放接口和两端体验收口。新增 HMAC-SHA256 鉴权、nonce 防重放、应用 QPS、单条发送、状态与上行查询,以及使用 BullMQ 的回执/上行 Webhook;发送继续复用真实模板、风控、余额、计费和 Redis 链路,并增加 HTTPS/SSRF 防护。运营端和客户端完成移动端适配,企业应用拆分 CMPP/HTTP 配置,金额精度统一为四位小数和 BIGINT 最小单位,参数复制及未开通接口的 403 边界补齐。生产还发现 Gateway 重启留下陈旧客户连接占用名额,遂将清理前置。53 条迁移、测试、构建、服务、端口和流队列均验证正常并完成部署。
|
||
|
||
## 2026-07-18
|
||
|
||
根据平台 LG 生产验证定位 CMPP 多号码 Submit 只落第一条的严重缺陷:Gateway 虽记录 `dest_count=2` 并返回成功,却只把首号码传给 NestJS。修复改为每个目的号码分别创建短信记录、内部消息和回执,同时保留一个客户端 SubmitResp/原始 Msg_Id,并增加分组 ID 支持重启恢复;任一号码非法时整包落库前拒绝。并行会话另修复上传大小、信用代码格式、操作日志及运营商规则等手工验收瑕疵,刻意避开 send-chain 重叠区域。相关 API、Gateway、Prisma 和构建验证通过,但按要求未提交、未推送、未部署,生产仍运行旧代码。
|
||
|
||
## 2026-07-20
|
||
|
||
继续收口平台 LG 缺陷并做本地真实链路验证,补齐回执、报备材料、用户安全和公开 HTTP 接口等问题;API 全量达到 21 suites、237 tests,Gateway 与前后端构建通过。二轮 UI/UX 阶段 A 同时启动,读取完整走查报告和多视口证据,建立 45 项唯一整改台账,先处理客户端用户管理移动端操作不可达等 P0。随后将 7 月 18 日以来的多号码、投递和工作流修复汇总为 `f02c33cb`,完成备份、迁移和生产发布验证。过程中坚持不发送测试短信、不写生产业务数据;仅本地完成的 UI 阶段项仍保留待部署状态。
|
||
|
||
## 2026-07-21
|
||
|
||
生产只读复查发现陈旧下游连接 `lastHeartbeatAt=NULL` 未被清理,持续占用应用最大连接数,使新 bind 建立后被关闭且 Submit 无响应;经授权只清理确认无真实 TCP/Redis 会话的一条登记,并补充代码修复。另为历史回执错归属设计唯一匹配迁移,避免猜测回填。UI/UX 阶段完成双门户会话与 Cookie 隔离、深链恢复、安全上传与日志导出、审核资格预检、定时短信多实例幂等、人工重投恢复、报备生成、删除和人工充值治理。大量功能已通过真实 API、PostgreSQL/Redis 和构建验证,但当天大部分仍未提交、未部署,生产验证留待发布后执行。
|
||
|
||
## 2026-07-22
|
||
|
||
完成公共 Dialog 的焦点约束、背景 inert、滚动锁、关闭后焦点恢复和脏表单放弃确认,并收口安全上传与审核治理。工作区先汇总为 `0f223f7f` 发布预生产,期间发生中断窗口并完成复盘。随后新增应用北京时间自然日日发送上限、HTTP 参数默认值和签名完整黑括号规范;CMPP 超限由异步失败改为同步整包 `result=8` 拒绝。发布签名迁移时又暴露生产 PostgreSQL 为 SQL_ASCII,中文正则按字节误删 UTF-8,准确识别两条损坏数据后通过备份和补偿迁移恢复。最终相关提交均推送并发布,API 全量 290 项、Gateway、迁移、服务和健康检查通过。
|