Files
lisglosips/docs/CALLER_REALTIME_ANALYTICS_DELIVERY_20260901.md
T

5.9 KiB
Raw Blame History

主叫号码实时分析专项整改交付报告

日期:2026-09-01 状态:整改实现、B机发布及受控功能/可靠性验收完成;容量与真实多线路重试保留明确限制。

1. 交付版本与边界

  • B机生效提交:9fa1964dec98cbe3c53c901ba764373308054d5e
  • 发布目录:/opt/lisglosips/releases/caller-analytics-20260901T024406Z
  • 回滚备份:/var/backups/lisglosips-caller-analytics/20260901T024406Z
  • 发布制品SHA-256b2f22a04312b1979a11eec62ed797e65ab6c4c8d25174075a8dbc0d723ea7435
  • 新采集连续覆盖起点保留为2026-09-01T02:23:21Z,发布重启不伪造新的连续历史。
  • 本次只改主叫分析采集、分析存储、API、页面、独立Redis和运维脚本。没有修改计费、余额、路由选择和旧固定6秒CDR逻辑,没有部署A/T,也没有呼叫公网号码。

本地标准制品脚本在Windows创建符号链接时遇到EPERM。本次使用等价的delta overlay制品:B机先复制上一release,再覆盖本提交受控文件;发布脚本仍执行备份、迁移、候选配置检查、服务切换和健康门槛。

2. 整改结果

整改组 落地结果 状态
R01R03 时长、未知与乱序 TALK_START在对话路由匹配后产生,ACK后开始计时;时长分未知/暂定/最终;最终零时长具有权威优先级;状态归约支持重复和乱序 已完成
R04R05 完整性、留存与隔离 生产/采集计数、水位、日志未读字节、持久gap/DLQ、pending安全裁剪;独立Redis启用AOF、noeviction及256MB上限;维护和logrotate已安装 已完成
R06R07 生命周期与契约 增加显式CLOSE、生产节点/boot/sequence、事务阶段、证据来源与算法版本;单attempt保持当前真实路由语义 已完成;真实重试启用前补验
R08R10 API、告警与页面 查询覆盖、snapshotId、稳定分页、供应商筛选、未知/null比率、告警规则独立持续计数与降级暂停、详情信令证据均已落地 已完成
R11 性能与容量 活跃呼叫分页、查询上限、资源隔离和延迟字段已落地;本轮只验证受控功能负载 工程整改完成;容量/P95未承诺
R12 发布回滚 版本化采集V3、完整备份、逐步回滚、独立Redis备份、配置校验、空闲检查、健康和提交校验已落地并用于本次发布 已完成;未逐点实施破坏性失败注入
R13 状态与证据 V1.2设计、状态索引、测试索引、本报告及机器证据已同步 已完成

3. 验证结果

本地验证全部通过:ESLint、tsc -b tsconfig.build.json、Vite生产构建、Prisma schema校验;Vitest共29个文件、118项。OpenSIPS从V1/V2生成V3配置后在B机执行opensips -C通过。

B机最终审计显示以下服务均为active/enabledOpenSIPS、API、CDR Worker、Caller Analytics Worker、Caller Analytics独立Redis、维护timer。/api/v2/health/ready返回status=ok,数据库和Redis检查均为ok。独立Redis实测AOF开启、持久化状态正常、noeviction、上限256MBStream pending为0。

末轮6通真实本机回环SIP全部通过原有平台路由,两个成功场景包含SDP offer/answer并通过RTPEngine

场景 统计结果
180后486 C=1A=0
183后487 C=1A=0
直接486 C=0A=0
直接200ACK后约1.5秒BYE C=1A=1
180→200ACK后约300ms BYE C=1A=1
100后486 C=0A=0

汇总为T=6、C=4、A=2、N=2,接通率66.6667%,总体应答率33.3333%,已接通应答率50%talkMs=1801,未知、待接通和暂定应答均为0。实测数据覆盖为CONTINUOUS,末次API采集延迟468ms。该单点观测不能替代统计P95。

真实API与数据库还验证了状态表/分钟桶逐字段对账、5条事件重放幂等、未认证401、非法查询400、无授权/跨客户403、客户及供应商范围选项不越权。机器证据归档在caller-analytics-real-20260901.json

可靠性验证包括:维护任务dry-run与实际执行、logrotate规则识别、独立Redis重启后Stream长度保持、非法JSON进入持久死信并ACK、覆盖状态转为降级、处置后恢复连续。最终保留一条RESOLVED的计划发布重启gap及一条RESOLVED的毒事件deadletter,作为审计证据。

4. 页面验收

优先使用Codex Browser插件访问B机时,HTTP入口被客户端阻止,HTTPS尝试超时并重置浏览器内核。按浏览器测试规范改用仓库Playwright和系统Chrome完成回退验收;登录通过真实/auth/refresh会话,业务数据来自真实API/MySQL,没有mock、静态替代或localStorage业务数据。

已验证应用壳、主叫分析菜单、客户/供应商筛选、连续覆盖、版本/未知字段、三个比例、详情证据及300ms时长,覆盖1440×1000桌面和390×844移动视口。移动端宽表使用现有横向滚动容器,抽屉独立纵向滚动。控制台无错误。截图保存在.codex-private/caller-analytics-desktop-20260901.png.codex-private/caller-analytics-mobile-20260901.png

验收后已删除临时登录会话,数据库中对应会话数为0;受控客户入口和供应商出口cra_20260831均已恢复为DISABLED,测试证据保留。

5. 未作出的承诺

本轮没有可确认的峰值CPS、号码/维度基数和目标保留期,因此没有执行有业务依据的容量压测,也不宣称页面端到端P95≤5秒或机器容量上限。后续在真实多线路重试启用前,还需按实际attemptId和路由策略补做两线路重试验收。上述两项不会把当前单线路统计结果解释成未完成,但限制容量与未来重试能力的对外声明。

代码、交付文档和机器证据已推送到origin/main。B机生效代码为9fa1964;其后的367211e只增加交付报告、证据JSON和状态索引,因此没有为了纯文档提交再次重启B机服务。