diff --git a/AGENTS.md b/AGENTS.md index df30540..6c07e3d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -79,7 +79,7 @@ ## 当前范围与权威入口 -- **SaaS Server v0.1(独立测试服务,已部署登记测试机)**:`cmd/saas-server` 使用 Fiber/v3,从指定私有 JSON 文件只读加载五类配置;完整快照更新仅内存生效。HTTP/curl 显式发送单条外呼、start/resume/edit 和 SIP 刷新,不自动投递、重发或重启服务;源 `event_id` 原样保留。共用现行 vhost,租户 ID 固定 `90000+原ID`、任务 ID 固定 `test-原ID`,仅在内存映射,保留原 Dispatcher 编号;只创建测试任务/反馈队列,正式控制/反馈队列不创建、绑定或消费。非测试反馈副本只在测试私有队列确认;测试反馈文件同步保存后 ACK,查询只覆盖本次运行,无历史恢复或发送记录持久化。Dispatcher/Agent、共享业务代码、合同和现有部署不变;使用者已确认本工具合入 main、推送并部署 `server.sip`:二进制 `~/.local/bin/saas-server`,配置 `~/.saas/`,新用户服务 enabled+active,端口8089,共用现行 `/waihu` vhost。配置从当前 SaaS 只读生成,MQ端点从测试机现行 Dispatcher 配置只读取得。原 Agent/Dispatcher/Asterisk 不变,**现行 Dispatcher 未接入新服务,测试任务队列无消费者,不能声称测试机外呼反馈已完成**;不授权真实拨号或 AI/OSS。使用见 [`cmd/saas-server/README.md`](cmd/saas-server/README.md),本地检查见 [`docs/evidence/saas-server-v0.1-local.md`](docs/evidence/saas-server-v0.1-local.md),部署事实见 [`docs/evidence/saas-server-server-sip-deployment.md`](docs/evidence/saas-server-server-sip-deployment.md)。 +- **SaaS Server v0.1(独立测试服务,已部署登记测试机)**:`cmd/saas-server` 使用 Fiber/v3,从指定私有 JSON 文件只读加载五类配置;完整快照更新仅内存生效。HTTP/curl 显式发送单条外呼、start/resume/edit 和 SIP 刷新,不自动投递、重发或重启服务;源 `event_id` 原样保留。共用现行 vhost,租户 ID 固定 `90000+原ID`、任务 ID 固定 `test-原ID`,仅在内存映射,保留原 Dispatcher 编号;只创建测试任务/反馈队列,正式控制/反馈队列不创建、绑定或消费。非测试反馈副本只在测试私有队列确认;测试反馈文件同步保存后 ACK,查询只覆盖本次运行,无历史恢复或发送记录持久化。Dispatcher/Agent、共享业务代码、合同和现有部署不变;使用者已确认本工具合入 main、推送并部署 `server.sip`:二进制 `~/.local/bin/saas-server`,配置 `~/.saas/`,新用户服务 enabled+active,端口8089,共用现行 `/waihu` vhost。配置从当前 SaaS 只读生成,MQ端点从测试机现行 Dispatcher 配置只读取得。本工具不改动原 Agent/Dispatcher/Asterisk,**现行 Dispatcher 未接入新服务,测试任务队列无消费者,不能声称测试机外呼反馈已完成**;更新时观察到原 Dispatcher 因正式任务6缺 `ASR params.sample_rate` 在重启,另行排查,不补默认值或改业务代码掩盖;不授权真实拨号或 AI/OSS。使用见 [`cmd/saas-server/README.md`](cmd/saas-server/README.md),本地检查见 [`docs/evidence/saas-server-v0.1-local.md`](docs/evidence/saas-server-v0.1-local.md),部署事实见 [`docs/evidence/saas-server-server-sip-deployment.md`](docs/evidence/saas-server-server-sip-deployment.md)。 - **2026-10-12 接通时长字段已合入并部署登记测试机**:共享契约 `bfa3380` 已推送,本项目业务源码 `8340efd` 已快进合入、推送 `main` 并在 `server.sip` 固定部署。`call.execute.result` 增加 `answered_at` 与 `connected_duration_ms`,原 `duration_ms` 不变;未接通且确认结束为 0,原通道 Up/Destroyed 时间证据缺失为 null,SaaS 不应从 outcome 推断接通时长。重新部署未重置数据、不重启 Asterisk、不抓包/主动试拨;Agent/Dispatcher 均 Debug 开、Capture 关,Asterisk PID 777461 不变,零活动通道,服务均 enabled+active、零重启;实际制品 SHA-256 独立复现。SaaS 探测 `saas_pending`、`business_ready=false`,未观测新字段真实到达、接通通话或生产签收,仍需 SaaS 开发对接与确认。文档后续补记不改变已安装的业务源码版本。详见 [`docs/evidence/connected-call-duration-local.md`](docs/evidence/connected-call-duration-local.md)。 diff --git a/docs/evidence/saas-server-server-sip-deployment.md b/docs/evidence/saas-server-server-sip-deployment.md index 157752b..f638391 100644 --- a/docs/evidence/saas-server-server-sip-deployment.md +++ b/docs/evidence/saas-server-server-sip-deployment.md @@ -1,5 +1,26 @@ # SaaS Server:server.sip 部署记录 +## 当前:共用 vhost,仅测试租户/任务编号隔离 + +使用者随后明确不需要独立 vhost,只调整测试 SaaS/队列、不接通或修改现有 Dispatcher;最终编号规则为 `tenant_id = 90000 + 原ID`、`task_id = test-原ID`,保留原 Dispatcher 编号。 + +已将修复 `cb0c944` 合入并推送 main,只更新 `~/.local/bin/saas-server` 和该服务的 broker 连接配置,重启的只有 `go-sip-saas-server.service`。实际制品 SHA-256:`609e6e29305cded75ee6343db147fd62f8600671d7e1cedc58b1654e743df58d`。 + +- 当前共用测试机 Dispatcher 的 `/waihu` vhost,仍使用测试专用账号;只为此账号添加测试队列与既有交换机所需权限,不改变正式账号权限。 +- 当前使用者提供的源配置已有7个任务、租户1005;部署前用实际读取/映射函数重新验证,通过后才替换程序。仅内存生成租户 **91005**、任务 **test-1 至 test-7**。源10份快照内容在部署前后摘要不变,SIP/providers 原值保留,quota/tasks 除批准的身份字段外完全相同。 +- 测试任务队列仍用现行格式 `agent-call.d..task.test-<原ID>.v1`;只创建这些测试任务队列,不创建、绑定或消费正式控制队列。 +- 现场正式反馈队列为 `agent-call.saas.d..v1`;测试观察队列为 `agent-call.saas.test.d..v1`。共享规范明确示例共享队列名并非部署强制,本修复不改合同、交换机或出站路由。 +- 同一 Dispatcher 的出站路由会给各自队列一份副本;本服务只消费测试观察队列,不读取正式队列。无对应测试请求的非测试租户副本只在自己的队列确认,不保存为测试结果;有对应请求的异常身份仍显式校验失败,不吞掉错误。 +- 实际 MQ 管理数据验证:测试账号唯一消费队列为该测试观察队列,正式反馈队列未被测试账号消费;7个测试任务队列均消息0、消费者0,未发送任何测试指令或拨号。 +- `make check`、业务覆盖率73.0%、新命令覆盖率66.3%、固定源码本地发布检查通过。新增同 vhost 集成证明正式原消息未被测试消费,原编号/源配置不变,HTTPS→MQ→Mock Agent mTLS 测试采用上述编号规则通过。 +- 原独立测试 vhost 没有 purge 或删除,也没有迁移、重发其中的消息;原程序和启动配置已在 `~/.saas/deployment-backups/` 私密备份。它不再是当前服务的连接目标。 + +现场发现正式反馈消费者由0变1,不能伪称所有队列动态计数不变;管理数据已确认该消费者不是测试账号。另发现原 Dispatcher 正在反复启动,日志原因为正式任务6的 `ASR params.sample_rate` 缺失;其配置仍读取正式 SaaS,不指向本测试服务。该问题未在本任务中改写配置、补默认值或修改代码处理,不能把它说成原业务健康。 + +现有 Dispatcher 没有订阅测试任务队列,本次仍只完成测试服务及队列调整,不代表测试机外呼反馈链路已接通。 + +以下为首次独立-vhost部署的历史记录,当前状态以上述更新为准。 + ## 授权与版本 使用者明确要求合入 main、推送并部署 server.sip;随后确认二进制目录为 `~/.local/bin`,启动配置位于 `~/.saas/`,允许从当前 SaaS 只读获取快照,使用独立测试 MQ,不改变现有 Dispatcher/Agent。