Skip to content

feat: 术语表、翻译模型、翻译配置持久化存储 #38

Description

@moyu12-ae

问题描述

当前的翻译模型配置(api_key, base_url, model_id)、术语表(glossary dictionary)和翻译参数设置(temperature, thinking mode, chunk_size 等)全部仅存在于内存或单次请求参数中。服务重启后,所有配置都会丢失,用户必须重新配置。

影响范围

1. 翻译模型配置无法保存

api_keybase_urlmodel_idprovider 等参数每次都要重新填写。特别是 DeepSeek 的 API 密钥创建后只能查看一次,服务重启后密钥丢失会导致极大的不便。

涉及代码位置:

  • server/core.py:226-228 — TranslationService 所有任务状态用内存字典存储
  • mcp/server.py:144-152 — MCP 的 client_config 有 configure_client 接口但仅存于内存
  • app.py:912-964 — Web UI 的配置通过 Form 表单每次提交,无保存机制
  • sdk.py:154-187 — SDK Client 配置全在构造函数参数,用完即丢

2. 术语表(Glossary Dictionary)无法持久化

用户精心维护的术语翻译映射(如 {"Jobs": "乔布斯", "Shanghai": "上海"})无法保存,每次翻译都需要重新上传或粘贴。

涉及代码位置:

  • core/schemas.py:169-171 — glossary_dict 是请求级别的 Optional[Dict] 参数
  • agents/glossary_agent.py — 术语表生成后只作为任务结果返回,不持久化

3. 翻译参数偏好无法保留

temperaturethinkingchunk_sizeconcurrentcustom_promptto_lang 等偏好参数无法持久化,每次恢复为硬编码默认值。

涉及代码位置:

  • translator/__init__.py — 只有硬编码的 default_params 字典

建议方案

1. 引入配置文件机制

使用 YAML/TOML 配置文件(如 ~/.docutranslate/config.yaml)持久化保存:

  • 多个翻译模型配置预设(可命名、切换)
  • 翻译参数默认值(temperature、thinking、chunk_size 等)
  • 目标语言偏好
  • 加密存储敏感信息(API 密钥)

2. 术语表持久化管理

  • 支持保存/加载多个命名术语表(如 tech_terms.csvlegal_terms.json
  • Web UI 提供术语表管理界面(CRUD)
  • API 增加术语表管理端点

3. 配置管理 API

新增 REST API 端点:

  • GET /api/config — 获取当前配置
  • PUT /api/config — 更新保存配置
  • GET /api/glossaries — 列出所有术语表
  • POST /api/glossaries — 创建/更新术语表
  • DELETE /api/glossaries/{name} — 删除术语表

4. MCP 服务端优化

mcp/server.py 中现有的 client_configconfigure_client 工具应该与持久化配置文件联动,配置一次即可跨会话生效。

环境信息

  • 分支:feature/ui-redesign
  • 当前唯一的外部配置方式是 MCP 模式下的 .env 环境变量,Web UI 完全无持久化

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions