# Wyndham ARR ARR 是一套受控的 Opera 日报处理与经营数据应用。当前可部署链路为: ```text 业务页面上传 XML -> ARR 写入私有 OSS 并登记任务 -> ARR 调用 SuperAgent Open API -> SuperAgent 读取 OSS XML 并执行确定性日报 Skill -> SuperAgent 调用 ARR MCP 的 arr_submit_processing_result -> ARR 独立复验源 XML 后事务落库 -> 日报历史、月度投影和渠道看板从数据库读取 ``` ## 公网部署 仓库提供 Docker 镜像与 Docker Compose + Caddy 部署入口。Dockerfile 默认 Web CMD 和 Compose Web command 都显式使用 `--enable-processing` 打开 XML 上传处理;Compose 另使用 `--secure-cookies`、HTTPS、Web Basic Auth 和 MCP Bearer 保护公网服务。 完整步骤见 [`deploy/README.md`](deploy/README.md)。部署后必须确认: - `GET /api/health` 的 `database_ready=true`; - `GET /api/health` 的 `processing_ready=true`; - MCP 未认证请求返回 `401`; - 认证后的 MCP 工具发现只返回 `arr_submit_processing_result`。 应用源码默认仍为 fail-closed;直接运行 `python -m arr_web.run` 不会自动开启上传处理。 运维若覆盖镜像 CMD,必须在 Web 命令中保留 `--enable-processing`。 ## 主要入口 - `arr_web`:上传、任务历史、月度数据与渠道看板 Web/API; - `arr_mcp`:SuperAgent 结构化处理结果的单工具 MCP 入库网关; - `arr-opera-daily-ingest`:Opera XML 的确定性日报处理 Skill; - `database`:PostgreSQL 15+ schema、增量迁移和 MCP 契约; - `tests`:单元、契约和无隐私合成链路测试。 ## 当前能力边界 - XML 上传、私有 OSS 保存、SuperAgent 任务发起和 MCP 直接落库代码已接线; - 正式公网环境仍需部署者注入数据库、OSS、SuperAgent 和 MCP Secret,并完成一次无隐私 XML 竖切验收; - “日报落库后自动触发月报”与月报 `TOTAL PRICE` 指定公式仍未实现,本部署配置不会开启月报/公司报表写入端点,也不会把远端 Agent `success` 误报为数据库已提交。 ## 本地测试 ```bash python3 -m unittest discover -s tests -v ``` 项目不会从仓库内自动加载 `.env`。真实凭据、业务 XML/XLSX、数据库文件、运行输出和虚拟环境均不得提交。