強制面談流程

候選人(乙丙等)→ HR確認面談名單 → 自動產PDF → 待通知 → 發信(附PDF)→ 待面談 → 掃描上傳 → 已完成

面談表 PDF 套表(gen_interview_pdf.py

  • 範本Docs/附件15.2 員工績效面談表11503.pdfDocs/附件15.3 員工績效改善計劃追蹤表11503.pdf
  • 套表欄位:公司、員工編號、姓名、部門單位、職稱、獎懲加扣分、製表日期(含時間)、年中/年終/全年度分數+等第
  • 後端整合InterviewPdfService 呼叫 Python 腳本,面談確認時自動產 PDF 存入 Uploads/InterviewPdf/
  • 發信附件SendInterviewNotifyAsync 按主管分組,Email 附上該主管所有面談員工的面談表+追蹤表
  • 下載 APIGET /api/hr/interviews/{id}/pdf/interviewGET /api/hr/interviews/{id}/pdf/tracking
  • InterviewRecord.PdfPath:記錄面談表路徑,追蹤表同目錄(檔名 _追蹤表.pdf
  • PDF 缺檔自動補產SendInterviewNotifyAsync 若偵測 PdfPath 指向的檔案不存在(路徑因年度/部門調整而失效),自動呼叫 InterviewPdfService 重產並更新 DB

發信收件人選擇

  • 候選池:該虛擬部門所有審核主管(R1/R2/初審/複審/三審/終審)∪ 全部 HR/Admin
  • UI:主收件人用 radio(必選 1 人)+ 副本用 checkbox(可多選)
  • Email 範本變數:中文 key({員工姓名} {部門} {等第} 等),儲存於 NotificationTemplates
  • 附件:該主管分組下所有面談表 + 追蹤表 PDF

掃描檔預覽

  • 已完成面談可透過 GET /api/hr/interviews/{id}/scanned 下載/預覽 PDF
  • 前端用 previewBlobWithAuth helper(JWT + blob URL → 新分頁開)
  • 104 回寫中心「已完成面談」展開列表含「檢視檔案」按鈕,直接預覽該人面談記錄

路徑組裝(PdfPathHelper)

  • 結構:{Root}\{民國年}\{年中|年終}\面談表\{虛擬部門}\{EmpNo}_{Name}_{yyyyMMdd_HHmm}.pdf
  • ToRocYear 冪等:輸入若已是民國年則原樣回傳(避免二次減 1911)
  • BaseUrl 從 SystemSettings:Email:BaseUrl 取;缺值時 fallback 到 http://localhost:5173

gen_import.py 匯出規則

  • 職等判定:JOB_CODE 以 ‘A’ 開頭 或 職稱含 總監/總編審/協理/副總/總經理 → 管理職
  • 管理職審核鏈:R1→R2→結案,初審~終審全空
  • 一般職審核鏈:排除副總以上(嚴智徑、余朝為、常立欣)
  • 同單位主管修正:R1 替換時,原 R1 自動降為 R2
  • 排除名單:僅排除 練台生、嚴智徑、余朝為、練寅生、練雨青(董事長室員工如陳斯維、巴蕾需考核)
  • 離職過濾:104 WORK_STATUS ≠ 1 的員工不匯出
  • 到職未滿 90 天:不匯出