Files
star-cloud/docs/members.md
sky121113 84ef0c24e2
All checks were successful
Star-Cloud-Deploy-System / deploy-demo (push) Successful in 44s
Star-Cloud-Deploy-System / deploy-production (push) Has been skipped
feat: 整合 Preline UI 3.x 與重寫 README 為 Docker 架構
- 新增 Preline UI 3.2.3 作為 UI 組件庫
- 更新 tailwind.config.js 整合 Preline
- 更新 app.js 初始化 Preline
- 完全重寫 README.md 以 Docker 容器化架構為核心
- 新增 Docker 常用指令大全
- 新增故障排除與生產部署指南
- 新增會員系統相關功能(會員、錢包、點數、會籍、禮物)
- 新增社交登入測試功能
2026-01-13 10:17:37 +08:00

199 lines
5.2 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.
# 會員系統Members功能說明
> 此文件記錄會員系統的設計決策與功能說明,供開發與維護時參閱。
---
## 概述
會員系統用於智能販賣機商城支援消費者透過多種社群管道Line、Google、Facebook加入會員。
**重要區分**
- `users` 表:後台管理員登入帳號
- `members` 表:前台消費者會員帳號
兩者**完全獨立**,無關聯。
---
## 資料表
### 1. `members` - 會員資料
| 欄位 | 類型 | 說明 |
|------|------|------|
| `id` | bigint | 主鍵 |
| `uuid` | string | 唯一識別碼(對外使用) |
| `name` | string | 姓名 |
| `email` | string | 電子郵件(可空) |
| `phone` | string | 手機號碼(可空) |
| `password` | string | 密碼(社群登入可空) |
| `birthday` | date | 生日 |
| `gender` | enum | 性別 |
| `avatar` | string | 頭像 URL |
| `is_active` | boolean | 是否啟用 |
| `email_verified_at` | timestamp | Email 驗證時間 |
### 2. `social_accounts` - 社群帳號
| 欄位 | 類型 | 說明 |
|------|------|------|
| `id` | bigint | 主鍵 |
| `member_id` | bigint | 關聯會員 |
| `provider` | enum | line / google / facebook |
| `provider_id` | string | 社群平台用戶 ID |
| `access_token` | text | 存取令牌 |
| `refresh_token` | text | 刷新令牌 |
| `profile_data` | json | 社群個人資料 |
| `token_expires_at` | timestamp | 令牌到期時間 |
### 3. `member_wallets` - 會員錢包
| 欄位 | 類型 | 說明 |
|------|------|------|
| `member_id` | bigint | FK唯一 |
| `balance` | decimal | 儲值餘額 |
| `bonus_balance` | decimal | 回饋金餘額 |
### 4. `wallet_transactions` - 錢包交易
| 欄位 | 類型 | 說明 |
|------|------|------|
| `type` | enum | deposit/consume/refund/bonus/adjust |
| `amount` | decimal | 異動金額 |
| `balance_after` | decimal | 異動後餘額 |
| `reference_type/id` | | 關聯訂單或活動 |
### 5. `deposit_bonus_rules` - 儲值回饋規則
設定儲值達指定金額可獲得的回饋(固定金額或百分比)。
### 6. `member_points` - 點數帳戶
| 欄位 | 類型 | 說明 |
|------|------|------|
| `available_points` | int | 可用點數 |
| `pending_points` | int | 待生效點數 |
| `expired_points` | int | 已過期(統計) |
| `used_points` | int | 已使用(統計) |
### 7. `point_transactions` - 點數異動
| 欄位 | 類型 | 說明 |
|------|------|------|
| `type` | enum | earn/use/expire/gift/adjust |
| `points` | int | 異動點數 |
| `expires_at` | datetime | **此筆點數到期日** |
> 每筆獲得點數都記錄 `expires_at`,排程任務定期處理過期。
### 8. `point_rules` - 點數規則
設定消費/儲值/註冊等行為可獲得的點數及有效天數。
### 9. `membership_tiers` - 會員等級
| 欄位 | 類型 | 說明 |
|------|------|------|
| `name` | string | 等級名稱 |
| `annual_fee` | decimal | 年費0=免費) |
| `discount_rate` | decimal | 折扣比例 |
| `point_multiplier` | decimal | 點數倍率 |
### 10. `member_memberships` - 會員等級紀錄
記錄會員的等級歸屬及有效期間。
### 11. `gift_definitions` - 禮品定義
| 欄位 | 類型 | 說明 |
|------|------|------|
| `type` | enum | points/coupon/product/discount/cash |
| `trigger` | enum | register/birthday/annual/upgrade/manual |
### 12. `member_gifts` - 禮品發放紀錄
記錄發放給會員的禮品及領取狀態。
---
## ER 關係圖
```
members
├── social_accounts (1:N)
├── member_wallets (1:1)
│ └── wallet_transactions (1:N)
├── member_points (1:1)
│ └── point_transactions (1:N)
├── member_memberships (1:N)
│ └── membership_tiers
└── member_gifts (1:N)
└── gift_definitions
```
---
## 登入流程
```
使用者選擇社群登入
取得 provider + provider_id
查詢 social_accounts
┌────┴────┐
已綁定 未綁定
↓ ↓
取得 member 建立新 member + social_account
↓ ↓
完成登入
```
---
## Email 驗證(可選功能)
若需要 Email 驗證,需設定 `.env` 的 SMTP 並讓 `Member` Model 實作 `MustVerifyEmail`
社群登入時自動標記 `email_verified_at`,僅對手機/密碼註冊要求驗證。
---
## API 端點
| Method | Endpoint | 說明 | 認證 |
|--------|----------|------|------|
| POST | `/api/members/register` | 註冊會員 | 否 |
| POST | `/api/members/login` | 登入 | 否 |
| POST | `/api/members/social-login` | 社群登入 | 否 |
| GET | `/api/members/profile` | 取得個人資料 | 是 |
| PUT | `/api/members/profile` | 更新個人資料 | 是 |
| POST | `/api/members/logout` | 登出 | 是 |
---
## Postman 測試
匯入:`docs/postman/Star_Cloud_Members_API.postman_collection.json`
---
## 社群登入實測
訪問 `/test/social-login` 測試 Google/Line 登入。
---
## 開發進度
| 日期 | 項目 | 狀態 |
|------|------|------|
| 2026-01-12 | 會員核心 (members, social_accounts) | ✅ 完成 |
| 2026-01-12 | 錢包系統 (3 表 + 3 Model) | ✅ 完成 |
| 2026-01-12 | 點數系統 (3 表 + 3 Model) | ✅ 完成 |
| 2026-01-12 | 年度會員 (2 表 + 2 Model) | ✅ 完成 |
| 2026-01-12 | 贈送機制 (2 表 + 2 Model) | ✅ 完成 |