docs: record Logrus debug fixed-host deployment evidence
This commit is contained in:
@@ -81,6 +81,8 @@
|
||||
|
||||
- **当前日志与抓包规则**:Dispatcher、Agent 的 `--debug/-D` 仅开启 Logrus 详细收发日志;普通模式记录自身关键工作流程、方向、身份、结果、耗时及错误。HTTP/MQ/RPC 正文只在 Debug 中记录安全副本,禁止密钥、Token、签名 URL、完整提示词/对话/音频及原始 SIP;不截断其余可读业务 JSON,不修改发送数据、不吞错误。Agent 原 `--debug` 抓包含义移除,逐通外部抓包凭证检查改为独立 `--capture`,不足时仍失败关闭。独立 `sip-call` 的 Debug 抓包参数不变。详细规则见 [`docs/logging.md`](docs/logging.md)。
|
||||
|
||||
- **2026-10-09 23:16 Logrus 日志部署现场**:日志源码 `669f3a5` 已推送并安装到登记测试机,两固定业务服务均 enabled+active、进程稳定且零重启,实际启用 `--debug`、不启用 `--capture`。现场确认 14 次 SaaS HTTP 请求/响应及两端实际 RPC 的详细日志,已观测正文敏感字段/签名 URL 检查零泄露;无实际 MQ 业务收发,须标记现场未验证。部署前先关 Dispatcher 准入再核对零通话/未确认执行;未清数据、重启 Asterisk、抓包、独立拨号或额外调用 AI/OSS。Asterisk PID 777461 不变。部署工具仍给出旧独立探测的 saas_pending/business_ready=false,不伪造成功,不以本次日志验证代签真实通话或生产。完整测试与发布检查通过、业务覆盖率 71.4%,原并行改动未覆盖或纳入日志提交。证据见 [`docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md`](docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md)。
|
||||
|
||||
- **2026-10-09 17:24 最新参数规则与现场**:使用者确认 params 重名键忽略、任务/session 字段优先;共享合同 `f490afa`、实现 `ddd4de2` 已推送并安装。真实 SaaS 任务 `4` 的原重复 voice 和 revision `1` 未改,现已接纳;四个真实任务均暂停,Dispatcher 持久发现 ready、SIP 本地加载代次 `17`/pending=0。Agent/Dispatcher/Asterisk 均 enabled+active,D PID 稳定、零重启;未清数据、重启 Asterisk、独立拨号或主动投递。部署工具仍引用启动前独立 probe 的 tasks 阶段失败而显示 `saas_pending/business_ready=false`,具体 probe 原因未定位,不伪造成功,也不以标签否定实际业务启动事实;完整独立探测、真实通话/AI/OSS及生产验收仍不宣称完成。证据见 [`docs/evidence/ai-params-task-precedence-20261009.md`](docs/evidence/ai-params-task-precedence-20261009.md)。
|
||||
|
||||
- **2026-10-09 最新固定环境事实**:使用者确认修复正式 Dispatcher 的 SIP 加载遗漏并重部署;源码 `b37d9f3` 已推送、安装,Agent/Asterisk 的 revision `16`、三条数字 ID endpoint/AOR/主叫/contact/UDP/PCMA 已从原生运行态逐条核对,Asterisk 未重启,零活动通话,未清数据、未独立拨号。Dispatcher 仍因真实 SaaS 任务 `4`(revision `1`)同时包含 `agent.tts.voice` 与 `agent.tts.params.voice` 而退出重启;该失败是当时采用的冲突拒绝规则造成;随后使用者确认改为任务/session 字段优先、忽略 params 中重名键,共享合同已更新为 `f490afa`,SaaS 无需删除原有重复 voice。新规则部署及最新业务状态见 [`docs/evidence/ai-params-task-precedence-20261009.md`](docs/evidence/ai-params-task-precedence-20261009.md);未完成现场核对前,不得把 SIP 加载成功或状态中的 `saas_pending` 标签当作全部配置/真实通话/生产签收。证据见 [`docs/evidence/dispatcher-sip-startup-load-20261009.md`](docs/evidence/dispatcher-sip-startup-load-20261009.md)。
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# Dispatcher / Agent Logrus Debug 实现与固定环境部署
|
||||
|
||||
## 结论与来源
|
||||
|
||||
- 源码 `669f3a5868a08e96029f6e76f08f7330c25f5159` 已合入并推送 `main`,远端提交号核对一致;制品来自该干净固定提交。
|
||||
- 已部署登记主机 `server.sip` 的固定 `nonprod-real` 服务,两角色均启用 `--debug`,不启用 `--capture`。
|
||||
- 2026-10-09 23:14–23:16 CST 现场核验,两业务服务均 `enabled+active/running`,PID 稳定、零重启,实际进程与服务命令均含 `--debug`、不含 `--capture`。
|
||||
- 两个实际运行进程制品 SHA-256 相同:`c2bf4c50f19fed2842307356514da1e10cb51b8a2c2c053c1d846d12a6a33919`;部署入口校验 `artifact_hashes_match=true`。
|
||||
|
||||
| 服务 | PID | NRestarts | Debug | Capture |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Agent | 2900602 | 0 | true | false |
|
||||
| Dispatcher | 2900614 | 0 | true | false |
|
||||
| Asterisk | 777461 | 0 | false | false |
|
||||
|
||||
Asterisk PID 与部署前相同,未重启。现场 ARI 活动通道数为 0,tcpdump 进程数为 0。
|
||||
|
||||
## 实现与参数
|
||||
|
||||
- Logrus 是唯一日志输出,已有 slog/标准 log 通过同一输出记录,不建立第二套日志配置。
|
||||
- 两角色 `--debug/-D` 只开启详细日志;Agent 原 Debug 抓包语义移除,外部逐通抓包凭证检查改为独立 `--capture`。独立 `sip-call` 参数未改变,仅同步其说明中对业务 Agent 的示例。
|
||||
- 普通模式记录启动、收发方向、节点、身份、处理结果、耗时和失败原因;Debug 追加实际 HTTP/MQ/Unary RPC 边界的安全正文。
|
||||
- HTTP/MQ 保留安全 JSON 的原始空白、重复键和数字写法;RPC 明确标注 protobuf 的 JSON 投影,并展开 `*_json` 字段,不冒充原始 protobuf 线格式。
|
||||
- 敏感字段、提示词、完整对话、音频和原始 SIP 不输出;非法或无法安全展开的内容输出诊断,不退回打印原文。日志不改业务字节、返回错误、确认或重试规则。
|
||||
- HTTP 101 保留 WebSocket 的原始读写流;SDK native ARI 无 HTTPClient 注入入口,服务启动时观察默认 HTTP transport;可注入的客户端避免重复观察,保留原 TLS/超时/重定向设置。
|
||||
|
||||
使用说明:[日志与抓包](../logging.md)。
|
||||
|
||||
## 本地验证
|
||||
|
||||
在独立工作区、当前共享合同 `ff74afe396eb811745a20cd88d167585d6593132` 上完成:
|
||||
|
||||
- TDD:Debug/普通模式、两个角色的参数、抓包分离、正文不截断、不改变消息、重复敏感键、嵌套 JSON、非法正文、HTTP 读取失败、升级流、RPC/MQ 失败及确认含义。
|
||||
- 最终 `make check` 成功:格式、共享合同/Proto、`go vet ./...`、全包 `go test -race ./...`、构建、实际运行的隔离 RabbitMQ/HTTPS/mTLS 检查。
|
||||
- `make release-check-local` 成功,发布包仍明确 `production_approval=false`。
|
||||
- 项目既定口径的业务覆盖率 **71.4%**,高于 65%;生产部署 Python 测试 **21 项通过**。
|
||||
- A01–A12/K01–K16 沿用并核对既有单节点验收边界及相关测试,未改策略/契约/拓扑、不扩展真实或生产签收:[P08 本地验收](saas-dispatcher-p08-acceptance.md)。
|
||||
|
||||
## 现场真实日志核验
|
||||
|
||||
摘要取自部署后 systemd journal,在受限进程中解析原日志;只保留计数、状态、阶段、方法和哈希,不提交正文。
|
||||
|
||||
- Dispatcher 实际完成 **14 次 HTTP 请求和 14 次 HTTP 响应**,正文读取和 Debug 日志均存在;响应均为 HTTP 200。
|
||||
- 两端实际 Unary RPC 覆盖 `GetAgentStatus`、`ActivateAgent`、`ApplySIP`、`GetLoadedSIP`。Agent 和 Dispatcher 各有 **8 条 Debug RPC 正文**,请求/响应方向与阶段分别可见。
|
||||
- Agent 可见结果恢复完成、录音恢复扫描开始/完成等普通流程日志。两个业务进程的日志均为 Logrus JSON,无非 JSON 进程日志、无 error 记录、无 redaction_error。
|
||||
- 已观测正文中敏感字段及 URL 检查:**0 个敏感字段值泄露,0 个带查询的完整 URL,13 处隐藏标记**。这是对本次实际发生内容的核验,不宣称已覆盖供应商所有返回形式。
|
||||
- **现场未发生 MQ 业务收发**,因此现场 MQ 正文、ACK/confirm 的真实数据仍未验证;隔离 RabbitMQ 与单元测试通过不能冒充这项现场事实。
|
||||
- **现场没有呼叫执行日志**;不借本次日志部署声称真实通话、ASR/LLM/TTS、录音或 OSS 全链路通过。
|
||||
|
||||
部署工具仍显示 `dependency_state=saas_pending/business_ready=false`,未将该标签伪改为成功。实际两服务正常运行并有上述 HTTP/RPC 交互;本次不将旧独立探测标签或这些启动事实当作完整业务/生产验收。
|
||||
|
||||
## 数据与权限边界
|
||||
|
||||
- 使用原配置、业务数据和发布固定目录;未 reset、未迁移数据库、未修改线路地址/主叫/鉴权/AI 参数或 MQ 拓扑。
|
||||
- 部署前先核对零活动通话,停止 Dispatcher 关闭新准入,再复核零通道及零未确认执行;Dispatcher inbox 无占用,Agent 恢复文件为 0,才允许安装重启业务服务。
|
||||
- 未重启 Asterisk、开启抓包、调用独立 sip-call、生成外呼消息或额外调用真实 AI/OSS。
|
||||
- 根工作区的并行合同/拒绝数据改动未覆盖、回退、暂存或纳入本次提交。契约更新在该工作区遇到 dirty 后停止;按使用者允许继续的答复,另建隔离工作区同步最新共享 main,仅验证和提交本轮文件。
|
||||
- 私密原始工具输出保留在本机 `.local/logging-deployment/`,摘要文件 `0600`、目录 `0700`,不提交配置、原始正文或凭据。
|
||||
Reference in New Issue
Block a user