- 개발 단계별 문서 추가 (00_OVERVIEW ~ 06_PHASE) - 기술 표준 문서 추가 (99_TECHNICAL_STANDARDS) - 개발 프로세스 및 패턴 문서 추가 - API_FLOW_TESTER_DESIGN, DEV_PROCESS - HTMX_API_PATTERN, LAYOUT_PATTERN - SETUP_GUIDE, MNG_PROJECT_PLAN - 프로젝트 관리 문서 추가 (project-management/) - INDEX.md, MNG_CRITICAL_RULES.md 업데이트
프로젝트 진행 관리 시스템 (PM)
MNG 관리자 패널용 프로젝트/작업/이슈 관리 시스템
개요
Notion 수동 관리를 대체하는 웹 기반 프로젝트 진행 관리 도구로, 클릭 한 번으로 상태 변경이 가능하고 대시보드에서 전체 진행률을 한눈에 파악할 수 있습니다.
데이터 구조
Project (프로젝트)
└── Task (작업) - 1:N
└── Issue (이슈) - 1:N
테이블
| 테이블명 | 설명 |
|---|---|
admin_pm_projects |
프로젝트 |
admin_pm_tasks |
작업 |
admin_pm_issues |
이슈 |
Migration은
api/저장소에 위치
상태값
프로젝트 상태
| 값 | 라벨 | 색상 |
|---|---|---|
active |
진행중 | green |
completed |
완료 | blue |
on_hold |
보류 | yellow |
작업 상태
| 값 | 라벨 | 색상 |
|---|---|---|
todo |
예정 | gray |
in_progress |
진행중 | blue |
done |
완료 | green |
작업 우선순위
| 값 | 라벨 | 색상 |
|---|---|---|
low |
낮음 | gray |
medium |
보통 | yellow |
high |
높음 | red |
이슈 타입
| 값 | 라벨 |
|---|---|
bug |
버그 |
feature |
기능 |
improvement |
개선 |
이슈 상태
| 값 | 라벨 |
|---|---|
open |
열림 |
in_progress |
진행중 |
resolved |
해결됨 |
closed |
닫힘 |
파일 구조
app/
├── Http/
│ ├── Controllers/
│ │ ├── ProjectManagementController.php # Web Controller (뷰 렌더링)
│ │ └── Api/Admin/ProjectManagement/
│ │ ├── ProjectController.php # 프로젝트 API
│ │ ├── TaskController.php # 작업 API
│ │ ├── IssueController.php # 이슈 API
│ │ └── ImportController.php # JSON Import API
│ └── Requests/ProjectManagement/
│ ├── StoreProjectRequest.php
│ ├── UpdateProjectRequest.php
│ ├── StoreTaskRequest.php
│ ├── UpdateTaskRequest.php
│ ├── StoreIssueRequest.php
│ ├── UpdateIssueRequest.php
│ ├── BulkActionRequest.php
│ └── ImportProjectRequest.php
├── Models/Admin/
│ ├── AdminPmProject.php
│ ├── AdminPmTask.php
│ └── AdminPmIssue.php
└── Services/ProjectManagement/
├── ProjectService.php
├── TaskService.php
├── IssueService.php
└── ImportService.php
resources/views/project-management/
├── index.blade.php # 대시보드
├── import.blade.php # JSON Import
└── projects/
├── index.blade.php # 프로젝트 목록
├── create.blade.php # 프로젝트 생성
├── edit.blade.php # 프로젝트 수정
├── show.blade.php # 프로젝트 상세 (작업/이슈 포함)
└── partials/
└── table.blade.php # HTMX 테이블 파셜
API 엔드포인트
프로젝트 API (/api/admin/pm/projects)
| Method | URI | Name | 설명 |
|---|---|---|---|
| GET | / |
index | 목록 조회 |
| POST | / |
store | 생성 |
| GET | /{id} |
show | 상세 조회 |
| PUT | /{id} |
update | 수정 |
| DELETE | /{id} |
destroy | 삭제 (soft) |
| POST | /{id}/restore |
restore | 복원 |
| DELETE | /{id}/force |
forceDestroy | 영구 삭제 |
| POST | /{id}/status |
changeStatus | 상태 변경 |
| POST | /{id}/duplicate |
duplicate | 복제 |
| GET | /stats |
stats | 통계 |
| GET | /dashboard |
dashboard | 대시보드 요약 |
| GET | /dropdown |
dropdown | 드롭다운용 목록 |
작업 API (/api/admin/pm/tasks)
| Method | URI | Name | 설명 |
|---|---|---|---|
| GET | / |
index | 목록 조회 |
| POST | / |
store | 생성 |
| GET | /{id} |
show | 상세 조회 |
| PUT | /{id} |
update | 수정 |
| DELETE | /{id} |
destroy | 삭제 |
| POST | /{id}/status |
changeStatus | 상태 변경 |
| GET | /project/{projectId} |
byProject | 프로젝트별 조회 |
| POST | /project/{projectId}/reorder |
reorder | 순서 변경 |
| GET | /project/{projectId}/stats |
stats | 프로젝트별 통계 |
| GET | /urgent |
urgent | 긴급 작업 목록 |
| POST | /bulk |
bulk | 일괄 작업 |
이슈 API (/api/admin/pm/issues)
| Method | URI | Name | 설명 |
|---|---|---|---|
| GET | / |
index | 목록 조회 |
| POST | / |
store | 생성 |
| GET | /{id} |
show | 상세 조회 |
| PUT | /{id} |
update | 수정 |
| DELETE | /{id} |
destroy | 삭제 |
| POST | /{id}/status |
changeStatus | 상태 변경 |
| GET | /project/{projectId} |
byProject | 프로젝트별 조회 |
| GET | /task/{taskId} |
byTask | 작업별 조회 |
| GET | /stats |
stats | 통계 |
| GET | /open |
open | 열린 이슈 목록 |
| POST | /bulk |
bulk | 일괄 작업 |
Import API (/api/admin/pm/import)
| Method | URI | Name | 설명 |
|---|---|---|---|
| GET | /template |
template | 샘플 JSON 템플릿 |
| POST | /validate |
validate | JSON 구조 검증 |
| POST | / |
import | 새 프로젝트 Import |
| POST | /project/{id}/tasks |
importTasks | 기존 프로젝트에 작업 추가 |
Web 라우트
| URI | Name | 설명 |
|---|---|---|
/project-management |
pm.index | 대시보드 |
/project-management/projects |
pm.projects.index | 프로젝트 목록 |
/project-management/projects/create |
pm.projects.create | 프로젝트 생성 |
/project-management/projects/{id} |
pm.projects.show | 프로젝트 상세 |
/project-management/projects/{id}/edit |
pm.projects.edit | 프로젝트 수정 |
/project-management/import |
pm.import | JSON Import |
JSON Import 기능
JSON 포맷 (새 프로젝트)
{
"project": {
"name": "프로젝트명 (필수)",
"description": "프로젝트 설명",
"status": "active",
"start_date": "2025-01-01",
"end_date": "2025-03-31"
},
"tasks": [
{
"title": "작업 제목 (필수)",
"description": "작업 설명",
"status": "todo",
"priority": "high",
"due_date": "2025-01-15",
"issues": [
{
"title": "이슈 제목 (필수)",
"description": "이슈 설명",
"type": "bug",
"status": "open"
}
]
}
]
}
JSON 포맷 (기존 프로젝트에 작업 추가)
{
"tasks": [
{
"title": "추가할 작업",
"priority": "medium",
"issues": [...]
}
]
}
사용 예시
프로젝트 생성
curl -X POST /api/admin/pm/projects \
-H "Content-Type: application/json" \
-d '{
"name": "SAM MES 개발",
"description": "MES 시스템 개발 프로젝트",
"status": "active",
"start_date": "2025-01-01"
}'
작업 상태 변경
curl -X POST /api/admin/pm/tasks/1/status \
-H "Content-Type: application/json" \
-d '{"status": "in_progress"}'
작업 순서 변경
curl -X POST /api/admin/pm/tasks/project/1/reorder \
-H "Content-Type: application/json" \
-d '{"task_ids": [3, 1, 2]}'
JSON Import
curl -X POST /api/admin/pm/import \
-H "Content-Type: application/json" \
-d @project.json
대시보드 요약 API 응답
{
"success": true,
"data": {
"projects": {
"total": 5,
"active": 3,
"completed": 1,
"on_hold": 1
},
"tasks": {
"total": 25,
"todo": 10,
"in_progress": 8,
"done": 7,
"overdue": 2
},
"issues": {
"total": 15,
"open": 5,
"in_progress": 3,
"resolved": 4,
"closed": 3
},
"recent_projects": [...],
"urgent_tasks": [...]
}
}
관련 커밋
603062e- feat(pm): 프로젝트 진행 관리 시스템 구현