催繳通知系統

從 CLAUDE.md 分離。修改通知相關功能時參考此文件。


已實作功能

  • 通知範本管理NotificationTemplates 資料表,支援變數替換
  • SMTP 寄信EmailService,支援帳密認證或 Windows 整合認證
  • 手動發送(一鍵催繳):HR 儀表板卡關預警區,支援關卡篩選(全部/初核/複核/審核)
    • 同主管多關卡合併為一封信
    • 向下合併邏輯:篩複核 → 含初核、篩審核 → 含初核+複核
    • Per-recipient 模板變數:{階段名稱}{待處理件數}{逾期天數}{逾期明細}
  • 自動排程發送OverdueNotificationService(.NET BackgroundService)
    • 觸發規則:逾期第 1 天使用 Overdue 範本,之後每 3 天使用 OverdueRepeat 範本
    • 同主管多關卡合併為一封信
    • 當天已成功發送的主管不重複發送
    • 設定項:Notification:AutoEnabled(開關)、Notification:SendTime(發送時間 HH:mm)
    • 系統設定頁面「自動催繳」tab 可開關及設定時間
    • IIS 部署需設定 AlwaysRunning + 閒置逾時 0(見 DEPLOY.md)
  • 發送記錄NotificationLogs 資料表,記錄寄送結果
  • 系統設定:SMTP 主機、Port、認證方式等存於 SystemSettings

通知範本變數

變數說明來源
{主管姓名}收件主管姓名per-recipient
{階段名稱}關卡名稱,多關卡用「/」連接per-recipient
{待處理件數}待完成案件數(合併後總計)per-recipient
{逾期天數}最大逾期天數per-recipient
{逾期明細}各關卡件數明細,如「初核 5 件、複核 3 件」per-recipient
{系統網址}系統 URLSystemSettings
{週期名稱}考核週期標題ExamPeriod
{截止日} / {初核截止日}截止日期ExamPeriod

附件寄送

  • EmailService.SendEmailWithAttachmentsAsync:支援附加檔案寄信
  • 面談通知:確認面談候選人後自動產出面談表 + 追蹤表 PDF(InterviewPdfService),發送通知時附加 PDF 給審核主管
  • 附件路徑:Uploads/InterviewPdf/{員工編號}_{姓名}_面談表.pdf / _追蹤表.pdf

催繳紀錄資料表 NotificationLogs

Id, PeriodId, TemplateCode, RecipientEmail, RecipientName,
Subject, PendingCount, SentAt, IsSuccess, ErrorMessage

最後更新:2026/04/19(本次無通知規格變更)