定时下载:
- state_store:site_config 加 schedule_enabled/schedule_time(旧库迁移)+ set_schedule/get_all_config
- server:APScheduler BackgroundScheduler,启动按配置注册各站 cron job、改配置重排;job 投 undelivered 任务到队列(错过跳过);/config 扩展 schedule
- runtime:("__compare__","compare") 改纯离线 expected_undelivered.main()(不下载)
- requirements:加 apscheduler
偏移拆分 + 报告下载:
- state_store:date_offset 拆 expected_offset/actual_offset(迁移)+ get_offset(site,kind)/set_offset(site,kind,n)
- 4 站 actual impl 改读 actual 偏移(expected 走默认 kind)
- server:/config 用 expected_offset/actual_offset;新增 GET /report(服务 output/应到未到数据.xlsx)
- paths:加 OUTPUT_DIR
Co-Authored-By: Claude <noreply@anthropic.com>
20 lines
952 B
Python
20 lines
952 B
Python
# paths.py
|
||
# 统一的路径锚点:所有路径都以本项目所在目录为基准,避免依赖运行时的工作目录(cwd)。
|
||
# 这样无论从哪个目录启动脚本(IDE / 命令行 / 计划任务 / 双击),
|
||
# 下载目录与配置文件都能稳定定位,不会出现“文件落到别处”或“读不到密码”的隐蔽故障。
|
||
|
||
import os
|
||
|
||
# 项目根目录(以本文件所在位置为基准,与从哪个目录启动脚本无关)
|
||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||
|
||
# 统一的下载 / 输出目录
|
||
DOWNLOAD_DIR = os.path.join(BASE_DIR, "downloads")
|
||
OUTPUT_DIR = os.path.join(BASE_DIR, "output")
|
||
|
||
# 统一的配置文件路径(注意:config.yaml 需与本项目脚本放在同一目录下)
|
||
CONFIG_PATH = os.path.join(BASE_DIR, "config.yaml")
|
||
|
||
# 状态存储(SQLite,阶段0:心跳 / 登录态 / 数据态持久化,重启不丢)
|
||
STATE_DB_PATH = os.path.join(BASE_DIR, "state", "state.db")
|