# 本次修改总结 ## 最终状态 ### 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` 文件 **配置结构**: ```yaml 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.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.yaml` 的 `tenant_config` 部分): 数据转换配置 ### 性能优化 1. 公共数据预加载:分类映射在服务启动时一次性加载 2. 配置按需加载:租户配置和搜索配置按需加载,支持热更新 3. 翻译缓存:索引时使用缓存避免重复翻译