68 lines
2.7 KiB
Markdown
68 lines
2.7 KiB
Markdown
# 會員平台(Member Center)
|
||
|
||
此專案為多網站共用的會員登入中心與電子報訂閱管理平台。文件統一放在 `docs/`。
|
||
|
||
## 目標(MVP)
|
||
- 多個網站共用的會員登入中心(SSO)
|
||
- OAuth2 + OIDC 登入(API 與 Redirect 兩種方式)
|
||
- 電子報訂閱管理(含未註冊訂閱)
|
||
- 未註冊訂閱者可自行取消訂閱
|
||
- 未註冊訂閱者未來註冊可沿用訂閱資料
|
||
|
||
## 既定條件
|
||
- OAuth2 + OIDC
|
||
- 會員中心只負責 Email/訂閱管理,發送系統另建
|
||
- 訂閱採 double opt-in
|
||
- 各站各自設計 UI,主要走 API;少數狀況使用 redirect
|
||
- 會員資料跨站共享(邏輯隔離)
|
||
- 訂閱事件同步採 event/queue
|
||
- DB:PostgreSQL
|
||
- 開發:C# .NET Core + MVC + OpenIddict
|
||
|
||
## 範圍(第一階段)
|
||
- 多租戶(站點)概念與基本設定
|
||
- 會員與訂閱者 Email 身分識別
|
||
- OAuth2/OIDC 授權(Authorization Code + PKCE)
|
||
- 訂閱/取消訂閱流程(含未註冊)
|
||
- 基本管理後台(核心 CRUD)
|
||
|
||
## 非目標(暫不處理)
|
||
- 第三方社群登入
|
||
- MFA
|
||
- 行銷自動化或行為追蹤
|
||
- 金流/付費會員
|
||
|
||
## 文件
|
||
- `docs/DESIGN.md`:系統設計總覽、核心模組、資料模型與流程原則
|
||
- `docs/UI.md`:UI 路由規劃與 Use Cases 對應
|
||
- `docs/USE_CASES.md`:需求用例(角色、情境、驗收)
|
||
- `docs/FLOWS.md`:主要業務流程(註冊、登入、訂閱、退訂、管理)
|
||
- `docs/OPENAPI.md`:API 規格說明與補充規則
|
||
- `docs/openapi.yaml`:OpenAPI 3.1 正式規格檔
|
||
- `docs/SCHEMA.sql`:資料庫 schema(PostgreSQL)
|
||
- `docs/SEED.sql`:初始化/測試資料
|
||
- `docs/TECH_STACK.md`:技術棧與選型
|
||
- `docs/INSTALL.md`:安裝、初始化與維運指令
|
||
|
||
## 專案結構
|
||
```text
|
||
member_center/
|
||
├── src/
|
||
│ ├── MemberCenter.Api/ # REST API(OAuth/OIDC、訂閱、管理 API)
|
||
│ ├── MemberCenter.Web/ # MVC Web UI(會員與後台頁面)
|
||
│ ├── MemberCenter.Installer/ # 安裝與初始化 CLI(migrate/init/admin)
|
||
│ ├── MemberCenter.Application/ # 應用層介面與 DTO
|
||
│ ├── MemberCenter.Infrastructure/# EF Core、Identity、OpenIddict、服務實作
|
||
│ └── MemberCenter.Domain/ # 領域實體與常數
|
||
├── docs/ # 專案文件
|
||
├── .vscode/ # 本機開發啟動與工作設定
|
||
├── MemberCenter.sln # Solution
|
||
└── README.md
|
||
```
|
||
|
||
## 待確認事項
|
||
- OAuth2 scopes 與最小 claims(email/profile)
|
||
- 事件系統選擇(Kafka/RabbitMQ/SNS+SQS)
|
||
- 取消訂閱的 UI 形式(純一鍵或提供偏好)
|
||
- GDPR/CCPA 資料匯出與刪除是否納入第一期
|