deer-flow/docs/agent-service-topology.md
Eilen Shin 81de0761ed
feat: improve file attachments and add Office artifact previews (#8009)
* feat(frontend): improve file attachment recovery and artifact presentation

* feat(extensions): add Office artifact previews with search and navigation

* fix: preserve public viewers and HTTP Office previews

* fix: address file preview and upload review findings

* fix: use typed upload errors and linear bookmark allocation

* fix(office-preview): isolate parsing and bound preview resources

* fix(ci): install Office preview fixture dependencies for E2E

* fix(ci): provision matching Playwright browsers before E2E tests

* fix(ci): isolate Python libraries and include Office documentation

* test(frontend): wait for download status to finish rendering
2026-11-12 20:30:17 +08:00

1.1 KiB

Service topology details

Keep the dedicated /api/threads/{thread_id}/browser/stream WebSocket regex before the generic threads regex in Docker, local and Helm nginx configs. Upgrade headers and the 600s read timeout are pinned by backend/tests/test_nginx_browser_websocket.py. Helm uses nginx's default connect/send timeouts for the in-cluster Gateway.

Both Compose files publish nginx at "${BIND_HOST:-127.0.0.1}:${PORT:-2026}:2026" (README's loopback default); bare "${PORT}:2026" binds 0.0.0.0. Root PORT controls Docker ingress only; local Next.js stays on 3000 so .env cannot redirect make dev's port wait. Nginx's IPv4+IPv6 default_server and Gateway's 0.0.0.0:8001 bind are container-internal; only published nginx is external. Require explicit bind addresses for new published ports; backend/tests/test_compose_default_bind_host.py pins every service in both files.

Provisioner PVC mode declares USERDATA_PVC_NAME once as user-data; extra and Lark broker credential mounts reuse it with their existing subPaths and read-only flags. Keep credential mounts broker-only and keep distinct volumes in hostPath mode.