Soluna 是一個結合機器學習與 AniList 數據的雲端動漫分析平台。本專案旨在解決「棄番風險」與「選擇困難」問題,透過分析用戶的觀看歷史與動漫特徵,提供棄番機率預測、季節性新番推薦以及用戶契合度分析。
本專案採用前後端分離架構,並容器化以便於雲端部署:
- Solaris (前端): 基於 React + Vite 建置,負責資料視覺化與使用者介面。生產環境使用 Nginx 進行託管。
- Lunaris (後端): 基於 Python FastAPI 建置,負責與 AniList API 串接、資料處理以及機器學習模型推論。
.
├── docker-compose.yml # 容器編排設定
├── Solaris/ # 前端原始碼 (React)
│ ├── Dockerfile # Multi-stage build (Node -> Nginx)
│ └── ...
└── Lunaris/ # 後端原始碼 (FastAPI)
├── Dockerfile # Python 3.12 環境
├── main.py # API 入口點
└── ...
- 前端: React, Vite, Recharts (圖表繪製), Axios
- 後端: FastAPI, Uvicorn, Pandas, Scikit-learn, XGBoost
- 資料來源: AniList GraphQL API
- 基礎設施: Docker, Docker Compose
確保您的電腦已安裝以下軟體:
- Docker Desktop
- Git
-
複製專案
git clone https://github.com/senba1000m3/Soluna.git cd Soluna -
使用 Docker 啟動 在專案根目錄執行以下指令,這將會自動建置前後端映像檔並啟動服務:
docker-compose up --build
-
訪問服務
- 前端頁面: 開啟瀏覽器訪問 http://localhost:3000
- 後端 API 文件: 訪問 http://localhost:8000/docs 查看 Swagger UI。
如果您希望在本地分別執行前後端進行開發:
cd Lunaris
pip install -r requirements.txt
uvicorn main:app --reload
# 服務運行於: http://localhost:8000cd Solaris
npm install
npm run dev
# 服務運行於: http://localhost:5173 (Vite 預設埠)
# 注意:需確保 .env 或程式碼中的 API URL 指向 localhost:8000- 棄番預測 (Drop Prediction): 預測用戶放棄某部動漫的機率。
- 季節性預測 (Seasonal Forecast): 針對新番進行潛力評估與推薦。
- 用戶契合度 (Synergy): 分析兩位用戶的觀影品味重疊度。
- 動漫編年史 (Timeline): 根據用戶生日生成專屬的動漫世代時間軸。