按站点指定下载日期偏移(0=今天…30)+ 修复启动陈旧登录态

偏移量功能(前端/API 可配,服务端持久化、多用户共享):
- state_store:新增 site_config 表 + get_offset / set_offset(0..30 钳制) / get_all_offsets
- server:新增 GET/PUT /config(百世锁定当天,不可配置)
- 顺心/中通/韵达/安能(各 expected+actual):日期逻辑由 query_days 范围改为读 offset
  算单日 target=今天-offset,起止同日;百世仍走当日
- config.example.yaml:query_days 标记为已废弃

修复启动时显示上一会话陈旧登录态:
- state_store:新增 reset_login_states(登录态会话级,启动重置为 unknown;数据态会话无关、保留)
- runtime.launch_and_prepare:启动时对各站重置登录态,心跳就绪后重新探测写真实值

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Misaka
2026-07-17 21:27:52 +08:00
parent 66bd8af421
commit 26a94999dc
8 changed files with 151 additions and 106 deletions

View File

@@ -33,6 +33,10 @@ from runtime import (
run_heartbeat,
)
# 全部站点;百世固定下载当天,不可配置偏移
ALL_SITES = ["顺心", "百世", "中通", "韵达", "安能"]
CONFIGURABLE_SITES = {"顺心", "中通", "韵达", "安能"}
# 任务队列:元素 (task_id, task_spec)。主线程投递worker 消费。
task_queue: "queue.Queue" = queue.Queue()
# worker 运行状态主线程只读worker 写)
@@ -134,6 +138,27 @@ def get_status():
}
class OffsetRequest(BaseModel):
date_offset: int
@app.get("/config")
def get_config():
"""各站下载日期偏移0=今天1=昨天…);百世恒 0。"""
offsets = state_store.get_all_offsets()
return {site: offsets.get(site, 0) for site in ALL_SITES}
@app.put("/config/{site}")
def set_config(site: str, req: OffsetRequest):
if site == "百世":
raise HTTPException(status_code=400, detail="百世固定下载当天,不可配置偏移")
if site not in CONFIGURABLE_SITES:
raise HTTPException(status_code=400, detail=f"未知站点: {site}")
stored = state_store.set_offset(site, req.date_offset)
return {"site": site, "date_offset": stored}
@app.get("/data/{filename}")
def download_data(filename: str):
"""下载 downloads/ 下的数据文件(防路径穿越)。"""