feat: 外置数据库初始化与分区管理功能

- 删除主服务中的数据库初始化与分区管理逻辑,降低复杂度。
- 新增 SQL 脚本用于数据库初始化和分区管理,集中在 SQL_Script 目录。
- 移除环境变量 ENABLE_DATABASE_INITIALIZATION,简化配置。
- 更新 package.json,新增数据库初始化和分区管理的 npm 脚本。
- 删除不再使用的初始化和分区管理相关文件。
- 提供统一的命令行接口,支持外部调用数据库初始化和分区创建。
This commit is contained in:
2026-03-04 14:54:27 +08:00
parent 677db35cdf
commit f61a63d8c1
18 changed files with 483 additions and 397 deletions

58
SQL_Script/README.md Normal file
View File

@@ -0,0 +1,58 @@
# SQL_Script
用于**独立于业务服务**的数据库初始化与分区管理。
> 目标:主服务 `bls-rcu-action-backend` 只负责消费 Kafka 与写库,不再承担任何建库/建表/建分区职责。
## 文件说明
- `init_rcu_action.sql`
- 初始化 `rcu_action.rcu_action_events` 主表与索引
- `init_room_status.sql`
- 初始化 `room_status.room_status_moment` 主表与索引
- `partition_rcu_action.sql`
- `rcu_action` 按天 RANGE 分区 SQL 模板
- `partition_room_status.sql`
- `room_status``hotel_id` LIST 分区 SQL 模板
- `db_manager.js`
- Node 调用入口CLI + 可 import
## 环境变量
与主服务统一:
- `DB_HOST` / `POSTGRES_HOST`
- `DB_PORT` / `POSTGRES_PORT`
- `DB_USER` / `POSTGRES_USER`
- `DB_PASSWORD` / `POSTGRES_PASSWORD`
- `DB_DATABASE` / `POSTGRES_DATABASE`
- `DB_SSL=true|false`
- `DB_ADMIN_DATABASE`(可选,默认 `postgres`
## 命令行调用
`bls-rcu-action-backend` 目录执行:
- `npm run db:init:all`
- 创建数据库(若不存在)+ 初始化两套主表
- `npm run db:init:rcu-action`
- `npm run db:init:room-status`
- `npm run db:partition:rcu-action`
- 默认预建未来 30 天分区
- `npm run db:partition:room-status -- 1001`
- 为 hotel_id=1001 建分区
## 其他程序直接 import
```js
import {
initAll,
ensureDatabase,
ensureRcuPartitions,
ensureRoomStatusPartition
} from '../SQL_Script/db_manager.js';
await initAll();
await ensureRcuPartitions(45);
await ensureRoomStatusPartition(1001);
```