docs: add deployment validation plan and expand env config
All checks were successful
CVE Scan & Docker Build / security-scan (push) Successful in 52s
CVE Scan & Docker Build / build-and-push (push) Successful in 1m49s

Add comprehensive deployment and validation plan documenting a staged
bring-up approach that gates each layer on its predecessor and defers
PSTN testing until everything else is proven.

Update .env.example to reflect current configuration:
- Replace static API_TOKEN with Casdoor SSO + owner-minted PAT auth
- Add Rhema TTS settings with port-collision warning
- Add AI Receptionist settings for inbound calls
- Reconcile GATEWAY_SIP_PORT to 5060 and default SIP domain
This commit is contained in:
2026-07-28 21:46:16 -04:00
parent 4a3c14d4af
commit 394e3fc920
5 changed files with 372 additions and 10 deletions

View File

@@ -260,6 +260,11 @@ class TestMockSIPEngine:
status = await engine.get_trunk_status()
assert status["registered"] is False
# Starting the mock engine must NOT report a registered trunk: /health
# requires a registered trunk to be "healthy", so a mock that claimed
# registration would let a gateway that cannot place calls go green.
await engine.start()
status = await engine.get_trunk_status()
assert status["registered"] is True
assert status["registered"] is False
assert status["mock"] is True
assert status["reason"] == "No SIP trunk configured (mock mode)"

View File

@@ -13,7 +13,12 @@ from config import get_settings
@pytest.fixture
async def client():
async def client(monkeypatch):
# These endpoints derive their URLs from PUBLIC_BASE_URL when it is set,
# falling back to the request's Host header. Pin it empty so the assertions
# below exercise the header path and can't be overridden by a developer's
# real .env.
monkeypatch.setattr(get_settings(), "public_base_url", "")
transport = httpx.ASGITransport(app=main.app)
async with httpx.AsyncClient(transport=transport, base_url="http://test") as c:
yield c