Skip to content

管理ダッシュボード API設計

API概要

Next.js API Routes(/api/)でバックエンドAPIを提供。既存の投稿エンジン(src/)のモジュールを再利用する。

エンドポイント一覧

レース・予想データ

メソッドパス説明
GET/api/races当日のレース一覧を取得
GET/api/races?date=YYYY-MM-DD指定日のレース一覧を取得
GET/api/prediction/:raceId指定レースの予想データを取得
GET/api/preview/:raceId競馬予想サイトのレースデータをプレビュー用に取得

投稿管理

メソッドパス説明
GET/api/posts投稿一覧(ステータス・日付フィルタ対応)
POST/api/posts投稿ドラフトを作成
PUT/api/posts/:id投稿を更新(テキスト編集・ステータス変更)
POST/api/posts/:id/publishXに投稿実行
POST/api/posts/generateテンプレートから投稿文を自動生成

収支・分析

メソッドパス説明
GET/api/balance/summary収支サマリー(period=daily/weekly/monthly)
GET/api/balance/records収支レコード一覧
GET/api/analytics/followersフォロワー推移データ
GET/api/analytics/engagementエンゲージメントデータ

データモデル

Post(投稿)

typescript
interface Post {
  id: string
  raceId: string           // analysis_YYYYCCKKDDRR
  race: RaceInfo
  text: string             // 投稿テキスト
  status: 'draft' | 'approved' | 'posted' | 'failed'
  tweetId?: string         // 投稿後のツイートID
  createdAt: string
  updatedAt: string
  postedAt?: string
}

レスポンス形式

typescript
// 成功
{ success: true, data: T }

// エラー
{ success: false, error: string }

投稿生成フロー

1. GET /api/races           → レース一覧を取得
2. ユーザーがレースを選択
3. GET /api/preview/:raceId → 予想サイトデータをプレビュー表示
4. POST /api/posts/generate → テンプレートから投稿文を自動生成
5. ユーザーが投稿文を確認・編集
6. PUT /api/posts/:id       → status: 'approved' に更新
7. POST /api/posts/:id/publish → Xに投稿

認証

  • X API認証情報はサーバーサイドの環境変数から取得
  • 管理画面へのアクセス制御は Cloudflare Access で実現