員工考核系統 - 部署說明
系統需求
- Windows Server 2019+ 或 Linux (Ubuntu 20.04+)
- .NET 8 SDK / Runtime
- Microsoft SQL Server 2016+
- IIS 或 Kestrel(.NET 內建)
步驟一:建立資料庫
- 開啟 SQL Server Management Studio (SSMS)
- 連線到公司的 SQL Server
- 開啟
database_setup.sql,執行全部 SQL
-- 確認資料庫建立成功
USE ExamSystem;
SELECT * FROM Dimensions; -- 應看到 3 筆面向資料
SELECT * FROM Questions; -- 應看到 12 筆題目- 建立專用帳號(建議不要用 sa):
CREATE LOGIN exam_user WITH PASSWORD = '強密碼請自訂';
USE ExamSystem;
CREATE USER exam_user FOR LOGIN exam_user;
GRANT SELECT, INSERT, UPDATE ON SCHEMA::dbo TO exam_user;步驟二:修改設定檔
編輯 appsettings.json,填入實際資訊:
{
"ConnectionStrings": {
"DefaultConnection": "Server=192.168.1.100;Database=ExamSystem;User Id=exam_user;Password=你的密碼;TrustServerCertificate=True"
},
"Jwt": {
"Key": "換成你自己的32字元以上隨機字串",
"Issuer": "ExamSystem",
"Audience": "ExamSystemUsers"
}
}⚠️ 正式環境請勿將密碼寫在 appsettings.json,改用環境變數或 Windows Secrets
步驟三:建立員工帳號
用以下 API 或直接在資料庫建立員工(密碼請用 BCrypt hash):
API 方式(登入 HR 帳號後):
POST /api/hr/employees
{
"employeeNo": "E003",
"name": "張三",
"department": "業務部",
"email": "zhang@company.com",
"initialPassword": "員工初始密碼"
}
批次匯入方式: 可準備 CSV,請工程師撰寫匯入腳本
步驟四:執行系統
開發測試
cd ExamSystem
dotnet run
# 開啟瀏覽器:http://localhost:5000正式部署(IIS)
# 發佈
dotnet publish -c Release -o ./publish
# 將 ./publish 資料夾複製到 IIS 網站目錄
# IIS 應用程式集區:選 .NET CLR 版本「無 Managed 程式碼」
# 安裝 ASP.NET Core Hosting Bundle正式部署(Linux + systemd)
dotnet publish -c Release -o /var/www/examsystem
sudo nano /etc/systemd/system/examsystem.service[Unit]
Description=員工考核系統
[Service]
WorkingDirectory=/var/www/examsystem
ExecStart=/usr/bin/dotnet ExamSystem.dll
Restart=always
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://0.0.0.0:5000
[Install]
WantedBy=multi-user.targetsudo systemctl enable examsystem
sudo systemctl start examsystem步驟五:設定內部 DNS
請 IT 在內部 DNS 新增記錄:
hr-exam.company.local → 伺服器 IP(例:192.168.1.50)
員工只需在瀏覽器輸入:http://hr-exam.company.local
API 端點總覽
| 方法 | 路徑 | 說明 | 權限 |
|---|---|---|---|
| POST | /api/auth/login | 登入 | 公開 |
| GET | /api/exam/periods | 取得考核週期 | 員工 |
| GET | /api/exam/questions/{periodId} | 取得題目 | 員工 |
| POST | /api/exam/submit | 提交考核 | 員工 |
| GET | /api/exam/my-results | 個人歷史成績 | 員工 |
| GET | /api/hr/report/{periodId} | 全員成績報表 | HR |
| GET | /api/hr/summary/{periodId} | 統計摘要 | HR |
| GET | /api/hr/not-submitted/{periodId} | 未提交名單 | HR |
| POST | /api/hr/employees | 新增員工 | HR |
開發模式 Swagger 文件:http://localhost:5000/swagger
常見問題
Q:員工忘記密碼怎麼辦? HR 登入後台,透過 API 重設:
UPDATE Employees
SET PasswordHash = dbo.fn_bcrypt('新密碼')
WHERE EmployeeNo = 'E001';(或請工程師提供密碼重設 API)
Q:如何匯出 Excel 成績報表? 目前版本可由 HR 在後台介面匯出 CSV, 如需 Excel 格式請告知工程師加入 EPPlus 套件。
Q:如何修改考核題目?
直接在資料庫 Questions 資料表新增/修改,
或請工程師開發後台題目管理頁面。