docs(saas-server): record registered-host deployment and isolated queue boundary

This commit is contained in:
2026-10-13 12:19:15 +08:00
parent d4c776743b
commit 00389d8322
3 changed files with 51 additions and 1 deletions
+1 -1
View File
@@ -79,7 +79,7 @@
## 当前范围与权威入口
- **SaaS Server v0.1(本地测试工具,不改变线上环境)**:`cmd/saas-server` 使用 Fiber/v3,从指定私有 JSON 文件只读加载五类配置;完整快照更新仅内存生效。HTTP/curl 显式发送单条外呼、start/resume/edit 和 SIP 刷新,不自动投递、重发或重启服务;源 `event_id` 原样保留。仅专用 `saas-mock-*` vhost,反馈文件同步保存后 ACK,查询只覆盖本次运行,无历史恢复或发送记录持久化。Dispatcher/Agent、共享业务代码、合同和现有部署不变;不授权部署、真实拨号或 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)。
- **SaaS Server v0.1(独立测试服务,已部署登记测试机)**:`cmd/saas-server` 使用 Fiber/v3,从指定私有 JSON 文件只读加载五类配置;完整快照更新仅内存生效。HTTP/curl 显式发送单条外呼、start/resume/edit 和 SIP 刷新,不自动投递、重发或重启服务;源 `event_id` 原样保留。仅专用 `saas-mock-*` vhost,反馈文件同步保存后 ACK,查询只覆盖本次运行,无历史恢复或发送记录持久化。Dispatcher/Agent、共享业务代码、合同和现有部署不变;使用者已确认本工具合入 main、推送并部署 `server.sip`:二进制 `~/.local/bin/saas-server`,配置 `~/.saas/`,新用户服务 enabled+active,端口8089,专用 `saas-mock-server-sip` 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)。
- **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)。
+8
View File
@@ -4,6 +4,14 @@
**不修改 Dispatcher/Agent,不绕过它们的业务检查。启动不自动发消息。仅支持专用 `saas-mock-*` vhost,不能和真实 SaaS 共用反馈队列。** 本工具不授权真实拨号或真实 AI/OSS 调用。
## server.sip 已安装实例
- 二进制:`~/.local/bin/saas-server`;启动配置:`~/.saas/server.json`。
- 用户服务:`go-sip-saas-server.service`,监听端口8089,专用 vhost `saas-mock-server-sip`。
- 服务日志:`journalctl --user -u go-sip-saas-server.service`。
- 现有 Dispatcher/Agent 未改动,**没有 Dispatcher 消费这个测试 vhost,推送仅入队,不会自动执行或返回外呼结果**;接入测试链路需要另外安排。
- 实际安装及只读验证见 [`../../docs/evidence/saas-server-server-sip-deployment.md`](../../docs/evidence/saas-server-server-sip-deployment.md)。
## 启动
```sh
@@ -0,0 +1,42 @@
# SaaS Server:server.sip 部署记录
## 授权与版本
使用者明确要求合入 main、推送并部署 server.sip;随后确认二进制目录为 `~/.local/bin`,启动配置位于 `~/.saas/`,允许从当前 SaaS 只读获取快照,使用独立测试 MQ,不改变现有 Dispatcher/Agent。
远端 main 原有 `7753264` 已保留,功能分支在干净隔离工作区合并为 `d4c776743bde22e5b5ccde54405b2bd54fab0f79`,推送后独立核对远端引用一致。部署二进制固定从该提交构建;后续说明更新不改变已经安装的程序源码版本。
合并后重新执行并通过:`make check`、`make coverage`(≥65%)、新服务两项隔离 HTTPS/MQ/Agent mTLS 与启动退出集成、`make release-check-local`。第一次测试使用 umask 077,导致权限测试的输入文件模式被环境改变;定位后用正常测试环境 umask 022 重测全部通过,没有修改既有测试或业务逻辑来绕过失败。
## 实际安装
| 项目 | 现场事实 |
| --- | --- |
| 主机 | 已登记 `server.sip`,rogee 用户,Debian 13,x86_64;SSH Ed25519 指纹经登记 known_hosts 严格校验 |
| 二进制 | `/home/rogee/.local/bin/saas-server`,0755,帮助命令通过 |
| SHA-256 | `52e67e9564c8ba8cd9f51ef3c3a65dbee10f73290417d3b48e5374c732cd6679`;本地构建与远端实际文件相同 |
| 启动配置 | `/home/rogee/.saas/server.json`,0600 |
| 业务快照 | `/home/rogee/.saas/snapshots/`;SIP、providers、quota、6 个任务,共9文件,均0600;目录0700 |
| 反馈目录 | `/home/rogee/.saas/feedback/`,服务独立使用,不覆盖输入 |
| 用户服务 | `go-sip-saas-server.service`,enabled + active/running,0重启;Linger=yes,未做真实重启验收 |
| 监听 | `0.0.0.0:8089`,HTTP;没有添加公网、HTTPS或登录系统 |
| 测试 MQ | `saas-mock-server-sip` 专用 vhost,专用新账号,仅授权该 vhost;没有改变原账号/原 vhost 权限 |
配置来自获准的只读 SaaS 接口,6个任务属于1个租户;全部9个快照通过当前共享合同校验。不提交原快照、凭据或原始正文。
MQ 连接以测试机实际 `~/.config/go-sip/dispatcher.env` 为来源,只在内存读取。最初从工作机访问默认管理端口失败且未创建资源;随后在 server.sip 内通过已配置的内网端点完成专用 vhost 和账号创建。未改写 Dispatcher 的连接地址或环境文件。
## 只读现场验证
- 新服务五类配置接口返回成功;SIP/providers/quota/任务详情响应与对应输入文件字节一致,任务列表与六份任务详情一致。
- 全部10份输入文件(含启动配置)在查询前后摘要不变,所有者/权限符合要求。
- 启动没有发出命令,反馈目录为空;仅 GET 配置和空事件查询,没有 POST、试拨或消息投递。
- 新 vhost 实际建立8个队列,消息总数0,任务消费者0,反馈消费者1。
- Agent PID 3040037、Dispatcher PID 3040049、Asterisk PID 777461 保持不变,均 active/running、0重启。
- 只新增 SaaS Server 用户服务;没有重启、停止或重新配置原有业务服务,没有 reset、purge、拨号、抓包、真实 AI/OSS 调用或删除现有业务数据。
## 当前边界
**新服务已经安装并启动,但现有 Dispatcher 尚未接入这个测试服务/vhost。** 这是按“不改变现有 Dispatcher/Agent”的授权边界保留的状态,不是外呼反馈全链路已在测试机验收。
现在可读取/内存修改配置、向专用队列显式发送测试指令;没有测试 Dispatcher 消费时只会入队,不会执行或产生业务反馈。接入测试执行链路须另行明确安排,不能自动切换现有 Dispatcher,也不能将本地 Mock 集成结果当成真实拨号签收。