Files
sam-manage/docs/project-management/README.md
hskwon 76c8a94e4f docs: MNG 프로젝트 문서 정비
- 개발 단계별 문서 추가 (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 업데이트
2025-11-30 21:04:19 +09:00

299 lines
7.9 KiB
Markdown

# 프로젝트 진행 관리 시스템 (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 포맷 (새 프로젝트)
```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 포맷 (기존 프로젝트에 작업 추가)
```json
{
"tasks": [
{
"title": "추가할 작업",
"priority": "medium",
"issues": [...]
}
]
}
```
## 사용 예시
### 프로젝트 생성
```bash
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"
}'
```
### 작업 상태 변경
```bash
curl -X POST /api/admin/pm/tasks/1/status \
-H "Content-Type: application/json" \
-d '{"status": "in_progress"}'
```
### 작업 순서 변경
```bash
curl -X POST /api/admin/pm/tasks/project/1/reorder \
-H "Content-Type: application/json" \
-d '{"task_ids": [3, 1, 2]}'
```
### JSON Import
```bash
curl -X POST /api/admin/pm/import \
-H "Content-Type: application/json" \
-d @project.json
```
## 대시보드 요약 API 응답
```json
{
"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): 프로젝트 진행 관리 시스템 구현