強制面談流程
候選人(乙丙等)→ HR確認面談名單 → 自動產PDF → 待通知 → 發信(附PDF)→ 待面談 → 掃描上傳 → 已完成
面談表 PDF 套表(gen_interview_pdf.py)
- 範本:
Docs/附件15.2 員工績效面談表11503.pdf、Docs/附件15.3 員工績效改善計劃追蹤表11503.pdf
- 套表欄位:公司、員工編號、姓名、部門單位、職稱、獎懲加扣分、製表日期(含時間)、年中/年終/全年度分數+等第
- 後端整合:
InterviewPdfService 呼叫 Python 腳本,面談確認時自動產 PDF 存入 Uploads/InterviewPdf/
- 發信附件:
SendInterviewNotifyAsync 按主管分組,Email 附上該主管所有面談員工的面談表+追蹤表
- 下載 API:
GET /api/hr/interviews/{id}/pdf/interview、GET /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 天:不匯出