Manage daily reports by date and refresh monthly reports after deletion

This commit is contained in:
Wyndham ARR committed 2026-10-09 11:09:33 +08:00
1 parent 976a4fa7b2
commit 2a54838d59
41 files changed
+2757 -89

No files matched your search

+18 -5
View File
@@ -1,10 +1,10 @@
# ARR 自动取数交付与生产启用说明
更新日期:2026-10-08。状态:**代码收尾完成,本机已连接生产酒店57106;目标主机部署和完整报表业务验收仍需执行。**
更新日期:2026-10-09。状态:**本机已连接生产酒店57106,并完成022及日报版本管理升级;目标主机部署和完整报表业务验收仍需执行。**
本机10月7日任务已保存生成成功结果,38间房;该状态不代表已逐项核对实际日报文件及月报内容。
早期沙箱/模拟检查是历史验证,不替代生产业务验收。生产连接、修复和本机验证记录见[本次任务](../.project-docs/30-worklog/tasks/20261008-production-review-9e7b.md)。
当前处理器为4.4.0。目标数据库需按顺序具备019、020和021,Web与处理器必须一起发布。
当前处理器为4.4.0。目标数据库需按顺序具备019、020、021和022,Web、处理服务与月报worker必须一起发布。
用户已确认两条输入路径都排除已取消预订和PM房型;完整原始数据仍保留,不要求被排除记录补房号。
已有未处理任务接续必须备份并显式记录新旧规则身份,不能复用旧身份直接运行新规则;已发布结果不自动重新处理。
@@ -29,7 +29,7 @@
| 酒店与平台 | 当前本机已连接生产酒店57106。目标部署仍须核对平台实际路由和授权;本地hotel-id仅校验返回酒店,不能把沙箱接口切成生产接口。 |
| 应用身份 | 当前客户端固定平台`https://ohip.nianxx.cn`及应用`caller_zloxalzsQ9pYsztt`。如生产改用其他平台或新应用,需适配并验证固定身份配置;替换一份不同身份的密钥文件会被拒绝。 |
| 读取权限 | 目标应用须覆盖预订、档案、团队、房间历史及套餐8个操作;现有配置需求包含reservations.read、profiles.read、blocks.read、configuration.read。保留平台已授其他权限,不盲目覆盖权限集。 |
| 数据库 | 在已具备018的目标库上按顺序应用019、020、021。本机已升级至021;既有迁移及运行配置要求隔离库名`booking_test`。若目标使用其他库名,先适配和验证数据库边界,不能直接删除保护或假设已有兼容。 |
| 数据库 | 在已具备018的目标库上按顺序应用019、020、021、022。022支持日报删除及月报撤下;既有迁移及运行配置要求隔离库名`booking_test`。若目标使用其他库名,先适配和验证数据库边界,不能直接删除保护或假设已有兼容。 |
| 自动取数入口 | 标准启动器支持三个OHIP参数,现有基础Compose尚未传入,部署时须明确加入。仅按基础Compose启动会保留原处理入口而不启用自动取数。 |
| 凭据和持久数据 | 挂载正式凭据目录,并为任务/原始数据配置仓库外的持久目录。目录0700、凭据文件0600,属主为实际运行用户;容器须按容器UID准备属主。凭据只读挂载,任务目录可写,不能放临时目录或镜像内。 |
| 月报与报表存储 | 复用正确配置的数据库和OSS,独立月报worker须由进程管理器持续运行。网页可访问、Web健康检查成功不等于月报worker已启动。 |
@@ -52,9 +52,22 @@
月报另按部署说明运行`python -m monthly_reports.worker --output-root /app/outputs/monthly_reports`并配置持续监管。
`--enable-monthly-generation`是另一个手动生成入口,不替代自动月报worker。
数据库升级文件为`database/019_ohip_data_source.sql`、`database/020_daily_cancelled_exclusion.sql`、`database/021_daily_pm_exclusion.sql`,各有对应`.down.sql`。
数据库升级文件为`database/019_ohip_data_source.sql`、`database/020_daily_cancelled_exclusion.sql`、`database/021_daily_pm_exclusion.sql`、`database/022_daily_report_retirement.sql`,各有对应`.down.sql`。
先检查现有版本、备份和副本验证,再在正式启用窗口按顺序升级;已有相应来源/排除事实时回退会被保护机制拒绝。
## 日报版本管理升级(2026-10-09)
同一天只展示一个有效日报;新输入待核对或失败时保留原日报,成功入库后才覆盖。删除当前有效日报会原子移除当日有效指针、保留原始事实和审计、撤下受影响月报,并通过`arr.daily_scope_changed`事件重建该月剩余有效日期的月报。整月为空时撤下月报,不发布空工作簿。删除旧版本或待价格核对版本不会改变当前日报及月报;旧版本不会自动恢复。
启用前停止新任务并等现有处理停止,备份数据库、对象存储及私有任务目录;应用022后同时更新Web/处理服务/月报worker,再开放删除操作。旧worker不认识新事件,不能单独发布Web。处理服务启动时检查022的表、索引及审计保护;不满足时拒绝启用。旧本机实例的schema标记须在受控备份及实际升级后更新,不能只改标记绕过升级。
022给已有`arr_app`角色精确增加审计表SELECT/INSERT、对应sequence权限以及`finance.current_daily_versions`的DELETE,不授予原始数据、对象或Finance事实的删除权限。自定义应用角色须获得相同权限;自定义网页只读角色须另授予`SELECT ON ingestion.daily_run_retirements`(沿用已有schema USAGE),不能给它写入或DELETE权限。所有角色名按目标环境实际配置,不向PUBLIC授权。
迁移不自动删除、合并或重新处理已有报表。同日历史仍可追溯,界面按当前有效指针分组展示。已有删除审计或withdrawn月报时,022回滚会拒绝执行,须先评估恢复方案;恢复整个备份也必须连同匹配的旧代码和worker一起恢复。
本次功能仅使用独立合成数据验证删除和月报同步;本机升级保留实际报表及待办,不为验收删除用户日报或重新读取Oracle数据。
本机升级后逐表核对26张既有业务表、3个有效日报、4,896份原始捕获文件及待办均保持一致(月报新增的空withdrawn_at列不参与原列比较)。022删除审计为0;浏览器已确认9月16日按日期合并及9月13日概览一致。备份、验收及保留运行工作树的记录见[本次版本管理任务](../.project-docs/30-worklog/tasks/20261009-daily-lifecycle-7bc2.md)。
## 有真实数据后的首日验收
以下是目标部署后的验收步骤,本次推送不发起查询:
@@ -74,4 +87,4 @@
- 最新功能验证:取数进度118项后端、84项JavaScript及13项静态UI检查通过,实际本机9月15日显示85/85笔且人工核对仍保留。取消/PM、字段/价格核对、日报/月报和迁移的既有验证及边界见本次任务记录。
- 当前处理器`.zip`及`.skill`已随4.4.0更新,两包SHA-256均为`aac23951ca72cc6878b617cddaaa5dffd9dc6fe2dee1c9036db61c880118a134`;压缩包内工作簿与原版一致。
- 本机没有Docker命令,本次未构建或启动生产镜像;正式主机部署验证待执行。
- `.zip/.skill`是处理器包,完整Web交付还包含项目源码、数据库019至021及运行配置,不能只上传处理器包来启用自动下载。
- `.zip/.skill`是处理器包,完整Web交付还包含项目源码、数据库019至022及运行配置,不能只上传处理器包来启用自动下载。
+3 -3
View File
@@ -1,15 +1,15 @@
# ARR 2.0 单机 Compose 部署
2026-09-18新增按日期OHIP取数:本文基础Compose尚未启用自动取数,也未包含019的启用步骤。
2026-10-09:本文基础Compose尚未启用自动取数;当前Web/处理服务还要求数据库升级至022。
使用新增入口必须同时完成[OHIP交付与生产启用说明](OHIP_RELEASE_HANDOVER.md),核对正式平台身份、
018→019升级、三个启动参数、凭据/任务目录挂载和独立月报worker。
018→022升级、三个启动参数、凭据/任务目录挂载和独立月报worker。下文016–018步骤保留作为前置迁移说明。
本 Compose 模板部署两个 HTTP 服务:`web` 负责应用登录、页面、程序化 XML 处理、验证和入库,`caddy` 负责 HTTPS。没有 Agent 回调服务或 MCP 公网入口。自动月报由另一个无端口的 `monthly_reports.worker` 进程执行,不得放进 Web 请求进程。
## 前置条件
- DNS:`WEB_PUBLIC_HOST` 指向部署主机;
- PostgreSQL 15+:目标必须是隔离数据库 `booking_test`,发布窗口内按 016 → 017 → 018 应用;
- PostgreSQL 15+:目标必须是隔离数据库 `booking_test`,发布窗口内按顺序应用至022(016–018见下文,019–022见交付说明);
- OSS:区域匹配、服务端加密、未启用或暂停 versioning、禁止匿名写;bucket ACL 可为 private 或 public-read;
- ARR 数据库账号和 OSS RAM/STS 凭据由 Secret 管理器注入,不写入镜像或仓库。
- 月报和公司渠道明细均由 Python/openpyxl 生成;不需要 Node.js、npm 或私有运行时。