Blame view

COMMIT_MESSAGE.md 5.06 KB
0064e946   tangwang   feat: 增量索引服务、租户配置...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
  # 本次修改总结
  
  ## 最终状态
  
  ### 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. 翻译缓存:索引时使用缓存避免重复翻译