dramaling-app/sop/archive/20250909234848_README.md

181 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Drama Ling - 專案架構
這是Drama Ling語言學習應用的主要專案資料夾包含前端和後端代碼。
## 專案結構
```
src/
├── backend/ # .NET Core Web API 後端
│ ├── DramaLing.API/ # Web API 專案
│ ├── DramaLing.Application/ # 應用服務層
│ ├── DramaLing.Core/ # 領域模型層
│ ├── DramaLing.Infrastructure/ # 基礎設施層
│ ├── DramaLing.Tests/ # 測試專案
│ └── DramaLing.sln # 解決方案檔
├── mobile/ # Flutter 移動應用
│ ├── lib/
│ │ ├── core/ # 核心功能 (常數、工具、服務)
│ │ ├── features/ # 功能模組 (認證、學習、對話等)
│ │ └── shared/ # 共用組件 (Widget、模型、Provider)
│ └── pubspec.yaml # Flutter 專案配置
└── docker-compose.yml # Docker 開發環境配置
```
## 技術棧
### 後端 (.NET Core)
- **.NET 8**: 最新的跨平台框架
- **ASP.NET Core Web API**: RESTful API 服務
- **Entity Framework Core**: ORM 資料庫存取
- **PostgreSQL**: 主要資料庫
- **Redis**: 快取和會話管理
- **JWT**: 身份驗證
- **Swagger/OpenAPI**: API 文檔
- **Serilog**: 結構化日誌
### 前端 (Flutter)
- **Flutter 3.16+**: 跨平台移動應用框架
- **Dart 3.0+**: 程式語言
- **Riverpod**: 狀態管理
- **Go Router**: 導航路由
- **Dio + Retrofit**: HTTP 客戶端
- **Hive**: 本地資料存儲
- **Material 3**: UI 設計系統
## 開發環境設置
### 必要工具
- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)
- [Flutter 3.16+](https://flutter.dev/docs/get-started/install)
- [Docker Desktop](https://www.docker.com/products/docker-desktop)
- [PostgreSQL](https://www.postgresql.org/download/) (或使用Docker)
### 快速開始
#### 1. 啟動開發環境
```bash
# 啟動資料庫和Redis
cd src
docker-compose up -d postgres redis
# 或者啟動完整環境包含API
docker-compose up -d
```
#### 2. 後端開發
```bash
cd src/backend
# 還原套件
dotnet restore
# 建立資料庫
dotnet ef database update --project DramaLing.Infrastructure --startup-project DramaLing.API
# 啟動API服務
dotnet run --project DramaLing.API
# API將在 http://localhost:5000 啟動
# Swagger UI: http://localhost:5000
```
#### 3. 前端開發
```bash
cd src/mobile
# 安裝套件
flutter pub get
# 程式碼生成 (Riverpod, Retrofit 等)
dart run build_runner build
# 啟動Flutter應用 (需要模擬器或實體裝置)
flutter run
```
## API 文檔
- **開發環境**: http://localhost:5000
- **Swagger UI**: http://localhost:5000 (開發模式下)
- **API 規格文檔**: `../../docs/04_technical/api/`
## 資料庫
### 連線資訊 (開發環境)
- **主機**: localhost
- **埠號**: 5432
- **資料庫**: dramaling_dev
- **使用者**: postgres
- **密碼**: password
### 遷移指令
```bash
# 建立遷移
dotnet ef migrations add <MigrationName> --project DramaLing.Infrastructure --startup-project DramaLing.API
# 更新資料庫
dotnet ef database update --project DramaLing.Infrastructure --startup-project DramaLing.API
# 移除最後一個遷移
dotnet ef migrations remove --project DramaLing.Infrastructure --startup-project DramaLing.API
```
## 測試
### 後端測試
```bash
cd src/backend
dotnet test
```
### 前端測試
```bash
cd src/mobile
flutter test
```
## 部署
### 生產環境建構
```bash
# 後端
cd src/backend
dotnet publish DramaLing.API -c Release -o publish
# 前端
cd src/mobile
flutter build apk --release # Android
flutter build ios --release # iOS
```
## 開發指南
### 架構原則
- **Clean Architecture**: 分層架構,依賴倒置
- **CQRS**: 命令查詢職責分離 (使用 MediatR)
- **Feature-based**: 按功能模組組織程式碼
- **API-first**: API 優先設計
### 編碼規範
- **後端**: 遵循 C# 編碼慣例
- **前端**: 遵循 Dart/Flutter 編碼慣例
- **命名**: 英文命名,中文註釋
- **測試**: 單元測試覆蓋率 > 80%
## 相關文檔
- [API 規格文檔](../../docs/04_technical/api/)
- [資料庫設計](../../docs/04_technical/database-schema.md)
- [技術選型決策](../../docs/04_technical/tech-stack-decision.md)
- [開發工作流程](../../docs/03_development/development-workflow.md)
## 問題回報
如有問題請參考:
- [ISSUES.md](../../ISSUES.md)
- [問題管理系統](../../README-問題管理.md)
## 授權
版權所有 © 2025 Drama Ling Team