feat: 기존 작업에 이슈 추가 Import 기능
- ImportService에 importIssuesToTask 메서드 추가
- ImportController에 importIssues 액션 추가
- ImportIssuesRequest FormRequest 생성
- POST /api/admin/pm/import/task/{taskId}/issues 라우트 추가
- import.blade.php UI에 '기존 작업에 이슈 추가' 모드 추가
- ImportProjectRequest에 tasks 레벨 검증 규칙 보완
This commit is contained in:
44
app/Http/Requests/ProjectManagement/ImportIssuesRequest.php
Normal file
44
app/Http/Requests/ProjectManagement/ImportIssuesRequest.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\ProjectManagement;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ImportIssuesRequest extends FormRequest
|
||||
{
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'issues' => 'required|array|min:1',
|
||||
'issues.*.title' => 'required|string|max:255',
|
||||
'issues.*.description' => 'nullable|string',
|
||||
'issues.*.type' => 'nullable|in:bug,feature,improvement',
|
||||
'issues.*.status' => 'nullable|in:open,in_progress,resolved,closed',
|
||||
// 일정 관련
|
||||
'issues.*.start_date' => 'nullable|date',
|
||||
'issues.*.due_date' => 'nullable|date|after_or_equal:issues.*.start_date',
|
||||
'issues.*.estimated_hours' => 'nullable|integer|min:0',
|
||||
'issues.*.is_urgent' => 'nullable|boolean',
|
||||
// 팀/담당자/고객사 (하이브리드)
|
||||
'issues.*.department_id' => 'nullable|integer|exists:departments,id',
|
||||
'issues.*.team' => 'nullable|string|max:100',
|
||||
'issues.*.assignee_id' => 'nullable|integer|exists:users,id',
|
||||
'issues.*.assignee_name' => 'nullable|string|max:100',
|
||||
'issues.*.client' => 'nullable|string|max:100',
|
||||
];
|
||||
}
|
||||
|
||||
public function messages(): array
|
||||
{
|
||||
return [
|
||||
'issues.required' => 'issues 배열은 필수입니다.',
|
||||
'issues.min' => '최소 1개 이상의 이슈가 필요합니다.',
|
||||
'issues.*.title.required' => '각 이슈의 title은 필수입니다.',
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user