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.yaml的tenant_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.yaml的translation_prompts部分配置 - 支持中英文提示词:
product_title_zh/en: 商品标题翻译提示词query_zh/en: 查询翻译提示词default_zh/en: 默认翻译用词
翻译模式:
- 索引场景:同步翻译,等待结果返回,使用缓存避免重复翻译
- 查询场景:异步翻译,立即返回缓存结果,后台翻译缺失项
DeepL Context参数:
- 提示词作为DeepL API的
context参数传递(不参与翻译,仅提供上下文) - Context中的字符不计入DeepL计费
5. 代码重构
消除冗余:
- 提取公共转换逻辑到
SPUDocumentTransformer SPUTransformer和IncrementalIndexerService都使用公共转换器- 移除了重复的
_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.pyindexer/document_transformer.pyindexer/test_indexing.pyapi/routes/indexer.pyquery/test_translation.pyconfig/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文档 (输出)
配置层次
- 索引配置 (
config/config.yaml): 搜索行为配置 - 租户配置 (
config/config.yaml的tenant_config部分): 数据转换配置
性能优化
- 公共数据预加载:分类映射在服务启动时一次性加载
- 配置按需加载:租户配置和搜索配置按需加载,支持热更新
- 翻译缓存:索引时使用缓存避免重复翻译