mirror of
https://github.com/jihe520/MathModelAgent.git
synced 2026-09-19 08:09:48 +08:00
ac57ad0c18
LLM 层重构: - 将 LLM 调用层重构为 Provider 模式,支持多 API 类型 - 新增 Anthropic、OpenAI Chat、OpenAI Responses 三种 Provider - 新增 LLM 类型定义和工厂类 WebSocket 重连: - 添加指数退避自动重连机制(初始 1s,最大 30s,最多 10 次) - 区分手动关闭与意外断开,仅意外断开触发重连 - 在任务页面顶部添加连接状态指示灯(绿/黄/红) 图表字体跨平台兼容: - 在 backend/fonts/ 存放 SimHei 字体文件 - create_work_dir() 自动复制字体到任务工作目录 - 两个解释器从工作目录动态加载字体 - E2B 移除 apt-get install 依赖,改用上传字体文件 - 统一三处字体优先级配置 其他: - 重构注释规范、修复类型错误、添加 lint hook - 更新 CLAUDE.md 项目文档
29 lines
1004 B
Docker
29 lines
1004 B
Docker
# 使用官方推荐的 Python 基础镜像
|
||
FROM python:3.12-slim AS builder
|
||
|
||
# 安装中文字体(确保 matplotlib 图表中文正常显示)
|
||
RUN apt-get update && apt-get install -y --no-install-recommends fonts-noto-cjk && rm -rf /var/lib/apt/lists/*
|
||
|
||
# 安装 uv(推荐直接用官方 distroless 镜像复制二进制文件,速度快且干净)
|
||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
||
|
||
WORKDIR /app
|
||
|
||
# 先复制依赖文件,利用 Docker 层缓存
|
||
COPY pyproject.toml uv.lock ./
|
||
|
||
# 安装依赖(不安装项目本身,加快后续构建)
|
||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||
uv sync --locked --no-install-project
|
||
|
||
# 再复制项目代码
|
||
COPY . .
|
||
|
||
# 安装项目本身
|
||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||
uv sync --locked
|
||
|
||
EXPOSE 8000
|
||
|
||
# 直接使用 uvicorn,因为依赖已安装到系统 Python
|
||
CMD ["uv", "run", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--ws-ping-interval", "60", "--ws-ping-timeout", "120"] |