催繳通知系統
從 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)
- 觸發規則:逾期第 1 天使用
- 發送記錄:
NotificationLogs資料表,記錄寄送結果 - 系統設定:SMTP 主機、Port、認證方式等存於
SystemSettings
通知範本變數
| 變數 | 說明 | 來源 |
|---|---|---|
{主管姓名} | 收件主管姓名 | per-recipient |
{階段名稱} | 關卡名稱,多關卡用「/」連接 | per-recipient |
{待處理件數} | 待完成案件數(合併後總計) | per-recipient |
{逾期天數} | 最大逾期天數 | per-recipient |
{逾期明細} | 各關卡件數明細,如「初核 5 件、複核 3 件」 | per-recipient |
{系統網址} | 系統 URL | SystemSettings |
{週期名稱} | 考核週期標題 | 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(本次無通知規格變更)