Back to skills
SKILL.md
Icpc0928 Leo Shop Qa
BSecurity> **AI 測試人員請先讀本文件,再讀 `TEST_CASES.md` 取得所有測試案例。** > 測試完成後,複製 `reports/TEMPLATE.md` 產出報告,Bug 用 `bugs/TEMPLATE.md` 格式記錄。
- 4 stars
- 0 votes
- 0 copies
- 1 view
- Added September 12, 2026
Works with
Security analysis
84/100- Uses curl or wget to download content
- Exfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study
Pro scans all 2 files and shows the line behind each finding
npx -y skills add aibot88/sec_skill_store --skill icpc0928-leo-shop-qa --agent claude-codeAre you the author of Icpc0928 Leo Shop Qa?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-icpc0928-leo-shop-qa)# QA 測試 Skill — Leo Shop (CryptoShop)
> **AI 測試人員請先讀本文件,再讀 `TEST_CASES.md` 取得所有測試案例。**
> 測試完成後,複製 `reports/TEMPLATE.md` 產出報告,Bug 用 `bugs/TEMPLATE.md` 格式記錄。
## 專案概述
這是一個支援加密貨幣支付的電商網站,前後端分離架構。
- **前端**:Next.js 14 (App Router) + TypeScript + Tailwind CSS + DaisyUI v5
- **後端**:Java 25 + Spring Boot + PostgreSQL
- **特色功能**:加密貨幣支付(BTC/ETH/USDT/Polygon)、多語系(中/英)、多幣種、CMS 內容管理
---
## 測試環境
| 項目 | URL |
|------|-----|
| 前台 | https://cryptoshop.aligrich.com |
| 後台 API | https://cryptoshop-api.aligrich.com |
| Admin 後台 | https://cryptoshop.aligrich.com/admin |
| Admin 帳號 | admin@leoshop.com |
| Admin 密碼 | admin123 |
### Admin 登入 API
```bash
curl -s https://cryptoshop-api.aligrich.com/api/admin/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@leoshop.com","password":"admin123"}'
# 回傳 {"token":"..."}
```
### 一般用戶
可在前台 `/register` 自行註冊測試帳號。
---
## 專案結構
### 前端 (`leo-shop/`)
```
src/
├── app/
│ ├── page.tsx # 首頁
│ ├── products/page.tsx # 商品列表
│ ├── products/[slug]/page.tsx # 商品詳情
│ ├── cart/page.tsx # 購物車
│ ├── checkout/page.tsx # 結帳
│ ├── wishlist/page.tsx # 願望清單
│ ├── account/page.tsx # 會員中心
│ ├── about/page.tsx # 關於我們
│ ├── contact/page.tsx # 聯絡我們
│ ├── faq/page.tsx # FAQ(從 API 讀取)
│ └── admin/
│ ├── login/page.tsx # Admin 登入
│ ├── page.tsx # Dashboard
│ ├── products/page.tsx # 商品管理
│ ├── categories/page.tsx # 分類管理
│ ├── orders/page.tsx # 訂單管理
│ ├── crypto-orders/page.tsx # 加密訂單
│ ├── users/page.tsx # 用戶管理
│ ├── admin-users/page.tsx # 管理員管理
│ ├── payment-methods/page.tsx # 支付方式管理
│ ├── settings/page.tsx # 系統設定
│ ├── banners/page.tsx # 輪播管理
│ ├── faqs/page.tsx # FAQ 管理
│ ├── pages/page.tsx # 頁面管理
│ └── team/page.tsx # 團隊管理
├── components/ # 共用元件
├── lib/api.ts # API 串接(fetchAPI / fetchAdminAPI)
├── contexts/ # SiteContext, CurrencyContext
└── config/themes.ts # 主題設定
```
### 後端 (`leo-shop-api/`)
```
src/main/java/com/leoshop/
├── config/
│ ├── SecurityConfig.java # 權限設定(哪些 API 需要登入)
│ ├── CorsConfig.java # CORS(環境變數驅動)
│ └── ScheduledConfig.java # 排程(匯率自動刷新)
├── controller/ # 所有 API endpoint
├── model/ # Entity(對應 DB table)
├── repository/ # JPA Repository
├── service/ # 業務邏輯
├── dto/ # Request/Response DTO
└── security/ # JWT 驗證
```
---
## API Endpoint 總覽
### Public(不需登入)
| Method | Path | 說明 |
|--------|------|------|
| POST | `/api/auth/register` | 用戶註冊 |
| POST | `/api/auth/login` | 用戶登入 |
| POST | `/api/admin/auth/login` | Admin 登入 |
| GET | `/api/products` | 商品列表(支援 `keyword`, `category`, `page`, `size`, `sort`) |
| GET | `/api/products/{slug}` | 商品詳情 |
| GET | `/api/categories` | 分類列表 |
| GET | `/api/site-info` | 站名 + 基礎幣種 |
| GET | `/api/exchange-rates` | 匯率列表 |
| GET | `/api/payment-methods` | 支付方式列表 |
| GET | `/api/banners` | 輪播列表(啟用中) |
| GET | `/api/faqs` | FAQ 列表(啟用中) |
| GET | `/api/pages/{slug}` | 靜態頁面 |
| GET | `/api/team-members` | 團隊成員(啟用中) |
| GET | `/api/orders/shipping-fee` | 運費資訊 |
| GET | `/uploads/**` | 上傳的圖片 |
### 需要用戶登入(Bearer Token)
| Method | Path | 說明 |
|--------|------|------|
| GET | `/api/orders` | 我的訂單 |
| POST | `/api/orders` | 建立訂單 |
| GET | `/api/addresses` | 地址列表 |
| POST | `/api/addresses` | 新增地址 |
| GET | `/api/wishlist` | 願望清單 |
| GET | `/api/wishlist/ids` | 願望清單 ID 列表 |
| POST | `/api/wishlist/{id}` | 加入/移除願望清單 |
| GET | `/api/user/profile` | 個人資料 |
| PUT | `/api/user/profile` | 更新個人資料 |
| PUT | `/api/user/password` | 修改密碼 |
| POST | `/api/payments/crypto/**` | 加密支付相關 |
| GET | `/api/crypto-orders/**` | 加密訂單 |
### 需要 Admin 登入(Bearer Token + ROLE_ADMIN)
| Method | Path | 說明 |
|--------|------|------|
| GET/POST/PUT/DELETE | `/api/admin/products/**` | 商品 CRUD |
| GET/POST/PUT/DELETE | `/api/admin/categories/**` | 分類 CRUD |
| GET | `/api/admin/orders` | 訂單管理(支援搜尋、篩選、分頁) |
| PATCH | `/api/admin/orders/{id}/status` | 更新訂單狀態 |
| GET | `/api/admin/crypto-orders` | 加密訂單管理 |
| PATCH | `/api/admin/crypto-orders/{id}/confirm` | 手動確認加密訂單 |
| GET/POST/PUT/DELETE | `/api/admin/users/**` | 用戶管理 |
| GET/POST/PUT/DELETE | `/api/admin/admin-users/**` | 管理員管理 |
| GET/PUT | `/api/admin/settings` | 系統設定 |
| GET/POST/PUT/DELETE/PATCH | `/api/admin/banners/**` | 輪播管理 |
| GET/POST/PUT/DELETE/PATCH | `/api/admin/faqs/**` | FAQ 管理 |
| GET/POST/PUT/DELETE/PATCH | `/api/admin/pages/**` | 頁面管理 |
| GET/POST/PUT/DELETE/PATCH | `/api/admin/team-members/**` | 團隊管理 |
| GET/PUT/PATCH | `/api/admin/payment-methods/**` | 支付方式管理 |
| POST | `/api/admin/exchange-rates/refresh` | 刷新匯率 |
| POST | `/api/upload/images` | 圖片上傳 |
| DELETE | `/api/upload/images` | 圖片刪除 |
---
## 測試範圍與案例
### P0 — 核心流程(必測)
#### TC-001:用戶註冊
1. 進入 `/register`
2. 填寫 email、密碼、名字
3. 點擊註冊
4. **預期**:註冊成功,跳轉首頁
#### TC-002:用戶登入
1. 進入 `/login`
2. 輸入已註冊的帳密
3. **預期**:登入成功,跳轉首頁,右上角顯示用戶名
#### TC-003:瀏覽商品
1. 進入 `/products`
2. 使用分類篩選、搜尋關鍵字、切換排序
3. 點擊商品進入詳情頁
4. **預期**:列表正確載入、篩選/搜尋結果正確、詳情頁顯示完整資訊
#### TC-004:加入購物車
1. 在商品詳情頁調整數量
2. 點擊「加入購物車」
3. **預期**:購物車 badge 數量更新、進入購物車頁面能看到商品
#### TC-005:購物車操作
1. 修改商品數量
2. 刪除商品
3. 確認金額計算正確(含運費、免運門檻)
4. **預期**:金額即時更新、刪除正常
#### TC-006:結帳流程
1. 從購物車點「前往結帳」
2. 未登入 → **預期**:跳轉登入頁
3. 已登入 → 填寫/選擇地址
4. 選擇支付方式
5. 提交訂單
6. **預期**:訂單建立成功,顯示訂單資訊
#### TC-007:Admin 登入
1. 進入 `/admin/login`
2. 輸入 admin 帳密
3. **預期**:進入 Dashboard
#### TC-008:商品管理 CRUD
1. 新增商品(含圖片上傳)
2. 編輯商品
3. 刪除商品
4. **預期**:前台即時反映變更
### P1 — 管理功能
#### TC-009:訂單管理
1. 搜尋訂單(關鍵字、日期範圍、狀態篩選)
2. 查看訂單詳情
3. 更新訂單狀態
4. **預期**:搜尋結果正確、狀態變更成功
#### TC-010:CMS 輪播管理
1. 新增輪播(含圖片上傳、背景色設定)
2. 編輯輪播
3. 停用/啟用
4. 刪除
5. **預期**:前台首頁即時反映
#### TC-011:CMS FAQ 管理
1. 新增 FAQ
2. 編輯
3. 調整排序
4. 停用/啟用
5. **預期**:前台 `/faq` 即時反映
#### TC-012:系統設定
1. 修改站名
2. 修改基礎幣種
3. 修改運費/免運門檻
4. **預期**:前台標題、價格、運費即時反映
#### TC-013:支付方式管理
1. 啟用/停用支付方式
2. 修改匯率
3. 刷新匯率(CoinGecko)
4. **預期**:結帳頁面反映變更
#### TC-014:用戶管理
1. 查看用戶列表
2. 搜尋用戶
3. **預期**:列表載入正確
#### TC-015:願望清單
1. 未登入點愛心 → **預期**:跳轉登入
2. 已登入加入願望清單
3. 進入 `/wishlist` 查看
4. 移除商品
5. **預期**:操作正常、即時反映
### P2 — 邊界與安全
#### TC-016:權限測試
1. 未帶 Token 打 admin API → **預期**:401
2. 一般用戶 Token 打 admin API → **預期**:403
3. 過期 Token 操作 → **預期**:前端自動跳轉登入
#### TC-017:輸入驗證
1. 商品價格輸入負數 / 0 / 文字
2. 商品名稱空白
3. 搜尋特殊字元(`' " < > & \`)
4. 圖片上傳非圖片檔案
5. 圖片上傳超過 5MB
6. **預期**:適當的錯誤提示,不產生 500 錯誤
#### TC-018:多語系
1. 切換到英文
2. 各頁面文字是否正確翻譯
3. 切回中文
4. **預期**:語言切換正常,無缺漏
#### TC-019:多幣種
1. 切換不同幣種(TWD / USD / EUR 等)
2. 商品價格是否正確換算
3. **預期**:價格即時更新、符號正確
#### TC-020:RWD 響應式
1. 桌面 (1920px)
2. 平板 (768px)
3. 手機 (375px)
4. **預期**:排版正常、按鈕可點擊、無溢出
---
## 測試方式
### UI 測試
使用 `browser` 工具操作前台和後台頁面,用 `snapshot` 檢查頁面狀態。
### API 測試
使用 `exec` 工具執行 curl 指令直接打 API,驗證回傳格式和狀態碼。
```bash
# 範例:取得商品列表
curl -s https://cryptoshop-api.aligrich.com/api/products?page=0&size=5
# 範例:Admin 操作(帶 Token)
TOKEN=$(curl -s https://cryptoshop-api.aligrich.com/api/admin/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@leoshop.com","password":"admin123"}' | jq -r '.token')
curl -s https://cryptoshop-api.aligrich.com/api/admin/orders \
-H "Authorization: Bearer $TOKEN"
```
---
## 回報格式
每個測試案例回報:
```
### TC-XXX:測試名稱
- **狀態**:✅ PASS / ❌ FAIL / ⚠️ WARN
- **步驟**:(重現步驟,FAIL 時必填)
- **預期**:XXX
- **實際**:XXX
- **截圖**:(如有)
- **備註**:(改善建議等)
```
最終產出一份彙整表:
```
| 編號 | 測試項目 | 優先級 | 狀態 | 備註 |
|------|---------|--------|------|------|
| TC-001 | 用戶註冊 | P0 | ✅ | |
| TC-002 | 用戶登入 | P0 | ❌ | 密碼錯誤無提示 |
```
---
## 注意事項
- 測試站資料可以隨意新增修改刪除
- 加密貨幣支付流程在測試站無法真正驗證上鏈,只測 UI 流程
- 圖片上傳後存在 `/uploads/products/` 目錄
- 後端用 JPA `ddl-auto: update`,schema 變更自動套用
- 前端 `NEXT_PUBLIC_API_URL` 是 build time 變數,改了需要 rebuild
Files in this skill
- SKILL.md
- source.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.