feat: 设置页调 batch_size + 删除任务 + /docs 去认证 + 离线模式
设置页(/settings):
- 新增 Setting DB 模型(键值存储,持久化运行时覆盖)
- config.py 加 _apply_overrides:get_settings() 合并 DB 覆盖值
(_applying_overrides 标志防递归:DB 初始化回调 get_settings 时不重入)
- save_setting() 写 DB + 清 lru_cache,后续任务读到新值
- settings_router.py: GET/PUT /api/settings
- settings_html.py: 设置页表单(batch_size/beam_size/sort_by_length)
+ 设备只读信息 + 保存后 reload 确认
- 验证:改 asr_batch_size=16 beam_size=1 -> 任务 ASR 日志确认生效
- 验证:重启容器后设置从 DB 恢复(持久化)
删除任务:
- task_router.py: DELETE /api/tasks/{id},仅 done/failed 可删
删字幕/音频/视频产物 + UploadSession + Task DB 记录
- home_html.py + history_html.py: done/failed 任务显示删除按钮
+ confirm 确认 + 调用 DELETE API + 刷新列表
- 验证:删除 task 15 成功,删除进行中 task 返回 409
/docs 去认证:
- 移除 require_docs_auth 依赖,/docs /redoc /openapi.json 直接公开
离线模式:
- Dockerfile dev/final 加 HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1
(模型已缓存在 ./models volume,无需联网验证)
- 验证:离线模式完整跑通 ASR+翻译(task 15 done)
This commit is contained in:
36
app/models/setting.py
Normal file
36
app/models/setting.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""运行时设置覆盖(键值存储)。
|
||||
|
||||
config.yaml 是只读挂载(镜像内不含配置),改完需重启容器才生效。
|
||||
本表持久化用户在「设置页」修改的参数,进程重启后自动加载,
|
||||
无需改 config.yaml 或重建镜像。
|
||||
|
||||
当前支持的键见 _ALLOWED_KEYS(settings_router 维护),值为 JSON 字符串。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from sqlalchemy import String, DateTime, Text
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from ..database import Base
|
||||
|
||||
|
||||
def _now() -> datetime:
|
||||
return datetime.now(timezone.utc)
|
||||
|
||||
|
||||
class Setting(Base):
|
||||
"""单个配置项的覆盖值(key = 'asr.batch_size' 之类的点分路径)。"""
|
||||
|
||||
__tablename__ = "setting"
|
||||
|
||||
key: Mapped[str] = mapped_column(String(128), primary_key=True)
|
||||
value: Mapped[str] = mapped_column(Text) # JSON 编码的值
|
||||
updated_at: Mapped[datetime] = mapped_column(
|
||||
DateTime, default=_now, onupdate=_now,
|
||||
)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"Setting(key={self.key!r}, value={self.value!r})"
|
||||
Reference in New Issue
Block a user