SpendService 實作計畫
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 實作 SpendService.Redeem() 讓用戶花費 $TACHI 換折價券(呼叫合約 burn(),成功後扣 DB),並掛上 POST /api/v1/spend/redeem endpoint。
Architecture: 與 ClaimService 鏡像——reserve-then-burn:先在 DB txn 內鎖定餘額、解析 wallet、扣除 tachi_balances,再呼叫合約 BurnOnChain;若 burn 失敗則 rollback DB。TachiToken.Burn() 仿照 TachiToken.Mint() 新增。
Tech Stack: Go 1.21, Gin, GORM, go-ethereum, SQLite (tests), PostgreSQL (prod)
檔案清單
| 操作 | 路徑 |
|---|---|
| 修改 | backend/internal/contract/tachi_token.go |
| 新增 | backend/internal/services/spend_service.go |
| 新增 | backend/internal/services/spend_service_test.go |
| 新增 | backend/internal/handlers/spend_handler.go |
| 修改 | backend/internal/router/router.go |
| 修改 | backend/cmd/server/main.go |