fix(review): 修正同词不同曲合并逻辑和状态显示
Showing
2 changed files
with
24 additions
and
8 deletions
| ... | @@ -1359,11 +1359,15 @@ | ... | @@ -1359,11 +1359,15 @@ |
| 1359 | <span style="flex:1"> | 1359 | <span style="flex:1"> |
| 1360 | <b>${esc(query.review_status === 'approved_import' && query.staging_status === 'imported' | 1360 | <b>${esc(query.review_status === 'approved_import' && query.staging_status === 'imported' |
| 1361 | ? '确认不重复(已入库)' | 1361 | ? '确认不重复(已入库)' |
| 1362 | : query.merge_diff_type | 1362 | : query.merge_diff_type === 'diff_lyric_same_melody' && query.staging_status === 'imported' |
| 1363 | ? `${_DB_REVIEW_LABELS[query.merge_diff_type] || query.merge_diff_type}` | 1363 | ? '同曲不同词(已入库)' |
| 1364 | : query.review_status === 'rejected_duplicate' && query.staging_status === 'skipped' | 1364 | : query.merge_diff_type === 'same_lyric_diff_melody' && query.staging_status === 'skipped' |
| 1365 | ? '确认重复(作者已合并)' | 1365 | ? '同词不同曲(已合并)' |
| 1366 | : (_DB_REVIEW_LABELS[query.review_status] || query.review_status))}</b> | 1366 | : query.merge_diff_type |
| 1367 | ? `${_DB_REVIEW_LABELS[query.merge_diff_type] || query.merge_diff_type}` | ||
| 1368 | : query.review_status === 'rejected_duplicate' && query.staging_status === 'skipped' | ||
| 1369 | ? '确认重复(作者已合并)' | ||
| 1370 | : (_DB_REVIEW_LABELS[query.review_status] || query.review_status))}</b> | ||
| 1367 | ${query.reviewed_by ? ` · 审核人 ${esc(query.reviewed_by)}` : ''} | 1371 | ${query.reviewed_by ? ` · 审核人 ${esc(query.reviewed_by)}` : ''} |
| 1368 | ${query.reviewed_at ? ` · ${esc(query.reviewed_at)}` : ''} | 1372 | ${query.reviewed_at ? ` · ${esc(query.reviewed_at)}` : ''} |
| 1369 | ${query.review_note ? ` · 备注: ${esc(query.review_note)}` : ''} | 1373 | ${query.review_note ? ` · 备注: ${esc(query.review_note)}` : ''} | ... | ... |
| ... | @@ -894,7 +894,7 @@ def _import_approved_staging(source_ids: list[str] | None = None) -> dict[str, o | ... | @@ -894,7 +894,7 @@ def _import_approved_staging(source_ids: list[str] | None = None) -> dict[str, o |
| 894 | str(exc), | 894 | str(exc), |
| 895 | ) from exc | 895 | ) from exc |
| 896 | inserted_count = cursor.rowcount | 896 | inserted_count = cursor.rowcount |
| 897 | source_placeholders = ",".join(["%s"] * len(approved_source_ids)) | 897 | source_placeholders = ",".join(["%s"] * len(all_import_source_ids)) |
| 898 | cursor.execute( | 898 | cursor.execute( |
| 899 | f""" | 899 | f""" |
| 900 | SELECT source_song_id, id AS target_id | 900 | SELECT source_song_id, id AS target_id |
| ... | @@ -933,8 +933,12 @@ def _import_approved_staging(source_ids: list[str] | None = None) -> dict[str, o | ... | @@ -933,8 +933,12 @@ def _import_approved_staging(source_ids: list[str] | None = None) -> dict[str, o |
| 933 | target = cursor.fetchone() | 933 | target = cursor.fetchone() |
| 934 | if not target: | 934 | if not target: |
| 935 | raise RuntimeError(f"重复目标已失效: target_id={target_id}") | 935 | raise RuntimeError(f"重复目标已失效: target_id={target_id}") |
| 936 | merged_lyricist = _merge_author_field(target.get("lyricist"), duplicate_row.get("lyricist")) | 936 | merge_diff = duplicate_row.get("merge_diff_type") or "" |
| 937 | merged_composer = _merge_author_field(target.get("composer"), duplicate_row.get("composer")) | 937 | # 同词不同曲:仅合并词作者,不合并曲作者(旋律不同) |
| 938 | merge_lyricist = True | ||
| 939 | merge_composer = merge_diff != "same_lyric_diff_melody" | ||
| 940 | merged_lyricist = _merge_author_field(target.get("lyricist"), duplicate_row.get("lyricist")) if merge_lyricist else "" | ||
| 941 | merged_composer = _merge_author_field(target.get("composer"), duplicate_row.get("composer")) if merge_composer else "" | ||
| 938 | changed = False | 942 | changed = False |
| 939 | if merged_lyricist: | 943 | if merged_lyricist: |
| 940 | cursor.execute( | 944 | cursor.execute( |
| ... | @@ -1502,6 +1506,14 @@ class Handler(BaseHTTPRequestHandler): | ... | @@ -1502,6 +1506,14 @@ class Handler(BaseHTTPRequestHandler): |
| 1502 | finalized.extend( | 1506 | finalized.extend( |
| 1503 | { | 1507 | { |
| 1504 | "source_id": source_id, | 1508 | "source_id": source_id, |
| 1509 | "review_decision": "import", | ||
| 1510 | "review_note": "同曲不同词,已入库", | ||
| 1511 | } | ||
| 1512 | for source_id in result.get("diff_lyric_source_ids", []) | ||
| 1513 | ) | ||
| 1514 | finalized.extend( | ||
| 1515 | { | ||
| 1516 | "source_id": source_id, | ||
| 1505 | "review_decision": "duplicate_merged", | 1517 | "review_decision": "duplicate_merged", |
| 1506 | "review_note": "确认重复,词/曲作者已增量合并到已有记录", | 1518 | "review_note": "确认重复,词/曲作者已增量合并到已有记录", |
| 1507 | } | 1519 | } | ... | ... |
-
Please register or sign in to post a comment