Business Overview

📱

LINE アプリ(ユーザー向け)

LIFFアプリでカード買取申請。LINE連携で本人確認・通知をシームレスに実現。ユーザーはLINEを開くだけで買取依頼が完了する。

📈

Google Sheets(業務オペレーション)

GASボタンで承認・却下・金額調整・完了処理。Sheets上で買取案件を一覧管理し、チームが慣れた環境で業務を遂行できる。

📊

Dashboard(KPI・在庫管理)

買取件数・利益・ランク分布・リテンション・LTVなどのKPIをリアルタイムで可視化。経営判断に必要なデータを一箇所に集約。

System Architecture

User
LINE / LIFF App
API
Cloud Run Next.js
web / api / worker modes
Automation
GAS + Google Sheets
Data
Cloud SQL PostgreSQL
+ Prisma ORM
External
LINE Messaging API
Slack Webhook
async
Side Effect Queue
非同期処理キュー(LINE通知・Slack通知・集計更新)

User Flow

1
LINE起動
2
LIFF表示
3
会員登録
4
買取申請
5
レコード作成
6
Sheets通知
7
チーム処理
8
ユーザー通知

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運用ルール

PRのベースブランチはmainではなくstagingにする。staging環境での検証後、staging → mainへのリリースPRを別途作成する。