操作
バグ #306
未完了🎯 Redmine API拡張: issues & projects API実装 - UI機能完全化
ステータス:
新規
優先度:
高め
担当者:
-
開始日:
2025-06-07
期日:
進捗率:
0%
予定工数:
説明
🎯 Redmine API拡張: issues & projects API実装¶
📊 問題概要¶
現状: users API修正完了後、追加のAPI不整合を発見
影響範囲: Redmine UI のチケット管理・プロジェクト管理機能
優先度: Medium (UI機能完全化のため)
🔍 技術的詳細¶
未実装APIエンドポイント¶
-
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
- チケット更新
-
-
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分)¶
-
issues.js ルーター作成
- 基本CRUD操作実装
- ステータス・優先度・トラッカー対応
- クエリパラメータ対応 (status_id, limit, offset)
-
モックデータ実装
- Redmine互換のサンプルデータ
- 各ステータスごとのテストデータ
- リアルなプロジェクト構造
Phase 2: Projects API実装 (30分)¶
-
projects.js ルーター作成
- プロジェクト一覧・詳細取得
- プロジェクト作成・更新
- identifier による検索対応
-
API統合
- app.js への統合
- エンドポイント情報更新
Phase 3: 動作確認 (15分)¶
- API単体テスト
- UI統合テスト
- Redmine互換性確認
✅ 実装要件¶
必須実装項目¶
-
Issues API エンドポイント
-
GET /api/issues.json
- 一覧取得 -
GET /api/issues/{id}.json
- 詳細取得 -
POST /api/issues.json
- 作成 -
PUT /api/issues/{id}.json
- 更新
-
-
Projects API エンドポイント
-
GET /api/projects.json
- 一覧取得 -
GET /api/projects/{id}.json
- 詳細取得
-
-
クエリパラメータ対応
- status_id, priority_id, tracker_id
- limit, offset (ページング)
- sort, order (ソート)
検証基準¶
- ✅ 全APIエンドポイント 200応答
- ✅ Redmine UI のダッシュボード正常表示
- ✅ チケット一覧・詳細表示正常
- ✅ プロジェクト一覧表示正常
- ✅ レスポンス形式 Redmine互換
🚨 実装上の注意点¶
データ整合性¶
- ID管理: 一意性確保
- 関連性: プロジェクト↔チケット関係
- ステータス管理: 標準Redmineステータスに準拠
パフォーマンス¶
- 大量データ対応: limit/offset実装
- 効率的検索: インデックス考慮
- キャッシュ: 頻繁アクセスデータ
📊 期待される成果¶
完了時点で以下が達成される:
- Redmine UI完全動作: ダッシュボード・チケット・プロジェクト管理
- API整合性確保: フロントエンド・バックエンド完全連携
- 本番レベル機能: 実用的なプロジェクト管理システム
- Phase D前提条件: フロントエンド最適化の基盤完成
ビジネス価値:
- 完全なプロジェクト管理システム提供
- ユーザー体験の大幅向上
- システム信頼性の確立
表示するデータがありません
操作