Blame view

suggestion/RUNBOOK.md 2.87 KB
316c97c4   tangwang   feat: 完整落地多租户 sug...
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
  # Suggestion 运行手册(Runbook)
  
  本文档面向研发/测试/运维,提供 suggestion 功能的标准操作流程。
  
  ## 1. 适用范围
  
  - Suggestion 索引构建:`search_suggestions_tenant_{tenant_id}`
  - Suggestion 查询接口:`GET /search/suggestions`
  - 前端自动补全(`frontend/index.html`)联调
  
  ## 2. 依赖前置
  
  确保以下服务和配置可用:
  
  - Elasticsearch(开启鉴权时需提供账号密码)
  - MySQL(表 `shoplazza_search_log` 可访问)
  - API 服务(端口默认 6002)
  
  建议环境变量:
  
  ```bash
  ES_HOST=http://localhost:9200
  ES_USERNAME=...
  ES_PASSWORD=...
  DB_HOST=...
  DB_PORT=3306
  DB_DATABASE=...
  DB_USERNAME=...
  DB_PASSWORD=...
  ```
  
  ## 3. 全量构建流程
  
  ### 3.1 构建指定租户 suggestion 索引
  
  ```bash
  ./scripts/build_suggestions.sh 171 --days 365 --recreate
  ```
  
  说明:
  
  - `--days`:日志回溯窗口
  - `--recreate`:删除旧索引并重建
  
  ### 3.2 预期输出
  
  示例:
  
  ```json
  {
    "tenant_id": "171",
    "index_name": "search_suggestions_tenant_171",
    "total_candidates": 336,
    "indexed_docs": 336,
    "bulk_result": {
      "success": 336,
      "failed": 0,
      "errors": []
    }
  }
  ```
  
  判定标准:
  
  - `indexed_docs > 0`
  - `bulk_result.failed = 0`
  
  ## 4. ES 验证步骤
  
  > 若 ES 开启鉴权,请使用 `-u "$ES_USERNAME:$ES_PASSWORD"`。
  
  ```bash
  curl -u "$ES_USERNAME:$ES_PASSWORD" \
    "$ES_HOST/search_suggestions_tenant_171/_count?pretty"
  
  curl -u "$ES_USERNAME:$ES_PASSWORD" \
    "$ES_HOST/search_suggestions_tenant_171/_mapping?pretty"
  
  curl -u "$ES_USERNAME:$ES_PASSWORD" \
    "$ES_HOST/search_suggestions_tenant_171/_search?pretty" -d '{
      "size": 10,
      "query": {"match_all": {}},
      "_source": ["lang","text","sources","query_count_30d","rank_score"]
    }'
  ```
  
  重点检查:
  
  - 字段是否齐全(`lang/text/sat/completion/rank_score`
  - 文档是否覆盖预期语种(如 `zh/en`
  
  ## 5. API 回归步骤
  
  ### 5.1 启动后端
  
  ```bash
  bash scripts/start_backend.sh
  ```
  
  ### 5.2 调用 suggestion 接口
  
  ```bash
  curl "http://localhost:6002/search/suggestions?q=shirt&size=5&language=en&with_results=false" \
    -H "X-Tenant-ID: 171"
  
  curl "http://localhost:6002/search/suggestions?q=2025&size=5&language=zh&with_results=false" \
    -H "X-Tenant-ID: 171"
  ```
  
  通过标准:
  
  - 接口返回 `200`
  - `resolved_language` 合理
  - `suggestions` 非空(针对已知存在的 query)
  
  ## 6. 前端联调步骤
  
  1. 打开 `http://localhost:6002/`
  2. 选择租户(例如 `171`
  3. 输入已知前缀词(如 `shirt` / `Ekouaer` / `2025`
  4. 观察下拉 suggestion 是否出现
  
  注意:
  
  - 前端已同时透传:
    - Header:`X-Tenant-ID`
    - Query:`tenant_id`
  
  ## 7. 发布检查清单
  
  - [ ] 全量构建输出 `failed=0`
  - [ ] ES `_count` 与 `indexed_docs` 一致
  - [ ] 关键 query(中/英)接口有返回
  - [ ] 前端下拉正常
  - [ ] 文档已更新(`README.md` / 本 Runbook / API 指南)