整理 docs 目录并归档历史文档
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
| W08 Permit/Execute | **隔离 mock mTLS 通过 / 生产阻塞** | 当前工作树项目 `internal/rpc.DialFromFiles` + `dispatcher.AgentCoordinator.ExecuteRaw` 已在 owner-authorized ECS mock Agent 上完成 R01/R02、执行许可、Execute 和 accepted receipt;同一工作树 `Dispatcher.ExecuteReserved` 通过 SQLite quota/command/reservation 串联 mTLS Agent,结果为 accepted receipt、task_status=running(`docs/evidence/20260918-w06-mtls-cloud.md`);没有跨 Cell 最后发起屏障、Agent/Asterisk 业务路径的 SIP originate、真实 MQ application receipt 或故障注入验收;三条直连 SIPp INVITE 仅是独立线路诊断。 |
|
||||
| W07/W10 双 AI | **本地 Mock/授权/SDK API PoC 通过 / 真实参数门禁阻塞** | W01 双模式 Schema、不可变摘要、Agent RPC 对 permit/Execute 的授权绑定校验、bounded/cancellable ASR-only/full-AI mock pipeline 和阶段调用测试通过;隔离 `openai-go/v3.62.0` streaming 参数/禁重试、`dashscopego/v0.1.2` Paraformer surface、`doubao-speech-go` ASR/TTS surface 均编译通过;Volcengine TTS 当前缺 speed/volume/pitch 可达性,DashScope endpoint injection/两家真实供应商的取消/背压/能力验收仍未完成,禁止复用旧 LLM/TTS。 |
|
||||
| W09 SIP/ARI/RTP | **隔离 Asterisk/ARI runtime PoC 通过 / 业务媒体与真实阻塞** | 已锁定并引入 Pion RTP `v1.10.5`,`internal/media` 只做 bounded policy adapter,库解析和 payload/SSRC/包长边界测试通过;新增 `TestPacketGuardPreservesPCMAPayloadByteForByte` 通过 160-byte PT=8 fixture 的精确 payload/header 保真;`internal/contract.ValidateStaticArtifact` 覆盖 Schema、Cell/source/digest/revision、egress allowlist、必需 trunk 和重复 trunk 拒绝;临时 module `ari/v5.3.1` 已在固定 Asterisk `22.10.1` 隔离容器运行:内部 Stasis channel、mixing bridge、RTP/UDP PCMA ExternalMedia、`UNICASTRTP_LOCAL_ADDRESS/PORT`、`StasisEnd` 均通过;双 ExternalMedia 合成 RTP 经过 bridge 转发并验证 RTP v2/PT=8(证据:`docs/evidence/20260918-w09-ari-runtime.md`)。隔离 SIPp-to-PJSIP/ARI signaling 已通过(证据:`docs/evidence/20260918-w09-sip-ari.md`);进一步的 PJSIP/PJSUA2 mock leg 已通过真实 SIP RTP 双向 PCMA、U1/U2/U3 播放、端点 WAV 封口和 ARI 清理(证据:`docs/evidence/20260918-w09-sip-rtp-ari.md`)。另在 owner-authorized Debian ECS 通过现有 SIPp image 从固定 EIP 对 `61.132.228.221:5060`、`60.171.24.90:5060`、`160.202.254.79:5060` 各发一条 OPTIONS,均收到 `SIP/2.0 200 OK`(证据:`docs/evidence/20260918-ecs-sip-deployment.md`);这不证明 provider authorization、registration、caller-ID/dial-prefix 或真实媒体。另在 owner-authorized ECS 按用户选择对三条登记线路各发一条真实 INVITE:数企 `480 Temporarily Unavailable`、中鼎 `404 Not Found`、百应含 PCMA SDP 的 `183 Session Progress` 后无 `200 OK`,均未形成已接通对话(证据:`docs/evidence/20260918-real-sip-provider-calls.md`、`docs/evidence/20260919-real-sip-provider-calls-retry.md`)。后续允许窗口重试仍无最终 `200 OK`;2026-09-19 新 ECS 对两个白名单目标直连真实供应商,数企/百应仍无最终 `200`,中鼎第二目标一次信令达到 `200`,但 media probe 未干净完成,未验收 RTP/录音;用户即时确认后又对 provider-second 做了 1 次真实 direct-PJSIP 外呼,临时 PCAP 观察 8 个 SIP 包、0 个媒体包和 `100/200/404` token,原始 PCAP 已删除且未自动重试;证据:`docs/evidence/20260919-real-provider-ecs-direct.md`。这仍未证明供应商真实媒体、端到端生产 PCMA sample preservation、录音 retention/OSS handoff、重连、Agent 集成,`docs/evidence/20260919-sip-routing-implementation-comparison.md` 进一步记录父目录线路配置与 Go Agent 的注册/认证、From/PAI、前缀和选路边界;ARI 也未锁入生产 module。 |
|
||||
| W11 OSS/录音 | **Alibaba OSS 本地/ECS通过 / 生产闭环阻塞** | W01 OSS control-plane Schema、受限 HTTPS grant 的 host/size/checksum/expiry/object-key/redirect 校验、Agent 直接 PUT client 和 upload metadata RPC handlers 通过;Dispatcher 使用 Alibaba 官方 OSS Go SDK v2,15分钟单次 grant,显式重新申请,源资产保留;本地及新 ECS mTLS gRPC→OSS 内网 endpoint 已完成 PUT/HEAD、SQLite completion、`recording.ready` outbox 和幂等验证(证据:`docs/evidence/20260920-local-oss-mq-integration.md`、`docs/evidence/20260920-new-ecs-preflight.md`);没有生产 SaaS application receipt、生产 broker ACL/TLS 和真实 provider-third 新录音闭环。 |
|
||||
| W11 OSS/录音 | **Alibaba OSS 本地/ECS通过 / 生产闭环阻塞** | W01 OSS control-plane Schema、受限 HTTPS grant 的 host/size/checksum/expiry/object-key/redirect 校验、Agent 直接 PUT client 和 upload metadata RPC handlers 通过;Dispatcher 使用 Alibaba 官方 OSS Go SDK v2,15分钟单次 grant,显式重新申请,源资产保留;本地及新 ECS mTLS gRPC→OSS 内网 endpoint 已完成 PUT/HEAD、SQLite completion、`recording.ready` outbox 和幂等验证(证据:`docs/archive/evidence/20260920-local-oss-mq-integration.md`、`docs/evidence/20260920-new-ecs-preflight.md`);没有生产 SaaS application receipt、生产 broker ACL/TLS 和真实 provider-third 新录音闭环。 |
|
||||
| W12 事件/观测/故障 | **本地资源样本/事件部分通过** | command.result outbox/replay、8 种 strict event Schema/fixtures、`transcript.updated` archive/realtime builder、gopsutil 资源样本 freshness/unknown、contract-backed local flow、状态和本地检查有证据;新增 `internal/calllog` 的 HMAC `phone_ref`、掩码手机号和 allow-list JSONL 业务日志,覆盖执行/呼叫状态/终态/attempt/录音事实,验证原始号码不落盘,证据见 `docs/evidence/20260919-phone-call-business-log.md`;W12 定向 replay/outbox/no-originate-retry 证据见 `docs/evidence/20260918-w06-w12-local.md`;最新 race/vet/module/契约/Proto 回归通过;指标、应用收讫、整体补传和故障注入未闭合。
|
||||
| W13-a 本地构建 | **本地通过 / 生产候选未冻结** | `make acceptance-local`:契约哈希、`go mod verify`、`go test -race ./...`、`go vet ./...`、`go build`、mock smoke 和 real-mode fail-closed 均通过;`make release` 生成带源脏状态、模块/二进制 SHA-256、Go版本和无凭据声明的本地 manifest;该 release 已复制到 ECS hash-named releases 目录并按 manifest 校验 binary/go.mod/go.sum,仍明确 `production_approval=false`;新增物理 Debian 13 systemd 上传包 `0.1.0-p1.20260919`,`deploys/install.sh` 在 owner-authorized ECS 完成 checksum/OS/权限和 `systemd-analyze verify` smoke,详见 `docs/evidence/20260919-physical-systemd-deployment.md`。 |
|
||||
| W13-b/P1 两 Cell | **物理单机安装 smoke / 两 Cell 真实阻塞** | 已有两套隔离 mock Cell 的 Agent session/permit/execute 测试;一台 Debian ECS 已创建、加固并完成当前候选二进制 Agent/Dispatcher mock 启动、隔离 RabbitMQ tenant consume→SQLite→outbox flush、Asterisk mock、三条 SIP endpoint OPTIONS 200 smoke,以及三条线路真实 INVITE 的非接通结果及后续允许窗口重试,证据:`docs/evidence/20260918-ecs-sip-deployment.md`、`docs/evidence/20260918-rabbitmq-integration.md`、`docs/evidence/20260918-real-sip-provider-calls.md`、`docs/evidence/20260919-real-sip-provider-calls-retry.md`、`docs/evidence/20260918-cloud-host-bootstrap.md`。仍没有物理两 Agent/两 Asterisk/三供应商真实媒体/真实双 AI/录音验收、生产镜像 digest、容量或 N+1 证据;初始账户失败保留在 `docs/evidence/20260918-aliyun-provisioning-blocker.md`。 |
|
||||
|
||||
@@ -42,7 +42,7 @@ repository is `go-sip`; local release manifests preserve the historical fact.
|
||||
| D04 Unary/last permit | Generated `agent.v1` Unary service, TLS 1.3 mTLS/SAN checks, session fencing, CAS, SQLite reservation-to-Agent execution seam, unknown-result preservation, contract-backed local flow joining command/quota/Agent/event boundaries, owner-authorized ECS mock mTLS R01/R02→permit→Execute→accepted receipt smoke, and full `Dispatcher.ExecuteReserved` quota/command/reservation→mTLS Agent result with `task_status=running` | Approved business semantics/sign-off, cross-Cell final barrier, ARI submission boundary, real MQ application receipt, and fault-injection evidence |
|
||||
| D05 sessions/certificates | Peer/SAN validation, durable session-generation journal, old-generation fencing, boot/epoch tests, local trust-root rotation rejection; owner-authorized Debian ECS loopback-only smoke with disposable TLS1.3 CA/client/server certificates, pre-activation R01 `GetAgentStatus` + R02 session status, negative rejection of no-client/rogue-CA clients, project `internal/rpc.DialFromFiles` + `dispatcher.AgentCoordinator`, actual Dispatcher Cobra endpoint-inventory startup, same-host two-Agent/two-Cell session binding, configured Agent/Cell identity rejection, wrong-inventory `PermissionDenied`, restart-based CA root replacement with old-client rejection, same-boot Dispatcher generation 1→2 recovery, and Agent-side leaf fingerprint allowlist with same-CA unauthorized-client rejection | Physical two-Cell/cross-host process interop, fleet-wide endpoint-role rotation/revocation distribution, cross-host deployment certificate interop, and production health evidence; smoke record: `docs/evidence/20260918-w06-mtls-cloud.md` |
|
||||
| D06 static Cell artifact | Schema-first artifact validation, source/Cell/digest/revision/egress/trunk checks, real-mode startup path, activation rejection tests | Management approval matrix, unique deployment writer, actual Asterisk load evidence, and maintenance-window proof |
|
||||
| D07 OSS handoff | HTTPS/host/redirect/size/checksum/expiry/object-key grant guards, 15-minute single-use grant policy with explicit re-request, upload binding/expiry completion checks, direct PUT and metadata RPC tests, source-asset retention after direct upload until verified handoff, Alibaba OSS SDK PUT/HEAD, durable completion, outbox and `recording.ready` closure (`docs/evidence/20260920-local-oss-mq-integration.md`, `docs/evidence/20260920-new-ecs-preflight.md`) | Production SaaS upload-session/complete/application receipt, production broker ACL/TLS, approved retention cleanup and current provider-third recording evidence |
|
||||
| D07 OSS handoff | HTTPS/host/redirect/size/checksum/expiry/object-key grant guards, 15-minute single-use grant policy with explicit re-request, upload binding/expiry completion checks, direct PUT and metadata RPC tests, source-asset retention after direct upload until verified handoff, Alibaba OSS SDK PUT/HEAD, durable completion, outbox and `recording.ready` closure (`docs/archive/evidence/20260920-local-oss-mq-integration.md`, `docs/evidence/20260920-new-ecs-preflight.md`) | Production SaaS upload-session/complete/application receipt, production broker ACL/TLS, approved retention cleanup and current provider-third recording evidence |
|
||||
| D08 profile/recovery | SQLite quotas, leases, reservation finalization, file recovery/quarantine, gopsutil host/process sampling with media/AI dimensions explicit unknown, two mock Cell isolation, one hardened Debian ECS host smoke | Approved numeric budget/profile, backup/RPO/RTO and disk/clock/lease fault evidence; no two-Cell or production capacity evidence |
|
||||
| D09 independent contract package | Self-contained project-owned baseline, manifests, hashes, contract/proto checks, local release manifest | External source commit/release and reproducible clean isolated import/build sign-off |
|
||||
| D10 reuse/PoCs | Go module licenses (including gopsutil), `go mod verify`, clean `govulncheck`; isolated ARI, OpenAI, DashScope and Volcengine compile/protocol-mock records; fixed Asterisk 22.10.1 + temporary `ari/v5.3.1` runtime probes created Stasis channels, mixing bridges, PCMA ExternalMedia address/port/lifecycle, synthetic bridge forwarding, and a PJSIP/PJSUA2 mock leg with bidirectional PCMA and closed endpoint WAVs; owner-authorized ECS also recorded three non-connected provider INVITE outcomes | Lockable production versions, Asterisk/provider/OSS/broker compatibility, successful supplier/real media, recording retention/OSS/reconnect evidence, DashScope endpoint injection, Volcengine TTS speed/volume/pitch reachability, and O review/sign-off |
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
# 2026-09-20 W00–W15 验收状态摘要
|
||||
|
||||
> 本阶段范围以 [`20260920-scope-amendment.md`](20260920-scope-amendment.md) 为准:单节点、单 Cell、单租户;生产 SaaS/MQ 联调、双节点、第二 Cell、第二租户和生产切换延期第二阶段。契约结构通过不等于生产联调通过。
|
||||
|
||||
## 已有可复核证据
|
||||
|
||||
- **W00–W02**:项目范围、契约包、Proto/stubs、严格校验和状态/幂等合同已通过本地检查。
|
||||
- **W03–W10 本地/隔离部分**:`go test -race ./...`、`go vet ./...`、`go mod verify`、契约/Proto 检查通过;AI mock/provider smoke、PCMA/RTP/ARI、三轮 CallFlow、无效通话早停和美吧口腔配置已有证据。
|
||||
- **SIP 时间门禁**:新增 `internal/callwindow`,按 Asia/Shanghai `[09:00,20:00)` 覆盖 08:59:59、09:00:00、19:59:59、20:00:00 及 UTC 转换;`runCallOnce` 和 real/mixed Agent RPC 的 permit/execute 入口窗口外 fail-closed。全套 race、vet、build 和本地验收通过。
|
||||
- **W11 Alibaba OSS 部分**:Dispatcher 使用官方 Alibaba OSS Go SDK v2 签发15分钟 presigned PUT,Agent 直传并保留源文件;授权真实测试已通过 PUT/HEAD 大小与 SHA-256 metadata、SQLite durable grant/completion、`recording.ready` outbox、显式过期后重新申请及重复请求/完成幂等;重建 ECS 上还完成了 mTLS gRPC→OSS 内网 endpoint 的 real-call WAV 实际上传。见 `docs/evidence/20260920-local-oss-mq-integration.md`。
|
||||
- **W12 本地/OSS outbox 部分**:RabbitMQ/Dispatcher integration、outbox/replay、事件 Schema、业务日志以及 verified recording→SQLite `recording.ready` outbox 测试通过;Dispatcher 的 `ReportExecutionEvent`、`RequestUpload`、`CompleteUpload` 已统一注册在同一个 AgentControl gRPC listener,并覆盖 durable fact、digest 幂等/冲突和 Dispatcher-owned aggregate version;见 `docs/evidence/20260920-dispatcher-unified-grpc.md`。生产 broker 的 SaaS application receipt 按本阶段契约/fixture 状态机签收,真实 receipt 延期第二阶段。
|
||||
- **W13-a**:Debian 13/systemd package、非 root 目录/权限、capture-first 入口、SIP/RTP PCAP、PJSIP logger、结构化 SIP summary 和每日 trunk×手机号 3 次 fail-closed 门禁已安装并验证;新 ECS `i-2zeac4n2cpgkqgikkqg1` 已重新完成非生产 `--preflight-only`,最终制品 `491feb9a052fdd3ad50987d64fbe59fd8e02f9c42e3e74fbe794658baff6df71` 重启后 Agent/Dispatcher 仍 active。见 `docs/evidence/20260920-sip-attempt-guard.md`、`docs/evidence/20260920-new-ecs-preflight.md`。
|
||||
- **真实 provider-third 单节点**:原始号码 `15003164745` 完成约49秒三轮 AI、PCMA/8000 RTP、3段入站+4段出站录音和双方文本事实。见 `docs/evidence/20260920-real-provider-third-capture-first.json`。
|
||||
- **真实失败证据**:provider-primary 为 `100/183/486 Busy Here`,provider-second 为 `100/404`,均有完整 capture-first PCAP;不是无证据重试。见对应 provider evidence JSON。
|
||||
- **本阶段本地签收**:`docs/evidence/20260920-local-p1-acceptance.md` 已覆盖 W13/W14 适用的单节点/单 Cell/单租户构建、故障语义、契约、AI/媒体、OSS、MQ 隔离和时间门禁检查。
|
||||
|
||||
## 第二阶段或明确不适用事项
|
||||
|
||||
- **W04/G0 外部部分**:真实外部权威、生产预算/角色签收和正式依赖属于第二阶段;项目内版本化契约、Schema、正反例 fixture 和隔离 PoC 已按本阶段签收。
|
||||
- **W11/W12 真实联调**:真实阿里 OSS handoff、SaaS verified、生产 broker ACL/TLS 和生产 application receipt 延期第二阶段;本阶段按契约/fixture、confirm/outbox 和状态机签收。
|
||||
- **W13-b/W14 扩展部分**:第二 Cell/第二 Asterisk、双节点、完整三家真实供应商、生产 MQ/OSS、容量/N+1 和双 AI 生产联调不在本阶段;本阶段只签收本地/隔离单 Cell 集成。
|
||||
- **W15**:生产切换、唯一写入权交接、生产备份/回滚和未知执行回迁延期第二阶段;本阶段只签收本地恢复/回滚规则。当前会话不再次发起真实外呼。
|
||||
- **W16**:双租户公平、第二 Cell 汇总和真实 broker 背压/DLQ不在本轮开发或验收范围,不作为 P1 阻塞。
|
||||
|
||||
## 安全与额度状态
|
||||
|
||||
- SIP 外呼仅允许 Asia/Shanghai 每日 `09:00`(含)至 `20:00`(不含);窗口外 Dispatcher/Agent fail-closed,不等待、自动延迟、重试或换线。每条 SIP trunk × 每个原始手机号每天最多 3 次;失败线路可在另一条线路的独立额度内,经当前会话确认后测试。
|
||||
- provider-second/`15003164745` 已达到/超过当天额度,运行时门禁已锁定;不再拨打。
|
||||
- 任何下一次真实呼叫都必须在允许时段内重新确认精确 trunk、原始号码和 capture-first 方案;当前不执行新的真实外呼。
|
||||
@@ -1,25 +0,0 @@
|
||||
# 2026-09-20 OSS/MQ 联合验证
|
||||
|
||||
## Alibaba OSS 实际验证
|
||||
|
||||
- 运行方式:`AGENT_CALL_OSS_INTEGRATION=1 go test ./internal/oss ./internal/rpc -run 'TestAlibabaOSS(GrantPutHead|DispatcherUploadDurable)Integration' -count=1 -v`。
|
||||
- 凭据来源:本机 `aliyun-oss.env`,文件权限 `0600`;测试通过环境变量注入,未写入源码、日志或证据。
|
||||
- 数据面:Dispatcher 使用 Alibaba 官方 OSS Go SDK v2 `v1.6.0` 签发短期 presigned PUT;Agent 使用现有 `UploadClient` 直传,不持有 AK/SK。
|
||||
- 结果:`TestAlibabaOSSGrantPutHeadIntegration` 通过,实际完成 presigned PUT、对象 HEAD、大小和 `x-oss-meta-sha256` 校验。
|
||||
- 结果:`TestAlibabaOSSDispatcherUploadDurableIntegration` 通过,实际完成 `RequestUpload`、15 分钟 grant、直传、`CompleteUpload`、SQLite durable grant/completion、`recording.ready` outbox 持久化及重复请求/完成幂等。
|
||||
- 测试使用北京公网 OSS endpoint;生产示例仍配置北京内网 endpoint,需在目标 ECS/VPC 继续做网络路径验证。
|
||||
- 测试对象按集成测试前缀保留;当前 OSS 账号/接口只提供上传能力,本验证不执行删除。
|
||||
- Agent 不自动续期或重试;过期/失败时保留源文件。需要重试时由调用方显式重新 `RequestUpload` 获取新 token。
|
||||
- 另以本机既有 real-call WAV artifact(`20260918T143854Z-ai-01-three-turn-7d569c4dea`,978284 bytes,SHA-256 `f0530c65d462b830ceb654dbcba6c8797c1693e0d6ba94d2e09ec8606670e61a`)作为源文件,通过重建 ECS 上的 Dispatcher mTLS gRPC 和北京 OSS 内网 endpoint 完成实际上传;旧测试实例 `i-2zee6km2titr7ydty8a7` 的结果为 `upload-oss-v2-f0530c65d462b830ceb654db`,新当前实例 `i-2zeac4n2cpgkqgikkqg1` 的结果为 `upload-oss-new-f0530c65d462b830ceb654db`、`oss://rogee-test/agent-call/recordings/170b696e862b53cc69fa1130f59764e1ac47b273ee107204187763ae746acf48`;bytes/checksum 与源文件一致。该文件不是 2026-09-20 provider-third 远端录音,因此不冒充该次业务闭环。
|
||||
|
||||
## 本地 MQ 验证
|
||||
|
||||
- `bash scripts/mq-integration-local.sh`:通过。
|
||||
- RabbitMQ image:`rabbitmq:4.1-management-alpine`。
|
||||
- image ID:`sha256:fcc273cebb0880ec25845c9bfd97687122ac9cc391538f053cb5873f4181f35f`。
|
||||
- `go test -tags=integration ./internal/mq ./internal/dispatcher`:通过。
|
||||
- 临时 broker 使用随机端口,测试结束后由脚本清理。
|
||||
|
||||
## 边界
|
||||
|
||||
这证明了 Alibaba OSS grant、Agent 直传、HEAD 验证、SQLite durable upload state、`recording.ready` outbox 和幂等闭环。它仍不是 SaaS `verified` 应用收讫、生产 broker ACL/TLS、真实 provider-third 录音对象上传或 W14/W15 生产通过;Dispatcher 的 outbox confirm 也不等于 SaaS application receipt。
|
||||
@@ -1,38 +0,0 @@
|
||||
# 2026-09-20 单节点 P1 本地验收
|
||||
|
||||
## 适用范围
|
||||
|
||||
本证据按 `docs/evidence/20260920-scope-amendment.md` 执行:1 个 Dispatcher、1 个 Agent、1 个 Asterisk/Cell、1 个启用租户。双节点、第二 Cell、双租户、生产 SaaS/MQ 联调和生产切换不在本轮。
|
||||
|
||||
## 已执行检查
|
||||
|
||||
在 `go-sip/` 根目录执行并通过:
|
||||
|
||||
```text
|
||||
go test -race ./...
|
||||
go vet ./...
|
||||
go mod verify
|
||||
go build ./...
|
||||
bash scripts/check-contracts.sh
|
||||
bash scripts/check-proto.sh
|
||||
bash scripts/acceptance-local.sh
|
||||
```
|
||||
|
||||
`acceptance-local.sh` 还验证了 mock Agent/Dispatcher 启动、real Dispatcher 缺少 broker 凭据时拒绝启动和项目内契约包完整性。
|
||||
|
||||
## 本轮覆盖
|
||||
|
||||
- 单 Cell SQLite 任务、配额、inbox/outbox、幂等、控制 CAS、未知执行保留和恢复。
|
||||
- mTLS/SAN/fingerprint/Agent allowlist、会话代次、静态制品和错误节点绑定拒绝。
|
||||
- PCMA/PCM16、RTP/ARI/录音、共享 CallFlow、ASR-only 和完整 AI 的本地/协议隔离路径;`runCallOnce` 按快照模式校验,ASR-only 的 ProviderPipeline 只调用 ASR,CallFlow 不执行开场/回复 TTS 或发送下行音频。`provider_pipeline_test.go` 验证 ProviderPipeline 构造和环境加载不要求 Bailian LLM/TTS,并在无 Bailian 配置时完成 ASR-only turn。
|
||||
- OSS grant、Agent 直传、HEAD 大小/SHA-256 校验、显式重新申请、durable completion 和 `recording.ready` outbox。
|
||||
- Dispatcher 统一 AgentControl gRPC 的事实去重、digest 冲突、权威 aggregate version 和上传 RPC。
|
||||
- SIP 外呼安全时间门禁:Asia/Shanghai `[09:00,20:00)`;覆盖 08:59:59、09:00:00、19:59:59、20:00:00 及 UTC 转换,窗口外 real/mixed permit/execute 和 `--call-once` 均 fail-closed。
|
||||
- 单 Cell 故障语义:SQLite/outbox 重启恢复、RPC unknown 不重拨、TLS 轮换/未授权证书拒绝、配额/许可屏障、OSS 失败保留源文件和本地健康 unknown。
|
||||
|
||||
## 明确未执行
|
||||
|
||||
- 真实 ECS、真实 SIP 外呼、供应商消费、生产 SaaS/MQ ACL/TLS/application receipt。
|
||||
- 双节点、第二 Cell/第二 Asterisk、第二租户公平调度、多 Dispatcher、容量/N+1 和生产切换。
|
||||
|
||||
上述未执行项是第二阶段/后续专项,不得写成生产通过;本证据只签收当前单节点本地范围。
|
||||
@@ -1,51 +0,0 @@
|
||||
# MQ-only / Dispatcher OSS TOKEN 调整:实现前基线
|
||||
|
||||
- 记录时间:2026-09-21T06:05:43Z。
|
||||
- 分支:`feat/mq-only-dispatcher-oss`。
|
||||
- 源提交:`704652bd0dde2f78249fa53784d7afddf5f070f5`。
|
||||
- 该提交经用户明确批准,仅保存11份已确认设计文档,未推送远程;本次开始检查时工作区干净,已 fetch 并确认包含 `origin/main`。
|
||||
- 用户已明确本目标由当前 Agent 直接执行,不启动子 Agent;原子 Agent fast/provider 阻塞不适用于本次执行。
|
||||
|
||||
## 1. 实际检查结果
|
||||
|
||||
| 检查 | 结果 | 边界 |
|
||||
| --- | --- | --- |
|
||||
| `GOTOOLCHAIN=local go version` | `go1.27.1 linux/amd64` | 符合锁定版本 |
|
||||
| `go test -race -coverprofile=... ./...` | 通过 | 显式移除 `RABBITMQ_URL`、`AGENT_CALL_PROVIDER_SMOKE`、`AGENT_CALL_OSS_INTEGRATION`,没有调用真实 broker/OSS/AI |
|
||||
| 覆盖率 | 全部代码32.1%;排除生成文件的诊断值44.2%(4557/10318语句) | 尚未达到65%,两种口径均不算验收通过 |
|
||||
| `go vet ./...` | 通过 | 当前源提交 |
|
||||
| `go build ... ./cmd/sip-go-agent` | 通过 | 实际入口是 `cmd/sip-go-agent`;第一次误用不存在的 `cmd/agent-call` 失败,随后按实际入口纠正命令,没有改代码掩盖 |
|
||||
| 手写Go文件 `gofmt -l` | 无输出 | 不改生成代码 |
|
||||
| Buf / Proto工具 | Buf 1.61.0、两个Go生成插件可用 | 项目用Buf生成;独立protoc不在PATH,不等于现有Buf链阻塞。尚未执行本次Proto生成 |
|
||||
| Python契约工具 | jsonschema、yaml可导入 | 尚未发布新契约 |
|
||||
| 本地RabbitMQ测试条件 | Docker本地socket可用;本地已有 `rabbitmq:4.1-management-alpine` 镜像;5672无监听 | 尚未创建容器或宣称MQ集成通过 |
|
||||
| 部署/诊断 | systemctl可用,tcpdump不在PATH | 之后须按获批本地/隔离profile验证,不跳过诊断或伪造ECS事实;未授权任何真实外呼/云操作 |
|
||||
|
||||
## 2. 已核实的实现差异
|
||||
|
||||
| 路径 | 当前事实 | 调整边界 |
|
||||
| --- | --- | --- |
|
||||
| `internal/mq/amqp.go` | 命令使用旧租户级拓扑,没有获批的新D身份/专用Topic闭环 | 新身份/拓扑/消息先确认,再实现;不放宽旧Schema |
|
||||
| `internal/config/config.go`、`cmd/sip-go-agent/main.go` | 现有OSS配置和启动开关分散在进程配置/flags,存在旧业务HTTP接线 | 新D配置文件需严格读取;移除SaaS业务HTTP,保留内部Unary及必要非业务诊断 |
|
||||
| `internal/control/http.go` | 查询/控制/补传仍为旧HTTP处理 | 业务逻辑转为MQ;整体补传不能重投执行命令 |
|
||||
| `internal/rpc/dispatcher_upload.go` | R12已接D签发grant;R13仍包含D直接验证对象并完成资产的路径 | 保留签发能力;完成状态必须等待SaaS MQ verified,不把D本地验证当最终验证 |
|
||||
| `internal/oss/aliyun.go` | 已复用阿里云官方SDK提供15分钟默认预签名PUT;允许配置更长TTL;有本地HEAD校验 | 可复用签发与现有UploadGrant,不自写签名;新约束须锁定15分钟,不能宣称URL本身原生一次性 |
|
||||
| `internal/store/store.go`、迁移目录 | 已有SQLite业务表/事务、4份迁移文件 | 新持久身份、请求关联和结果状态须认真设计并测试,不破坏旧数据或执行未知占用 |
|
||||
|
||||
这些事实不代表完整新流程已接通。AI配置/授权的MQ关联、控制屏障、最终verified和重启恢复仍需在新合同下实现与逐项验证。
|
||||
|
||||
## 3. 基线产物位置与哈希
|
||||
|
||||
运行产物在 `/tmp/go-sip-mq-baseline.niNWHQ/`,可能被系统清理;这里仅保存脱敏检查事实和哈希,不把临时文件当永久可用制品。
|
||||
|
||||
| 文件 | SHA-256 |
|
||||
| --- | --- |
|
||||
| `test.log` | `69c6602993d04076031cd62c885db3b0bb0e81c5a9bd86d60a3b13d6ef1aeeac` |
|
||||
| `coverage.out` | `9f474ba35af2685ada2b9f52e84def76fc43452995a8a73f59b3f95e740455d3` |
|
||||
| `sip-go-agent` | `36ddab325d6a54b96d5ba7dba23a65d811005aba30d62dcaca2ebb65500275cf` |
|
||||
|
||||
## 4. 尚未完成
|
||||
|
||||
- Dispatcher身份生命周期、Topic/消息/错误/期限、配置文件及TOKEN形态的精确方案尚需用户确认。
|
||||
- 未修改业务实现,未执行新的MQ/OSS完整集成或故障矩阵。
|
||||
- 未接入真实SaaS、供应商、云资源或拨号;没有生产验收结论。
|
||||
Reference in New Issue
Block a user