29 lines
4.0 KiB
Markdown
29 lines
4.0 KiB
Markdown
# go-sip
|
||
|
||
独立 Go SIP 调度与执行项目。单一 Go 1.27.1 module/制品通过 Cobra 显式提供 `dispatcher`、`agent` 两个业务子命令;当前业务启动只允许**隔离 Mock**,mixed/real 直接拒绝。目标是分阶段以 Go 替换 Agent,不重写 Asterisk,也不建立第二套 SaaS 管理后台。项目的源码、文档、依赖、构建、测试、配置和发布入口均在本仓库内。
|
||
|
||
> **范围与进度:** [当前实施与验收入口](docs/plan-saas-dispatcher.md)记录 P01–P07 项目内已验证,以及 P08 最终 A01–A12/K01–K16 与 ≥65% 业务覆盖率对照待完成。隔离 RabbitMQ、双向 TLS/HTTPS、OSS PUT 与 AI Mock 的通过,不代表真实 SaaS、管理平台、MQ 应用收讫、OSS/AI 供应商、Asterisk/SIP/ECS、真实拨号或生产切换已验证;当前发布清单 `production_approval=false`。真实试拨另需逐次授权,并遵守白名单、Asia/Shanghai `09:00`–`20:00` 及拨号前诊断抓包门禁。
|
||
|
||
## 唯一当前接口
|
||
|
||
- [SaaS↔Dispatcher 通信说明](docs/thirds/saas-dispatcher.md);机器合同为 [`contracts/local/`](contracts/local/) 的 Schema、拓扑、正反例和来源/hash。SaaS 的 SIP、任务、归属任务清单、租户额度和 AI 供应商配置只经五类只读 HTTP;呼叫、控制、必要回执与每通话唯一结果只经固定 `v1` RabbitMQ 通信名。固定 HTTP `/internal/v1/dispatcher/...`、MQ `v1` 及业务 revision 是有效合同,不是旧实现代次。
|
||
- Dispatcher 独立 UUID/资源归属、SaaS 预建的控制/任务队列、共享持久结果队列及本地 SQLite 权威任务/额度/inbox/outbox;未知通话不释放占用、不重拨、重启继续原消息身份。Agent 与 Dispatcher 通过双向 TLS Unary gRPC 和预绑定身份/会话代际交互,业务恢复落私有文件。内部联系见 [`proto/agent/agent.proto`](proto/agent/agent.proto)。
|
||
- 任务内不可变获批 AI 参数支持 ASR-only 与 ASR+LLM+TTS;录音经短期授权由 Agent **一次** HTTPS PUT 至 OSS,明确失败才按受控文件恢复,结果未知不自动再传,最终事实进入 MQ。批准 Mock 的 SIP revision 回报不证明 Asterisk 已实际加载。
|
||
- [`docs/plan-saas-dispatcher-v05-v0.1.md`](docs/plan-saas-dispatcher-v05-v0.1.md) 保持原字节和来源 hash,**只作为当前机器合同的历史来源**,不是另一个运行计划;更早的 F/W/v0.1–v0.4、旧 MQ-only 与部署示例在历史文档或 [`docs/archive/`](docs/archive/) 中追溯,不作为运行回退。
|
||
|
||
## 本地验证(不触碰真实线路)
|
||
|
||
```sh
|
||
make check # 格式、Proto、当前合同/历史来源、race、vet、构建、三项实际运行的隔离 MQ 集成测试
|
||
make release-check-local # 本地制品、hash、当前拓扑、Mock-only/不覆盖既有文件的包检查
|
||
```
|
||
|
||
结果、重启与故障场景及未验证项见 [`docs/evidence/saas-dispatcher-implementation.md`](docs/evidence/saas-dispatcher-implementation.md)。本地检查不等于非生产主机验收:任何实际新主机/版本/Cell 验证须执行 [`deploys/test/nonprod-call-evidence.sh`](deploys/test/nonprod-call-evidence.sh) 规定的资源、Asterisk/systemd、ARI/PJSIP 与媒体诊断;mixed/real 外呼还须在拨号**之前**启动受限 SIP/RTP 抓包和 PJSIP logger。当前 Mock-only 制品不能启用 mixed/real,更不能因白名单和样例自动发起真实呼叫。
|
||
|
||
## 导航
|
||
|
||
- [当前实施与 A01–A12 验收](docs/plan-saas-dispatcher.md) · [当前通信合同](docs/thirds/saas-dispatcher.md) · [当前机器合同](contracts/local/manifest.json) · [可复核本地证据](docs/evidence/saas-dispatcher-implementation.md)
|
||
- [文档索引](docs/README.md) · [物理部署及独立 Asterisk 约束](deploys/README.md) · [项目开发与安全约束](AGENTS.md)
|
||
|
||
现存 SQLite、spool、outbox 与 Agent 恢复文件不自动清空或迁移;发现旧状态拒绝启动并保留原文件,必须先厘清未交付事实。仓库不保存真实密钥、完整用户音频或完整对话。
|