docs: add data generation, import, and extension guide to README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
96
README.md
96
README.md
@@ -97,4 +97,100 @@ interface Holidays {
|
||||
|
||||
参见 [Git 工具 - 子模块](https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97)
|
||||
|
||||
## 数据生成
|
||||
|
||||
安装依赖:
|
||||
|
||||
```sh
|
||||
pip install -r dev-requirements.txt
|
||||
```
|
||||
|
||||
更新当年及次年数据(所有地区):
|
||||
|
||||
```sh
|
||||
python scripts/update.py
|
||||
```
|
||||
|
||||
只更新指定地区:
|
||||
|
||||
```sh
|
||||
python scripts/update.py --region cn # 仅中国大陆
|
||||
python scripts/update.py --region hk # 仅香港
|
||||
```
|
||||
|
||||
更新所有历史年份(仅中国大陆,香港数据源仅覆盖 2024 年起):
|
||||
|
||||
```sh
|
||||
python scripts/update.py --all --region cn
|
||||
```
|
||||
|
||||
CI 每日自动执行 `python scripts/update.py --release`,数据有变化时自动提交并发布新版本。
|
||||
|
||||
## 导入到业务系统(teramesh-backend)
|
||||
|
||||
数据通过 Django management command 导入工作日历:
|
||||
|
||||
```sh
|
||||
# 进入应用容器
|
||||
kubectl exec -it pod/teramesh-app-0 -- /bin/sh
|
||||
|
||||
# 导入所有地区(中国大陆 + 香港)
|
||||
python manage.py populate_working_calendar
|
||||
|
||||
# 只导入指定地区
|
||||
python manage.py populate_working_calendar --region CN
|
||||
python manage.py populate_working_calendar --region HK
|
||||
```
|
||||
|
||||
命令会导入当年及次年的假期数据。数据按 `country` 级别写入,部署在香港(`country=HK`)的站点自动使用香港假期,内地站点使用内地假期,无需额外配置。
|
||||
|
||||
## 扩展支持新地区
|
||||
|
||||
如需接入其他地区(如美国、日本等),按以下步骤操作:
|
||||
|
||||
**1. 新增数据抓取模块**
|
||||
|
||||
在 `scripts/` 下新建 `fetch_{地区代码}.py`,实现 `fetch_{地区代码}_holiday(year: int) -> dict`,返回格式与现有地区一致:
|
||||
|
||||
```python
|
||||
{
|
||||
"year": 2025,
|
||||
"papers": ["数据来源URL"],
|
||||
"days": [
|
||||
{"name": "假期名称", "date": "2025-01-01", "isOffDay": True}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
注意:若该地区无调休补班制度,`isOffDay` 始终为 `True`。
|
||||
|
||||
**2. 在 `scripts/update.py` 的 `REGIONS` 中注册**
|
||||
|
||||
```python
|
||||
REGIONS = {
|
||||
"cn": { ... },
|
||||
"hk": { ... },
|
||||
"us": { # 新增
|
||||
"fetch": fetch_us_holiday,
|
||||
"start_year": 2024,
|
||||
"subdir": "us",
|
||||
"main_ics_name": "holiday-us.ics",
|
||||
"cal_name": "美国联邦假期",
|
||||
"cal_desc": "美国联邦公共假期数据。",
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
**3. 在 `teramesh-backend` 的 `HOLIDAY_SOURCES` 中注册**
|
||||
|
||||
```python
|
||||
HOLIDAY_SOURCES = {
|
||||
"CN": f"{GITEA_BASE}/{{year}}.json",
|
||||
"HK": f"{GITEA_BASE}/hk/{{year}}.json",
|
||||
"US": f"{GITEA_BASE}/us/{{year}}.json", # 新增
|
||||
}
|
||||
```
|
||||
|
||||
之后运行 `python manage.py populate_working_calendar --region US` 即可导入,其余地区不受影响。
|
||||
|
||||
[发布页面]: https://github.com/NateScarlet/holiday-cn/releases
|
||||
|
||||
Reference in New Issue
Block a user