feat: mock payment flow + flash token page (test mode)

- Mock purchase: order create → mock-pay → FlashToken issued instantly (no real billing)
- Flash page (/flash/:token): esp-web-tools integration, token state display, consume on complete
- Orders route: create/mock-pay/me/refund with full audit logging
- Flash route: GET validate, GET manifest (esp-web-tools compatible), POST consume
- MinIO file proxy (/api/files/*): browser CORS solved, firmware served through backend
- Schema: chipFamily on Project, flashOffset on ProjectFile
- ProjectNew: chipFamily selector + firmware flash offset option
- MyOrders: real order list with flash token status and buttons
- Dockerfile: prisma db push (no migration files needed for dev)
- TOSS_PAYMENT_GUIDE.md: step-by-step guide for real payment after business registration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-05-20 06:18:19 +09:00
parent bdef4b7ae0
commit 9a9967bed8
15 changed files with 1071 additions and 66 deletions

View File

@@ -1,3 +1,8 @@
# ──────────────────────────────────────────────────────
# ESP32 DIY 플랫폼 환경 변수
# cp .env.example .env 후 각 값을 채워주세요
# ──────────────────────────────────────────────────────
# PostgreSQL
DB_PASSWORD=change_this_strong_password
@@ -8,12 +13,17 @@ MINIO_PASSWORD=change_this_strong_password
# JWT (openssl rand -hex 64 로 생성 권장)
JWT_SECRET=change_this_very_long_random_secret_string
# 배포 URL (DNS 설정 후 변경)
# 서비스 외부 접근 URL (DNS 설정 후 변경, 파일 URL에 사용됨)
# 로컬 테스트: http://localhost:3200
# 실 서비스: https://your-domain.com
BASE_URL=http://localhost:3200
# 토스페이먼츠 (https://developers.tosspayments.com 에서 발급)
TOSS_CLIENT_KEY=test_ck_YOUR_KEY
TOSS_SECRET_KEY=test_sk_YOUR_KEY
# ──────────────────────────────────────────────────────
# 토스페이먼츠 (현재 테스트 모드 — 값 없어도 동작함)
# 실결제 전환 시 TOSS_PAYMENT_GUIDE.md 참고
# ──────────────────────────────────────────────────────
TOSS_CLIENT_KEY=test_ck_placeholder
TOSS_SECRET_KEY=test_sk_placeholder
# webflash 연동 내부 토큰 (임의 UUID)
WEBFLASH_INTERNAL_TOKEN=change_this_token