定義

核心維護提醒與業務邏輯

  • 關聯調整說明:
    • 原規格中的 contact_id 已統一下化為 customers 表格的 customer_id(直接整合了客戶公司名稱、聯絡人姓名、Email 與 Phone 資訊)。
  • 在線時數採集:
    • PM 登入/登出 時,除了產生 user_sessions 紀錄外,需同步累加線上秒數至 users.total_online_seconds。
  • 報表產出數據採集:
    • PM 成功生成報表(status 變更為 GENERATED)時,需自動將 users.generated_report_count 加 1。
  • 使用軌跡 (Audit Trail) 數據採集:
    • 所有的系統點擊、報表規格修改、下載與匯出操作,皆需經由後端 Middleware 或 API 層寫入 audit_logs 表格。
  • 安全與初次登入驗證:
    • 預設建立之帳號 is_first_login 為 True,密碼預設為 report24837296。系統需判定首次登入後強制導向修改密碼頁面。

數據庫 Schema 結構總覽

users (PM / 系統帳號表)

欄位名稱 (Field)型態 (Type)說明 / 預設值 (Description)
user_idString(36)Primary Key (UUID)
nameString(100)使用者姓名
emailString(100)登入 Email (Unique Key)
passwordString(255)密碼(預設 report24837296,須經過 Password Hash)
roleString(20)權限角色 (例如: 'PM', 'Admin')
is_first_loginBoolean首次登入標記 (預設 True)
total_online_secondsInteger【數據指標】 累計登入總秒數 (預設 0)
generated_report_countInteger【數據指標】 累計產出報表總次數 (預設 0)
last_login_atDateTime最後登入時間

customers (客戶與聯絡人資料表)

欄位名稱 (Field)型態 (Type)說明 / 預設值 (Description)
customer_idString(36)Primary Key (UUID)
pm_idString(36)Foreign Key -> users.user_id (負責 PM)
company_nameString(150)公司名稱
customer_nameString(100)聯絡人姓名
customer_mailString(100)聯絡人 Email
customer_phoneString(50)聯絡人電話

reports (報表規格主表)

欄位名稱 (Field)型態 (Type)說明 / 預設值 (Description)
report_idString(36)Primary Key (UUID)
report_codeString(50)報表編號 (Unique Key)
pm_idString(36)Foreign Key -> users.user_id
customer_idString(36)Foreign Key -> customers.customer_id
statusString(20)狀態 (例如: 'DRAFT', 'GENERATED', 'ARCHIVED')
spec_seriesInteger串聯數 (預設 6)
spec_parallelInteger並聯數
cell_numString(50)電芯型號 / 料號
cell_typeString(50)電芯種類 (如 18650, 21700, 磷酸鐵鋰)
connection_methodString(50)串併方式
processing_methodString(50)加工方式
connector_typeString(50)連接器類型
wire_lengthNumeric(10,2)線長 (mm/cm)
outer_casingString(50)外包覆材質
array_arrangementEnum排列方式 ('I', 'U', 'II')
has_bmsBoolean是否包含 BMS (預設 True)
bms_spec_limitString(50)BMS 規格限制 (如 '6S?P')
weight_gNumeric(10,2)估計重量 (g)
dimensions_mmString(50)尺寸規格 (格式如 L_W_H)
delivery_daysInteger交期天數
tiered_pricingNumeric(12,2)報表價格/階梯價格

report_histories (歷史版本與快照)

欄位名稱 (Field)型態 (Type)說明 / 預設值 (Description)
history_idString(36)Primary Key (UUID)
report_idString(36)Foreign Key -> reports.report_id
versionInteger版本號 (1, 2, 3…)
snapshot_dataJSON該版次整份報表與客戶資訊的 JSON 快照
created_byString(36)Foreign Key -> users.user_id (編輯者)

user_sessions (登入與時數細節表)

欄位名稱 (Field)型態 (Type)說明 / 預設值 (Description)
session_idString(36)Primary Key (UUID)
user_idString(36)Foreign Key -> users.user_id
login_atDateTime登入時間
logout_atDateTime登出時間
duration_secondsInteger該次 Session 線上總秒數

audit_logs (系統操作軌跡表)

欄位名稱 (Field)型態 (Type)說明 / 預設值 (Description)
log_idString(36)Primary Key (UUID)
user_idString(36)Foreign Key -> users.user_id (可為 Null)
actionString(50)操作類型 (LOGIN, CREATE_REPORT, EXPORT_PDF, UPDATE_SPEC)
resourceString(50)操作標的 (如 reports, customers)
detailsJSON詳細操作參數與欄位變更紀錄
ip_addressString(45)用戶端 IP 地址
user_agentString(255)用戶端瀏覽器/裝置資訊

static_report_masters (靜態報表主檔 / 規格範本表)

欄位名稱 (Field)型態 (Type)說明 / 預設值 (Description)
master_idString(36)Primary Key (UUID)
template_codeString(50)規格範本 / 標準報表編號 (Unique Key)
spec_seriesInteger預設串聯數 (S)
spec_parallelInteger預設並聯數 (P)
cell_numString(50)推薦/標準電芯型號與料號
cell_typeString(50)電芯種類 (如 18650, 21700, LFP, NCM)
connection_methodString(50)標準串併與焊接方式
processing_methodString(50)標準加工方式
connector_typeString(50)標準連接器規格
wire_lengthNumeric(10,2)標準線長 (mm/cm)
outer_casingString(50)外包覆材質 (如熱縮套管、PVC、金屬外殼)
array_arrangementEnum預設排列方式 ('I', 'U', 'II')
has_bmsBoolean預設是否包含 BMS (預設 True)
bms_spec_limitString(50)搭配之 BMS 規格限制 (如 '6S')
weight_gNumeric(10,2)標準估計總重量 (g)
dimensions_mmString(50)標準外觀尺寸 (格式如 L_W_H)
delivery_daysInteger標準基準交期天數
tiered_pricingNumeric(12,2)預設階梯定價 / 基礎建議售價
is_activeBoolean是否啟用此範本 (預設 True)
created_atDateTime建立時間
updated_atDateTime最後異動時間