按站点指定下载日期偏移(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:
25
server.py
25
server.py
@@ -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/ 下的数据文件(防路径穿越)。"""
|
||||
|
||||
Reference in New Issue
Block a user