跳到主要內容
Fu Yi-Sian
回到專案列表

近期專案

租車與維修紀錄系統

整合租借與維修管理的全端系統,含多角色權限、儀表板統計、電子簽名與估價單寄送。

功能畫面
11個功能畫面
使用者身份權限
2種使用者身份權限
核心資料表關聯
4張核心資料表關聯
ReactNext.jsTypeScriptPrismaSupabase

問題

租借與維修原本是兩條各自獨立的流程,同一台車的歷史散落在不同紀錄裡。要回答「這台車上次保養是什麼時候、上一位租的人是誰」,得靠人工翻找比對。

限制條件

  • 員工與客戶兩種身份,看得到的資料範圍必須不同
  • 車況需要照片佐證,租還前後都要留存
  • 估價單必須能直接寄給客戶,不能只是畫面上看得到
  • 客戶要能自己查詢往來紀錄,減少電話詢問

關鍵決策

  1. 用 Prisma 把車輛、客戶、租借、維修四者的關聯明確建模

    為什麼:關聯寫進 schema,跨表查詢就能一次完成。若只把資料表當儲存空間、在前端拼湊,每加一種查詢角度都要改動前端。

  2. 租借紀錄區分「首次租車」與「一般租車」兩種流程

    為什麼:首次租車需要建檔與簽名,一般租車不必。用同一張表塞所有欄位會讓兩種情境都變得難用。

  3. 估價單走伺服器端組裝後寄出,而非前端產生

    為什麼:寄出的內容必須與資料庫一致,不能受前端狀態影響。

結果

交付 11 個功能畫面、2 種身份權限。「這台車的完整歷史」從人工比對變成一次查詢,客戶也能自助查閱往來紀錄與電子簽名。

主要功能

  • 登入畫面:支援多位使用者以及不同身份權限
  • 登入後首頁儀表板與基礎統計
  • 保養維修清單畫面
  • 單一客戶紀錄詳情畫面
  • 單一客戶估價單下載畫面,可直接郵寄給客戶(與租車紀錄共用同一套寄送流程)
  • 客戶資料完整 CRUD
  • 出租紀錄清單畫面
  • 出租紀錄新增畫面:可上傳車輛狀況照片,並區分「首次租車」與「一般租車」流程
  • 單一出租紀錄詳情畫面:包含車況照片,可將完整資訊郵寄給客戶
  • 客戶身份登入介面:可新增資料並支援電子簽名
  • 顧客基本資料畫面:可調閱該顧客的所有歷史紀錄

技術重點

資料層以 Prisma 定義 schema 並操作 PostgreSQL(Supabase),把車輛、客戶、租借紀錄、維修紀錄之間的關聯明確建模,讓跨表查詢(例如「某位客戶的所有租借與維修紀錄」)能用單一查詢完成,而不是在前端拼湊資料。

照片上傳與估價單寄送是這個專案最花時間的兩塊:前者要處理儲存與取用權限,後者要把資料庫內容組成可閱讀的文件再寄出。

畫面截圖

1 / 8登入後首頁:儀表板與基礎統計