BOSS Trading Card Purchase System
LINE連携トレーディングカード買取システム。LIFFアプリ + Google Apps Script + Cloud Run + 内部ダッシュボードで買取業務を完全デジタル化。
Business Overview
LINE アプリ(ユーザー向け)
LIFFアプリでカード買取申請。LINE連携で本人確認・通知をシームレスに実現。ユーザーはLINEを開くだけで買取依頼が完了する。
Google Sheets(業務オペレーション)
GASボタンで承認・却下・金額調整・完了処理。Sheets上で買取案件を一覧管理し、チームが慣れた環境で業務を遂行できる。
Dashboard(KPI・在庫管理)
買取件数・利益・ランク分布・リテンション・LTVなどのKPIをリアルタイムで可視化。経営判断に必要なデータを一箇所に集約。
System Architecture
web / api / worker modes
+ Prisma ORM
Slack Webhook
User Flow
Business Operations
Google Sheets上のGASボタンで業務オペレーションを実行。各アクションはAPI経由でSide Effect Queueに非同期処理を登録する。
承認(Approve)
買取申請を承認。API呼び出し → ステータス更新 → Side Effect Queue → LINE通知・Slack通知を非同期実行。
却下(Reject)
買取申請を却下。理由を記録し、ユーザーにLINE通知で却下理由を送信。
金額調整(Adjust)
査定金額を調整。変更履歴を保持し、ユーザーに更新通知を送信。
完了(Complete)
買取処理を完了。支払い確定、ランクポイント加算、完了通知を非同期実行。
Dashboard
内部ダッシュボードで買取業務のKPIをリアルタイムに可視化。
| 機能 | 説明 |
|---|---|
| 買取件数 | 日次・週次・月次の買取件数推移 |
| 利益 | 粗利・純利のトレンドとマージン率 |
| ランク分布 | ユーザーのランク別分布と遷移状況 |
| 日付範囲フィルタ | 任意期間でのデータ絞り込み |
| リテンションコホート | 月別コホートのリピート率分析 |
| ランク別LTV | ランクごとの顧客生涯価値 |
| キャッシュフロー | 入出金の推移と予測 |
Database Schema
| テーブル | 主要カラム | 説明 |
|---|---|---|
users |
id, line_uid, display_name, rank_id, total_points | LINE連携ユーザー情報。ランクと累計ポイントを保持 |
purchases |
id, user_id, status, total_amount, created_at | 買取申請。ステータス管理(pending/approved/rejected/completed) |
purchase_items |
id, purchase_id, card_name, quantity, unit_price | 買取明細。カード名・数量・単価 |
ranks |
id, name, min_points, bonus_rate | ランク定義。昇格条件とボーナスレート |
side_effects |
id, type, payload, status, executed_at | 非同期処理キュー。LINE通知・Slack通知・集計更新 |
Rank System
買取実績に応じてユーザーランクが昇格。ランクごとにボーナスレートとKPI目標が設定される。
| ランク | 必要ポイント | ボーナスレート | KPI目標 |
|---|---|---|---|
| Bronze | 0 | +0% | 初回買取完了 |
| Silver | 1,000 | +3% | 月2回以上の買取 |
| Gold | 5,000 | +5% | 月4回以上の買取 |
| Platinum | 20,000 | +8% | 月間買取額10万円以上 |
| Diamond | 50,000 | +12% | 月間買取額30万円以上 |
Tech Stack
| カテゴリ | 技術 | 用途 |
|---|---|---|
| Framework | Next.js | フロントエンド + API Routes + Server Actions |
| UI | React + Tailwind CSS | コンポーネントUI + ユーティリティファーストCSS |
| ORM | Prisma | 型安全なDBアクセス、マイグレーション管理 |
| Database | Cloud SQL (PostgreSQL) | メインデータストア |
| Hosting | Cloud Run | コンテナベースのサーバーレス実行環境 |
| Messaging | LINE Messaging API | ユーザー通知・リッチメニュー・Webhook受信 |
| Mini App | LIFF (LINE Front-end Framework) | LINE内ブラウザでのWebアプリ表示 |
| Automation | Google Apps Script | Sheets連携、業務オペレーションボタン |
| Notification | Slack Webhook | チーム向け内部通知 |
Deployment
Cloud Runで3つのサービスモードを運用。同一コードベースから環境変数でモードを切り替える。
| モード | 説明 | 用途 |
|---|---|---|
web |
Next.js SSR + 静的アセット配信 | LIFFアプリ・ダッシュボードUI |
api |
API Routes のみ | GASからのAPI呼び出し・Webhook受信 |
worker |
Side Effect Queue の消費 | 非同期処理(LINE通知・Slack通知・集計) |
PRのベースブランチは staging を使用。mainへの直接PRは作成しない。
PRのベースブランチはmainではなくstagingにする。staging環境での検証後、staging → mainへのリリースPRを別途作成する。