COMMIT_MESSAGE.md 5.06 KB

本次修改总结

最终状态

1. 增量数据获取服务

新增文件

  • indexer/incremental_service.py: 增量索引服务,提供单个SPU数据获取
  • api/routes/indexer.py: 增量索引API路由
  • indexer/test_indexing.py: 索引功能测试脚本

功能

  • 提供 GET /indexer/spu/{spu_id}?tenant_id={tenant_id} 接口,返回单个SPU的ES文档数据
  • 服务启动时预加载分类映射(全局共享),提高性能
  • 支持按需加载租户配置和搜索配置

2. 公共文档转换器

新增文件

  • indexer/document_transformer.py: SPU文档转换器,提取全量和增量共用的转换逻辑

功能

  • 统一了全量索引(SPUTransformer)和增量索引(IncrementalIndexerService)的文档转换逻辑
  • 消除了约300行重复代码
  • 支持根据租户配置进行语言处理和翻译

3. 租户配置系统

配置位置

  • 租户配置合并到统一配置文件 config/config.yamltenant_config 部分
  • 删除了独立的 config/tenant_config.json 文件

配置结构

tenant_config:
  default:
    primary_language: "zh"
    translate_to_en: true
    translate_to_zh: false
  tenants:
    "162":
      primary_language: "zh"
      translate_to_en: false  # 翻译关闭
      translate_to_zh: false

功能

  • 每个租户可配置主语言和翻译选项
  • 租户162配置为翻译关闭(用于测试)
  • 未配置的租户使用默认配置

4. 翻译功能集成

翻译模块增强

  • query/translator.py: 支持提示词参数,作为DeepL API的context参数传递
  • 修复了重复的executor初始化代码
  • 统一使用logger替代print语句

翻译提示词配置

  • config/config.yamltranslation_prompts 部分配置
  • 支持中英文提示词:
    • product_title_zh/en: 商品标题翻译提示词
    • query_zh/en: 查询翻译提示词
    • default_zh/en: 默认翻译用词

翻译模式

  • 索引场景:同步翻译,等待结果返回,使用缓存避免重复翻译
  • 查询场景:异步翻译,立即返回缓存结果,后台翻译缺失项

DeepL Context参数

  • 提示词作为DeepL API的context参数传递(不参与翻译,仅提供上下文)
  • Context中的字符不计入DeepL计费

5. 代码重构

消除冗余

  • 提取公共转换逻辑到 SPUDocumentTransformer
  • SPUTransformerIncrementalIndexerService 都使用公共转换器
  • 移除了重复的 _transform_spu_to_doc_transform_sku_row 方法

架构优化

  • 全量和增量索引共用同一转换逻辑
  • 分类映射在服务启动时预加载(全局共享)
  • 租户配置按需加载(支持热更新)

6. 测试

测试文件位置(遵循模块化原则):

  • indexer/test_indexing.py: 索引功能测试(全量、增量、租户配置、文档转换器)
  • query/test_translation.py: 翻译功能测试(同步、异步、缓存、Context参数)

7. 文档更新

  • docs/索引数据接口文档.md: 更新了租户配置说明,从独立JSON文件改为统一配置文件
  • docs/翻译功能测试说明.md: 新增翻译功能测试说明文档

修改的文件

新增文件

  • indexer/incremental_service.py
  • indexer/document_transformer.py
  • indexer/test_indexing.py
  • api/routes/indexer.py
  • query/test_translation.py
  • config/tenant_config_loader.py (重构,从JSON改为YAML)
  • docs/翻译功能测试说明.md

修改文件

  • config/config.yaml: 添加租户配置和翻译提示词配置
  • config/config_loader.py: 支持租户配置加载
  • config/tenant_config_loader.py: 从统一配置文件加载租户配置
  • indexer/spu_transformer.py: 使用公共转换器,集成翻译服务
  • indexer/incremental_service.py: 使用公共转换器,集成翻译服务
  • query/translator.py: 支持提示词作为context参数,修复冗余代码
  • query/query_parser.py: 使用翻译提示词
  • api/app.py: 注册增量索引路由,初始化增量服务
  • docs/索引数据接口文档.md: 更新租户配置说明

删除文件

  • config/tenant_config.json: 合并到统一配置文件

测试验证

租户162测试(翻译关闭)

  • 全量索引:验证翻译功能关闭,title_en为None
  • 增量索引:验证翻译功能关闭,title_en为None
  • 文档转换器:验证根据租户配置正确处理翻译

其他租户测试(翻译开启)

  • 验证翻译功能正常工作
  • 验证提示词正确使用

架构设计

数据流

MySQL数据
    ↓
SPUTransformer / IncrementalIndexerService (数据加载层)
    ↓
SPUDocumentTransformer (公共转换层)
    ↓
ES文档 (输出)

配置层次

  1. 索引配置 (config/config.yaml): 搜索行为配置
  2. 租户配置 (config/config.yamltenant_config 部分): 数据转换配置

性能优化

  1. 公共数据预加载:分类映射在服务启动时一次性加载
  2. 配置按需加载:租户配置和搜索配置按需加载,支持热更新
  3. 翻译缓存:索引时使用缓存避免重复翻译