Commit 33d4579f 33d4579f45f072ee5a45fc36239cb989e233ca4a by 沈秋雨

更新数据导入脚本、前端仪表盘和测试指南

- import_hk_songs.py: 优化数据导入逻辑(+157行)
- serve_l2_dashboard.py: 增强仪表盘服务功能(+231行)
- l2_review_dashboard.html: 前端页面微调
- 测试流程指南.md: 补充测试文档
1 parent cc6acccb
...@@ -947,6 +947,7 @@ ...@@ -947,6 +947,7 @@
947 const params = new URLSearchParams({ 947 const params = new URLSearchParams({
948 path: dataPath(), 948 path: dataPath(),
949 top_k: state.topK, 949 top_k: state.topK,
950 mode: state.mode,
950 q: els.searchInput.value.trim(), 951 q: els.searchInput.value.trim(),
951 page: String(state.page), 952 page: String(state.page),
952 page_size: String(state.pageSize) 953 page_size: String(state.pageSize)
......
...@@ -2,6 +2,108 @@ ...@@ -2,6 +2,108 @@
2 2
3 本文档说明如何运行 L2 歌词召回测试、查看测试产物,并启动前端页面做人工复核。 3 本文档说明如何运行 L2 歌词召回测试、查看测试产物,并启动前端页面做人工复核。
4 4
5 ## 0. 当前导入流程 2000 条 smoke 测试
6
7 先确认 `.env` 中有:
8
9 ```text
10 TARGET_TABLE_NAME_TMP=hk_songs_import_staging
11 ```
12
13 第一次跑前,在目标库执行暂存表建表 SQL:
14
15 ```bash
16 create_hk_songs_import_staging.sql
17 ```
18
19 目标库已清空时,先跑第一阶段导入。这个阶段会边去重边导入:
20
21 - 判定为 `new` 的记录会按批次写入目标库。
22 - 判定为 `merge` 的记录不会插入新行,会写入暂存表和审核/记录清单。
23 - 判定为 `review` 的记录不会插入目标库,会进入暂存表等待业务人工审核。
24 - 所有 `new / merge / review` 结果都会写入 `TARGET_TABLE_NAME_TMP`
25 - 输出 `output/reports/review_decisions_*.csv`,供复核页面展示 `new / merge / review` 全量结果。
26
27 ### 0.1 第一阶段:跑 2000 条导入 smoke
28
29 ```bash
30 uv run python import_hk_songs.py \
31 --limit 2000 \
32 --offset 0 \
33 --batch-size 500 \
34 --workers 8 \
35 --load-existing-lyrics \
36 --l2-recall topk \
37 --l2-recall-top-k 20
38 ```
39
40 如果想先不上传 OSS、只验证数据库写入和去重流程,可以加:
41
42 ```bash
43 --skip-oss
44 ```
45
46 ### 0.2 启动人工审核页面
47
48 ```bash
49 uv run python serve_l2_dashboard.py --host 127.0.0.1 --port 8765
50 ```
51
52 打开:
53
54 ```text
55 http://127.0.0.1:8765
56 ```
57
58 页面会自动扫描 `output/reports/review_decisions_*.csv`。业务人员在页面里查看:
59
60 - 已经入库的 `new` 数据。
61 - 判定重复的 `merge` 样本。
62 - 需要人工审核的 `review` 样本。
63
64 `review` 样本,业务人员标注:
65
66 - `确认重复`:不入库。
67 - `确认不重复`:第二阶段入库。
68 - `待确认`:暂不入库。
69
70 ### 0.3 第二阶段:页面按钮入库审核通过项
71
72 业务人员完成所有 `review` 样本审核后,在页面点击:
73
74 ```text
75 入库审核通过
76 ```
77
78 服务端会自动生成:
79
80 ```text
81 output/reports/review_import_approved_YYYYMMDD_HHMMSS.csv
82 ```
83
84 并自动执行第二阶段导入:
85
86 ```bash
87 uv run python import_hk_songs.py \
88 --review-result-csv output/reports/review_import_approved_YYYYMMDD_HHMMSS.csv \
89 --load-existing-lyrics
90 ```
91
92 如果需要手动执行第二阶段,也可以使用上面的命令,把文件名替换成页面生成的实际 CSV。
93
94 ### 0.4 smoke 后检查
95
96 第一阶段完成后,重点看日志里的:
97
98 ```text
99 插入: <new 入库数量>
100 L2合并命中=<merge 数量>
101 L2待审=<review 数量>
102 人工审核清单: output/reports/review_decisions_*.csv
103 ```
104
105 第二阶段完成后,确认日志里的 `插入` 数量等于本次人工审核确认入库数量。
106
5 ## 1. 运行 L2 测试脚本 107 ## 1. 运行 L2 测试脚本
6 108
7 在项目根目录执行: 109 在项目根目录执行:
......