docs: record diagnostic completeness recheck and redeployment
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:57 Logrus 最终排障日志部署**:独立审查指出初版拒绝/等待及逐条恢复原因不足,已在 `592c2fe` 全面补齐已有关联身份、实际原因、各节点阶段、尝试/下次重试、未知及到期保留;失败原因不只记录类型,嵌入错误的 JSON 对象/数组也做结构化排除。新增断言先失败后通过,最终完整检查/发布检查与 Python 21 测试通过,业务覆盖率 71.7%。固定提交已推送、重部署,两业务服务 PID 2900896/2900908、enabled+active/零重启、真实 `--debug` 无抓包,制品 SHA-256 为 `e3aa61d75768e6aca2b3567864890da4ba5bf3ebd53fba678cca242ae030a2b4`。14 次 HTTP/两端 RPC 正文复核及敏感检查通过,仍无现场 MQ/呼叫/真实恢复故障,不以本地断言冒充;未清数据、改重试/数据规则或重启 Asterisk,PID 777461 不变。根工作区并行改动保留,权威源码在 `.local/logging-isolated` main。完整证据见 [`docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md`](docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.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)。
|
||||
|
||||
@@ -1,5 +1,27 @@
|
||||
# Dispatcher / Agent Logrus Debug 实现与固定环境部署
|
||||
|
||||
## 最新完成版本:592c2fe(23:57 CST 现场)
|
||||
|
||||
初版完成请求经独立审查发现拒绝、等待和逐条恢复失败日志不足,因此初版不能作为最终完成。已按以下项目修复,并重新完整验证、推送及部署:
|
||||
|
||||
- Dispatcher 的无效号码、未来 issued_at、容量/准入等待、重复执行、拨号前变更导致取消、已证实未发起的拒绝及交付未知保留占用,均记录已有任务/事件/租户/Dispatcher 身份、具体原因和处理阶段。读取配置、线路、占用、预占及执行/保存失败按实际节点记录原错误,不只打印类型或静默返回。
|
||||
- 录音恢复逐条记录验证/加载失败、申请原上传授权、PUT 前持久屏障、失败后的实际退避保存、原结果回报、确认保存及等待/到期/未知结果保留人工检查;关联 event/tenant/dispatcher/recording/upload ID、状态、尝试次数和下次尝试时间。
|
||||
- 原结果恢复逐条记录校验、原挂断确认、持久化、原结果回报和确认文件清理的原因与身份。恢复循环及回调记录实际错误,不只记录 `%T` 或汇总数量。
|
||||
- 原授权失败原因通过 `%w`/`errors.Join` 保留,状态、对象、身份、48 小时策略及 PUT 重试次数规则不改。错误里嵌入的 JSON 对象/数组同样结构化隐藏提示词、对话与凭据,非法嵌入 JSON 不退回打印;quoted token/API key 也排除。
|
||||
- 新增三份流程/恢复日志测试:`internal/dispatcher/execute_logging_test.go`、`internal/agent/recovery_logging_test.go`、`cmd/sip-go-agent/agent_recovery_logging_test.go`。断言普通模式下具体原因、身份、节点及退避,且文件和占用状态保持原规则;新增失败测试先红后绿。
|
||||
|
||||
**最终验证**:重新完成 `make check`、实际隔离 RabbitMQ/HTTPS/mTLS、全包 race/vet/build/合同及 Proto 检查、`make release-check-local`、Python 21 项测试;最终业务覆盖率 **71.7%**。
|
||||
|
||||
**最终部署**:源码 `592c2fe9a37ed5be1b368c3f2c1d09e6d1643dda` 已推送远端 main 并核对;从干净固定提交构建,实际两进程 SHA-256 均为 `e3aa61d75768e6aca2b3567864890da4ba5bf3ebd53fba678cca242ae030a2b4`。Agent PID `2900896`、Dispatcher PID `2900908`,均 enabled+active/running、零重启、实际 `--debug` 且无 `--capture`;Asterisk PID `777461` 不变。
|
||||
|
||||
部署前再次停止 D 关准入并复核零活动通话、零未知占用/执行恢复文件,未 reset、迁移或主动投递。23:57 CST 现场重新确认 14 次 HTTP 请求/响应(200)、两端各 8 条 Debug RPC 正文;只有 Logrus JSON,无 error/redaction_error,已观测敏感字段/签名查询 URL 泄露 0、隐藏标记 13;活动通道/tcpdump 均 0。
|
||||
|
||||
**现场仍无 MQ 业务收发、呼叫执行及真实恢复故障**。上述新增失败/重试分支有本地断言,并不声称这些故障已经在真机发生。原部署器独立 probe 仍 `saas_pending/business_ready=false`,保留事实,不签收真实通话/AI/OSS或生产。
|
||||
|
||||
本轮最终权威源码工作区为 `/home/rogee/Workspace/sip-go-agent/.local/logging-isolated` 的 main;根工作区并行改动未覆盖。新现场摘要在 `.local/logging-deployment/rework-{preflight,deploy,field-summary}.json`,均 `0600`。
|
||||
|
||||
## 初版部署记录(以下为历史,不代替上述最终版本)
|
||||
|
||||
## 结论与来源
|
||||
|
||||
- 源码 `669f3a5868a08e96029f6e76f08f7330c25f5159` 已合入并推送 `main`,远端提交号核对一致;制品来自该干净固定提交。
|
||||
|
||||
+3
-2
@@ -18,7 +18,8 @@ Agent 的抓包开关独立为 `--capture`:只在显式开启时要求 `AGENT_
|
||||
- HTTP:请求开始、实际被读取的请求/响应 JSON、响应状态、正文读取结果。认证头不记录;URL 的认证、查询和 fragment 部分删除。SDK/native ARI 的 HTTP 客户端使用同一观察输出,保留 TLS、超时、重定向和 WebSocket 升级行为。
|
||||
- MQ:实际入站/出站字节;接收、校验、处理、ACK/NACK/Reject、发布及 broker confirm。`publisher_confirmed` 只证明 RabbitMQ 确认,记录 `saas_processed=false`,不能据此声称 SaaS 已处理。
|
||||
- RPC:实际边界的 protobuf 请求/响应投影,明确 `wire_encoding=protobuf`。冻结配置中的 `*_json` 字节展开为 JSON,其余字节仅记录长度;不是业务内部 CallSpec,也不声称 JSON 是 protobuf 原始线格式。客户端响应收到和服务端响应准备完成分别记录,服务端返回不能冒充对端收讫。
|
||||
- 业务流程:持久接纳/重复忽略、等待准入、选线、预占、请求执行、Agent 排程/执行/结束、结果回报及恢复。
|
||||
- 业务流程:持久接纳/重复忽略、号码拒绝、未来 issued_at/容量/准入等待、选线、预占及拨号前取消、请求执行、交付未知保留占用、Agent 排程/执行/结束、结果回报及恢复。拒绝和等待不是无日志的返回;节点失败记录具体原因,而不是只有错误类型。
|
||||
- 恢复:逐条记录验证/加载、原授权申请、PUT 屏障/结果、保存退避、原结束/结果回报和确认;带已有事件/租户/录音/上传身份、状态、尝试次数和下次尝试时间。未知或到期明确要求人工检查并保留文件,不伪装成已完成或自动重放。
|
||||
|
||||
`event_id/task_id/call_id/request_id` 等已有标识用于关联记录;只有组件实际掌握的标识才输出。
|
||||
|
||||
@@ -26,7 +27,7 @@ Agent 的抓包开关独立为 `--capture`:只在显式开启时要求 `AGENT_
|
||||
|
||||
密钥、Token、认证信息、完整 prompt/messages/transcript/text/content/结束语、原始 SIP 内容及音频不输出。敏感字段按键名隐藏,重复键逐个处理;其他 JSON 的空白、重复键和数字写法保留,原业务字节与对象不修改。HTTP 二进制和升级后的 WebSocket 流不进入正文日志。
|
||||
|
||||
非法 JSON、无法安全展开的嵌套数据或部分读取不能退回打印未经处理的正文:输出 `redaction_error`、字节数及 SHA-256。HTTP `body_complete=false` 只表示已观测部分,不能把它当作完整网络正文;原读取/关闭错误继续返回,不因日志改变重试、确认或业务结果。
|
||||
错误消息中嵌入的 JSON 对象/数组和 quoted API key/Token 也作同样处理,实际错误仍返回,原原因保留。非法 JSON、无法安全展开的嵌套数据或部分读取不能退回打印未经处理的正文:输出 `redaction_error`、字节数及 SHA-256。HTTP `body_complete=false` 只表示已观测部分,不能把它当作完整网络正文;原读取/关闭错误继续返回,不因日志改变重试、确认或业务结果。
|
||||
|
||||
## 固定环境部署及查看
|
||||
|
||||
|
||||
Reference in New Issue
Block a user