Files
lisglosips/docs/CALLER_REALTIME_ANALYTICS_DELIVERY_20260831.md
T

5.2 KiB
Raw Blame History

主叫号码分析测试环境交付记录

日期:2026-08-31。状态:代码已提交推送、测试 B 已部署、基础真实信令与后端对账通过;完整功能验收尚未完成。

版本与环境

  • 应用版本:2a3dcb0c68c52476d4ad38b9924607ce45acdcf5,远端 origin/main 已推送成功。
  • 测试入口:https://100.90.90.91/,菜单“主叫号码分析”。
  • 当前发布目录:/opt/lisglosips/releases/caller-analytics-20260831T095225Z
  • 本次发布备份:/var/backups/lisglosips-caller-analytics/20260831T095225Z;最初引入功能前的发布仍在 /opt/lisglosips/releases/s57-ui-number-library-20260827T124730Z
  • 新增7张分析表与独立分析进程;原 CDR/计费进程未替换。本次没有部署 A/T,没有呼叫公网电话。
  • 部署后 OpenSIPS、API、CDR Worker、分析 Worker 均为 active/api/v2/health/ready 的 MySQL/Redis 检查均为 ok。

本次实现

OpenSIPS 观察事件经本机 rsyslog 文件、独立 Redis Stream 进入事务状态计算,提供原始主叫和落地主叫两种统计视角、分钟趋势、号码筛选、详情证据、三个业务比例、客户范围控制及站内异常提示。沿用设计 V1.1:180/183及后续成功阶段计接通,可信正时长计应答,未接通拆分待接通与结束未接通,未知单列,分母0返回null。

实现与运行限制仍以设计补充及下方未验收项为准,不把基础功能部署视为整个设计全部验收通过。

实际验证

  • TypeScript构建、ESLint、Vite生产构建、Prisma schema校验通过;全量 Vitest 29文件、116项通过。
  • B 本机真实 UDP SIP UAC/UAS,通过平台原有路由,不使用 mock API 或 localStorage。
  • 测试客户与网关 cra_20260831,主叫 99100001,仅 127.0.0.1:50630,费率0。验收后入口/出口已禁用;保留分析证据。
  • 真实API验证401、无客户授权403、跨客户查询403、授权客户可见、客户筛选项不越权、非法查询400。
  • 全部已采集测试呼叫的分钟桶与状态表逐字段相等:T=24、C=16、A=8、F=8、P/U/active均为0。重放一通呼叫的4条持久化事件,均返回duplicate,聚合不变。
  • 末轮从 2026-08-31T09:54:12.271Z 开始的6通测试:T=6、C=4、A=2、N=2C/T=66.6667%、A/T=33.3333%、A/C=50%。短通话观察时长301ms。
实际信令场景 C A
180后486 1 0
183后487 1 0
直接486 0 0
无180/183,直接200ACK后约1.5秒BYE 1 1
180、200ACK后约0.3秒BYE 1 1
仅100后486 0 0

机器证据见 SIP/API/DB验收JSON。该证据只含本次合成测试号码,无登录凭据。

联调修复

修复了OpenSIPS编码转换名称、rsyslog完整程序路径匹配、MySQL趋势BigInt序列化、分钟桶JSON键、验收脚本的用户角色关联,以及发布所需Prisma引擎执行权限。原生效配置引用了未加载的旧Lua SHA,现按已安装Lua内容核对SHA并加载,不改Lua路由逻辑。

对已产生的测试分析状态,在暂停独立分析进程后事务重建了派生分钟桶;未删除原始事件、状态或CDR。新增维护脚本需明确停分析Worker后才能使用。

另补充显式最终零时长优先于较晚暂定时长、END不自动清除缺过程未知、缺口标记跨进程重启保留的逻辑和回归用例。未测得端到端延迟时返回null,不再把0当实测延迟。

未完成验收与启用限制

  1. 页面验收未完成:Chrome能列出测试标签页,但读取DOM、页面截图多次超时;没有取得本次新页面的有效截图、控制台记录或交互结果。不能以Vite构建/API成功代替UI验收。
  2. 时长证据边界未完成:末轮SIP脚本没有SDP/RTP;它证明响应、ACK/BYE及信令计时链路,不证明媒体协商或实际音频。当前以成功响应至结束观察的毫秒差计算结束时长;无ACK、协商失败、取消竞态、对话超时等仍需完善证据适配与真实验收。不能据此宣称全部应答边界已满足。
  3. 采集完整性与可靠性未完成:运行心跳不证明整个查询窗口完整。页面明确提示此边界,health标记OBSERVATIONS_ONLY。生产端连续水位、停采识别、共享Redis资源隔离、日志/Stream/数据库留存、毒事件处理、断电恢复与满盘保护仍需专项实现/验证。
  4. 生命周期与对账未完成:当前真实路由只有单次落地;多attempt纯状态单测不是完整重试链路验收。长期未结束呼叫的权威终态对账、可信最终时长外部来源接入、告警真实触发恢复和端到端P95≤5秒未完成验收。
  5. 旧CDR问题保留:现场既有成功CDR路径使用固定6秒。本功能不采信该值,也没有修改计费或修复既有CDR;本次无SDP测试不构成完整CDR/媒体计费回归。

因此当前交付适合继续受控测试,不作为上述缺口已关闭或具备生产完整性/容量保证的声明。并行任务的设计审查文档及IMPLEMENTATION_STATUS变更未混入本次提交。