プロジェクト

全般

プロフィール

バグ #306

未完了

🎯 Redmine API拡張: issues & projects API実装 - UI機能完全化

Redmine Admin さんが約19時間前に追加.

ステータス:
新規
優先度:
高め
担当者:
-
開始日:
2025-06-07
期日:
進捗率:

0%

予定工数:

説明

🎯 Redmine API拡張: issues & projects API実装

📊 問題概要

現状: users API修正完了後、追加のAPI不整合を発見
影響範囲: Redmine UI のチケット管理・プロジェクト管理機能
優先度: Medium (UI機能完全化のため)

🔍 技術的詳細

未実装APIエンドポイント

  1. Issues API (チケット管理)

    • GET /api/issues.json?status_id=1&limit=100 - 新規チケット取得
    • GET /api/issues.json?status_id=2&limit=100 - 進行中チケット取得
    • GET /api/issues.json?status_id=5&limit=100 - 完了チケット取得
    • GET /api/issues/{id}.json - 個別チケット取得
    • POST /api/issues.json - チケット作成
    • PUT /api/issues/{id}.json - チケット更新
  2. Projects API (プロジェクト管理)

    • GET /api/projects.json - プロジェクト一覧取得
    • GET /api/projects/{id}.json - 個別プロジェクト取得
    • POST /api/projects.json - プロジェクト作成
    • PUT /api/projects/{id}.json - プロジェクト更新

Redmine互換性要件

Issues API レスポンス形式:

{
  "issues": [
    {
      "id": 1,
      "subject": "サンプルチケット",
      "description": "詳細説明",
      "status": {"id": 1, "name": "新規"},
      "priority": {"id": 2, "name": "通常"},
      "tracker": {"id": 1, "name": "機能"},
      "assigned_to": {"id": 1, "name": "Admin"},
      "project": {"id": 1, "name": "サンプルプロジェクト"},
      "created_on": "2025-01-01T00:00:00Z",
      "updated_on": "2025-01-01T00:00:00Z"
    }
  ],
  "total_count": 1,
  "offset": 0,
  "limit": 25
}

Projects API レスポンス形式:

{
  "projects": [
    {
      "id": 1,
      "identifier": "sample-project",
      "name": "サンプルプロジェクト",
      "description": "プロジェクト説明",
      "status": 1,
      "created_on": "2025-01-01T00:00:00Z",
      "updated_on": "2025-01-01T00:00:00Z"
    }
  ],
  "total_count": 1,
  "offset": 0,
  "limit": 25
}

🛠️ 実装方針

Phase 1: Issues API実装 (45分)

  1. issues.js ルーター作成

    • 基本CRUD操作実装
    • ステータス・優先度・トラッカー対応
    • クエリパラメータ対応 (status_id, limit, offset)
  2. モックデータ実装

    • Redmine互換のサンプルデータ
    • 各ステータスごとのテストデータ
    • リアルなプロジェクト構造

Phase 2: Projects API実装 (30分)

  1. projects.js ルーター作成

    • プロジェクト一覧・詳細取得
    • プロジェクト作成・更新
    • identifier による検索対応
  2. API統合

    • app.js への統合
    • エンドポイント情報更新

Phase 3: 動作確認 (15分)

  1. API単体テスト
  2. UI統合テスト
  3. Redmine互換性確認

✅ 実装要件

必須実装項目

  1. Issues API エンドポイント

    • GET /api/issues.json - 一覧取得
    • GET /api/issues/{id}.json - 詳細取得
    • POST /api/issues.json - 作成
    • PUT /api/issues/{id}.json - 更新
  2. Projects API エンドポイント

    • GET /api/projects.json - 一覧取得
    • GET /api/projects/{id}.json - 詳細取得
  3. クエリパラメータ対応

    • status_id, priority_id, tracker_id
    • limit, offset (ページング)
    • sort, order (ソート)

検証基準

  • ✅ 全APIエンドポイント 200応答
  • ✅ Redmine UI のダッシュボード正常表示
  • ✅ チケット一覧・詳細表示正常
  • ✅ プロジェクト一覧表示正常
  • ✅ レスポンス形式 Redmine互換

🚨 実装上の注意点

データ整合性

  1. ID管理: 一意性確保
  2. 関連性: プロジェクト↔チケット関係
  3. ステータス管理: 標準Redmineステータスに準拠

パフォーマンス

  1. 大量データ対応: limit/offset実装
  2. 効率的検索: インデックス考慮
  3. キャッシュ: 頻繁アクセスデータ

📊 期待される成果

完了時点で以下が達成される:

  1. Redmine UI完全動作: ダッシュボード・チケット・プロジェクト管理
  2. API整合性確保: フロントエンド・バックエンド完全連携
  3. 本番レベル機能: 実用的なプロジェクト管理システム
  4. Phase D前提条件: フロントエンド最適化の基盤完成

ビジネス価値:

  • 完全なプロジェクト管理システム提供
  • ユーザー体験の大幅向上
  • システム信頼性の確立

表示するデータがありません

他の形式にエクスポート: Atom PDF