(個人專案)AI 工作數據分析儀表板
目錄
一、技術一覽
二、開發功能特色介紹
三、技術詳細說明(AI、後端、前端)
一、技術一覽
- 前端:Vue3, ElementPlus, Tailwind, Axios, Echarts, Vite, Pinia, etc
- 後端:Laravel, Inertia, Sanctum, Socialite, Cloud-BigQuery, etc
- 資料庫:Mysql, Redis
- 爬蟲:Requests, UserAgent, BS4, RequestProxy, etc.
- AI:Python, OpenAI API
- 環境:Docker(Nginx)
- 版控:Git
設計規範:
- 後端:以 PSR1, PSR2 為主
- 前端:JavaScript Standard Style
- 資料爬取&分析:遵循 PEP 8 (Python Enhancement Proposal 8) 風格
二、開發功能特色介紹
職缺資料統計:
- ✅ 職缺均薪&中位數 => 提供中位數,避免均值因極端值浮動大。
- ✅ 各城市均薪(長條圖) => 各地區分析,避免單一地區薪資高而導致其它縣市薪水被拉高。
- ✅ 產業薪水分佈(四分位圖) => 協助分析各產業的薪資潛力,例如同為軟體工程師,出版業與金融業的薪資必然不一致。
- ✅ 職缺產業別佔比(圓餅圖) => 評估產業與職缺的正相關或負相關
- ✅ 職缺地區佔比(圓餅圖) => 各地區職缺佔比
- 🚧 AI 統計摘要分析(尚未完成)
AI 智能匹配:
- ✅ 輸入任意「情境文字」, AI 提供自動匹配工作(如下圖,根據情境透過向量計算取得符合度)(已完成)
- 🚧 提供模板條件(例如當前年資、期待職缺、升職希望等),並由 AI 進行自動匹配(尚未完成)
- 🚧 提供簡易履歷 AI 健檢服務(尚未完成)
下圖範例為查找「福利優渥工作」的概況:
三、技術詳細說明(AI、後端、前端)
【AI】
- 實作 Proxy pools & Crontab 日爬取職缺資料。
- 清洗&分析資料(這邊不一一列舉處理細節,相關技能歡迎查閱資料工程(for 廣告流量)(點我前往查看詳情)這篇文章。
- 整合 ChatGPT API,透過 Embedding 實作特定句子查詢指定職缺(與 AI 有關的作品包含):
- 增加 Sentry 確保每支 Python Processes 的正確運行,否則會寄信通知。
【後端】
- 使用 Inertia 讓前端與後端共用 同一 router。
- 三層式架構(Repository, Service, Controller) & 封裝(eg: 根據需求納入不同的設計模式、Service container 實現DI。)
- Laravel-permission 快速實作 RBAC。(在 middleware 來辨別 Role,沒有對應 Role 則無法使用。)
- 完成單元測試&整合測試(>80%), DB 另有建立一個 測試DB 來進行資料CRUD的測試( EDC(點我查看詳細) 使用 Mock,而非 測試DB)。
- 透過 Commands 實作部分排程程式&Log資訊記錄。
- 資安防護(eg: 保護 Cookie 安全(增加 httpOnly, sameSite),其餘 XSS, CSRF, Sql injection 現代框架都已提供基本防護則僅確保程式碼無大礙,無特別進行處理)。
【前端】
- 各 UI 組件模組化(eg:各類統計圖表、頁面的Card, etc.)。
- 封裝常用功能(eg: Axios, 權限, API, etc.)。
- Vite 配置。
- 部分採 Typescript 開發(因為先前使用Js,尚未全部改寫)。