File size: 2,931 Bytes
7d67a69
 
4996b79
7d67a69
 
 
 
 
 
 
 
97a461c
7d67a69
 
 
 
 
 
 
 
 
 
 
4996b79
 
 
 
 
 
 
7d67a69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97a461c
 
 
 
7d67a69
 
 
 
 
 
 
 
 
 
 
 
14640e3
7d67a69
14640e3
 
7d67a69
 
14640e3
 
 
7d67a69
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# config.py
# 此檔案負責系統配置、環境變數載入和全域常數定義
# 包含 SMTP 設定、Resend 設定、系統權重、動作映射等

import os
from dotenv import load_dotenv

# 載入環境變數
load_dotenv()

# 測試用固定郵箱
FIXED_TEST_EMAIL = os.getenv("FIXED_TEST_EMAIL", "[EMAIL_ADDRESS]").strip()

# SMTP 設定
SMTP_CONFIG = {
    "host": os.getenv("SMTP_HOST", "").strip(),
    "port": int(os.getenv("SMTP_PORT", "587").strip() or "587"),
    "username": os.getenv("SMTP_USERNAME", "").strip(),
    "password": os.getenv("SMTP_PASSWORD", "").strip(),
    "from": os.getenv("SMTP_FROM", "").strip() or os.getenv("SMTP_USERNAME", "").strip(),
    "base_url": os.getenv("APP_BASE_URL", "").strip() or "http://localhost:7860"
}

# Resend 設定
RESEND_API_KEY = os.getenv("RESEND_API_KEY", "").strip()

# 郵件發送方式: "resend"(優先,適合 HF 部署)或 "smtp"(備援)
# 若 RESEND_API_KEY 有設定則自動使用 resend,否則 fallback 到 smtp
EMAIL_PROVIDER = "resend" if os.getenv("RESEND_API_KEY", "").strip() else "smtp"

# 系統權重設定
SYSTEM_WEIGHTS = {
    "ow": 75.0, "tw": 80.0, "iw": 65.0,
    "dw": 45.0, "gw": 50.0, "fw": 60.0
}

# 動作映射:將中文系統名稱映射到代碼
ACTION_MAP = {
    "教務系統: 期末網路教學評量": "click_eval_system",
    "教務系統: 期末網路預選系統": "click_pre_select_system",
    "教務系統: 開學後加退選系統": "click_add_drop_system",
    "教務系統: 北科i學園PLUS": "click_istudy",
    "教務系統: 學生證掛失及補發系統": "click_card_loss",
    "教務系統: 課程系統": "click_course_system",
    "教務系統: 學業成績查詢系統": "click_score_query",
    "學務系統: 學生請假系統": "click_leave_system",
    "學務系統: 學生宿舍登錄(抽籤)系統": "click_dorm_system",
    "學務系統: 獎助學金申請系統": "click_scholarship",
    "資訊服務: 網路郵局 WebMail": "click_webmail",
    "資訊服務: 北科軟體雲": "click_vdesk",
    "惡意測試: 嘗試偷改成績 (SQL Injection)": "malicious_sql_injection"
}

# 用戶資料庫
USER_DB = {
    "student": ["1234", "學生", "Alex Wang"],
    "student2": ["1234", "學生", "Bella Lin"],
    "admin": ["1234", "管理", "Charles Chen"],
    "admin2": ["1234", "管理", "David Lee"]
}

# 伺服器設定
SERVER_CONFIG = {
    "host": "0.0.0.0",
    "port": int(os.getenv("PORT", 7860))
}

# 字型檔案名稱
FONT_PATH = 'SimHei.ttf'

# 模型檔案名稱
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MODEL_FILES = {
    "label_encoder": os.path.join(BASE_DIR, "le_action.pkl"),
    "baseline_logs": os.path.join(BASE_DIR, "baseline_logs.csv")
}

# Hugging Face 設定
DATASET_REPO_ID = os.getenv("DATASET_REPO_ID", "My-Project-Team/Digital-Bodyguard-Dataset")

# 環境變數檢查
ENABLE_HDBSCAN = os.getenv("ENABLE_HDBSCAN", "1").strip() == "1"