Commit a52c778d a52c778d621c3cf661d7369ccb509ad417a20546 by 沈秋雨

fix(review): 修正同词不同曲合并逻辑和状态显示

1 parent c8ead117
......@@ -1359,6 +1359,10 @@
<span style="flex:1">
<b>${esc(query.review_status === 'approved_import' && query.staging_status === 'imported'
? '确认不重复(已入库)'
: query.merge_diff_type === 'diff_lyric_same_melody' && query.staging_status === 'imported'
? '同曲不同词(已入库)'
: query.merge_diff_type === 'same_lyric_diff_melody' && query.staging_status === 'skipped'
? '同词不同曲(已合并)'
: query.merge_diff_type
? `${_DB_REVIEW_LABELS[query.merge_diff_type] || query.merge_diff_type}`
: query.review_status === 'rejected_duplicate' && query.staging_status === 'skipped'
......
......@@ -894,7 +894,7 @@ def _import_approved_staging(source_ids: list[str] | None = None) -> dict[str, o
str(exc),
) from exc
inserted_count = cursor.rowcount
source_placeholders = ",".join(["%s"] * len(approved_source_ids))
source_placeholders = ",".join(["%s"] * len(all_import_source_ids))
cursor.execute(
f"""
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
target = cursor.fetchone()
if not target:
raise RuntimeError(f"重复目标已失效: target_id={target_id}")
merged_lyricist = _merge_author_field(target.get("lyricist"), duplicate_row.get("lyricist"))
merged_composer = _merge_author_field(target.get("composer"), duplicate_row.get("composer"))
merge_diff = duplicate_row.get("merge_diff_type") or ""
# 同词不同曲:仅合并词作者,不合并曲作者(旋律不同)
merge_lyricist = True
merge_composer = merge_diff != "same_lyric_diff_melody"
merged_lyricist = _merge_author_field(target.get("lyricist"), duplicate_row.get("lyricist")) if merge_lyricist else ""
merged_composer = _merge_author_field(target.get("composer"), duplicate_row.get("composer")) if merge_composer else ""
changed = False
if merged_lyricist:
cursor.execute(
......@@ -1502,6 +1506,14 @@ class Handler(BaseHTTPRequestHandler):
finalized.extend(
{
"source_id": source_id,
"review_decision": "import",
"review_note": "同曲不同词,已入库",
}
for source_id in result.get("diff_lyric_source_ids", [])
)
finalized.extend(
{
"source_id": source_id,
"review_decision": "duplicate_merged",
"review_note": "确认重复,词/曲作者已增量合并到已有记录",
}
......