Fix: strip existing leave suffix before appending new leave to prevent duplication

This commit is contained in:
IT狗
2026-07-21 12:38:48 +08:00
parent 1e7d58486b
commit 9980f8d80a
+10 -1
View File
@@ -181,13 +181,22 @@ def enrich_attendance_with_leave(records, db):
r.status_code = "mixed_leave" r.status_code = "mixed_leave"
r.status_text = leave_text r.status_text = leave_text
elif original_code in ("al", "sl", "cl"): elif original_code in ("al", "sl", "cl"):
# Pure leave status: check if multiple leave types → upgrade to mixed # Pure leave status: replace with aggregated leave text
if len(leave_by_type) > 1: if len(leave_by_type) > 1:
r.status_code = "mixed_leave" r.status_code = "mixed_leave"
r.status_text = leave_text r.status_text = leave_text
else: else:
r.status_text = leave_text r.status_text = leave_text
elif original_code not in ("missing", "", "holiday", "al", "sl", "cl"):
# Non-leave attendance status: strip any previously-enriched leave suffix and rebuild
base_text = (r.status_text or "正常").split(" + ")[0] # keep only attendance part
base_text = base_text.split(" (")[0] # strip holiday annotation
if leave_text:
r.status_text = f"{base_text} + {leave_text}"
else:
r.status_text = base_text
else: else:
# original_code is empty or holiday or already handled above
base = r.status_text or "正常" base = r.status_text or "正常"
r.status_text = f"{base} + {leave_text}" r.status_text = f"{base} + {leave_text}"