작업계획서대로 진행
This commit is contained in:
469
claude_temp/02_사업_프로젝트_계층구조_작업계획서.md
Normal file
469
claude_temp/02_사업_프로젝트_계층구조_작업계획서.md
Normal file
@@ -0,0 +1,469 @@
|
||||
# 사업-프로젝트 계층 구조 작업계획서
|
||||
|
||||
> 작성일: 2026-01-10
|
||||
> 예상 기간: 3~5일
|
||||
> 우선순위: 2
|
||||
|
||||
---
|
||||
|
||||
## 1. 기능 개요
|
||||
|
||||
### 1.1 핵심 컨셉
|
||||
- 프로젝트 상위에 **사업(Business)** 개념 추가
|
||||
- 사업 단위로 주간보고 취합
|
||||
- 개발자 주간보고는 기존과 동일, 취합 시 사업 단위로 묶음
|
||||
|
||||
### 1.2 계층 구조
|
||||
```
|
||||
사업 (Business)
|
||||
└─ 프로젝트 A
|
||||
└─ 프로젝트 B
|
||||
└─ 프로젝트 C
|
||||
|
||||
(사업 미지정)
|
||||
└─ 프로젝트 D
|
||||
└─ 프로젝트 E
|
||||
```
|
||||
|
||||
### 1.3 결정 사항
|
||||
|
||||
| # | 항목 | 결정 |
|
||||
|:-:|------|:----:|
|
||||
| 1 | 프로젝트-사업 관계 | **선택 (NULL 허용)** |
|
||||
| 2 | 기존 프로젝트 처리 | **그대로 유지, 필요 시 배정** |
|
||||
| 3 | 취합보고 단위 | **사업별 1개 보고서 (프로젝트별 정리)** |
|
||||
| 4 | 주간보고 작성 시 | **프로젝트 선택 → 사업 자동 표시** |
|
||||
| 5 | 사업 관리 권한 | **매니저 이상** |
|
||||
|
||||
---
|
||||
|
||||
## 2. 데이터 모델
|
||||
|
||||
### 2.1 사업 테이블 (wr_business)
|
||||
|
||||
```sql
|
||||
CREATE TABLE wr_business (
|
||||
business_id SERIAL PRIMARY KEY,
|
||||
|
||||
-- 기본 정보
|
||||
business_code VARCHAR(20) NOT NULL UNIQUE, -- 사업 코드 (예: BIZ-2026-001)
|
||||
business_name VARCHAR(200) NOT NULL, -- 사업명
|
||||
business_description TEXT, -- 사업 설명
|
||||
|
||||
-- 기간
|
||||
start_date DATE, -- 사업 시작일
|
||||
end_date DATE, -- 사업 종료일 (예정)
|
||||
|
||||
-- 상태
|
||||
business_status VARCHAR(20) DEFAULT 'IN_PROGRESS',
|
||||
-- PLANNING: 계획중, IN_PROGRESS: 진행중, COMPLETED: 완료, ON_HOLD: 보류
|
||||
|
||||
-- 담당
|
||||
manager_id INTEGER REFERENCES wr_employee_info(employee_id), -- 사업 담당자
|
||||
|
||||
-- 메타
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW(),
|
||||
created_ip VARCHAR(50),
|
||||
created_email VARCHAR(100),
|
||||
updated_ip VARCHAR(50),
|
||||
updated_email VARCHAR(100)
|
||||
);
|
||||
|
||||
-- 인덱스
|
||||
CREATE INDEX idx_business_status ON wr_business(business_status);
|
||||
CREATE INDEX idx_business_manager ON wr_business(manager_id);
|
||||
CREATE INDEX idx_business_active ON wr_business(is_active);
|
||||
```
|
||||
|
||||
### 2.2 프로젝트 테이블 수정 (wr_project_info)
|
||||
|
||||
```sql
|
||||
-- 기존 테이블에 컬럼 추가
|
||||
ALTER TABLE wr_project_info
|
||||
ADD COLUMN business_id INTEGER REFERENCES wr_business(business_id);
|
||||
|
||||
-- 인덱스 추가
|
||||
CREATE INDEX idx_project_business ON wr_project_info(business_id);
|
||||
```
|
||||
|
||||
### 2.3 사업 주간보고 테이블 (wr_business_weekly_report)
|
||||
|
||||
```sql
|
||||
CREATE TABLE wr_business_weekly_report (
|
||||
report_id SERIAL PRIMARY KEY,
|
||||
|
||||
-- 사업/주차 정보
|
||||
business_id INTEGER NOT NULL REFERENCES wr_business(business_id),
|
||||
report_year INTEGER NOT NULL,
|
||||
report_week INTEGER NOT NULL,
|
||||
week_start_date DATE NOT NULL,
|
||||
week_end_date DATE NOT NULL,
|
||||
|
||||
-- AI 취합 결과
|
||||
ai_summary TEXT, -- AI 취합 요약 (JSON)
|
||||
ai_generated_at TIMESTAMP, -- AI 생성 일시
|
||||
|
||||
-- 상태
|
||||
report_status VARCHAR(20) DEFAULT 'DRAFT', -- DRAFT: 임시, CONFIRMED: 확정
|
||||
confirmed_at TIMESTAMP,
|
||||
confirmed_by INTEGER REFERENCES wr_employee_info(employee_id),
|
||||
|
||||
-- 메타
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW(),
|
||||
created_ip VARCHAR(50),
|
||||
created_email VARCHAR(100),
|
||||
|
||||
-- 유니크 제약
|
||||
UNIQUE(business_id, report_year, report_week)
|
||||
);
|
||||
|
||||
-- 인덱스
|
||||
CREATE INDEX idx_biz_report_business ON wr_business_weekly_report(business_id);
|
||||
CREATE INDEX idx_biz_report_week ON wr_business_weekly_report(report_year, report_week);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. API 설계
|
||||
|
||||
### 3.1 사업 관리 API (매니저 이상)
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| GET | /api/business/list | 사업 목록 조회 |
|
||||
| GET | /api/business/[id]/detail | 사업 상세 조회 |
|
||||
| POST | /api/business/create | 사업 생성 |
|
||||
| PUT | /api/business/[id]/update | 사업 수정 |
|
||||
| DELETE | /api/business/[id]/delete | 사업 삭제 (비활성화) |
|
||||
|
||||
### 3.2 프로젝트-사업 연결 API
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| PUT | /api/project/[id]/assign-business | 프로젝트에 사업 배정 |
|
||||
| GET | /api/business/[id]/projects | 사업 소속 프로젝트 목록 |
|
||||
|
||||
### 3.3 사업 주간보고 API
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| GET | /api/business/report/list | 사업 주간보고 목록 |
|
||||
| GET | /api/business/report/[id]/detail | 사업 주간보고 상세 |
|
||||
| POST | /api/business/[id]/report/generate | 사업 주간보고 AI 취합 생성 |
|
||||
| POST | /api/business/report/[id]/regenerate | AI 재생성 |
|
||||
| PUT | /api/business/report/[id]/confirm | 사업 주간보고 확정 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 화면 설계
|
||||
|
||||
### 4.1 사업 목록 (/business)
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 사업 관리 [+ 사업 등록] │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ 상태: [전체 ▼] 검색: [_______________] [검색] │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ BIZ-2026-001 │ │
|
||||
│ │ PIMS 고도화 사업 🟢 진행중 │ │
|
||||
│ │ 담당: 조효성 | 프로젝트 3개 | 2026.01~2026.12 │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ BIZ-2025-003 │ │
|
||||
│ │ NCCP 유지보수 🟢 진행중 │ │
|
||||
│ │ 담당: 서혜원 | 프로젝트 2개 | 2025.01~2025.12 │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 4.2 사업 상세/수정 (/business/[id])
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 사업 상세 [수정] [삭제] │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ 사업코드: BIZ-2026-001 │
|
||||
│ 사업명: PIMS 고도화 사업 │
|
||||
│ 상태: 🟢 진행중 │
|
||||
│ 기간: 2026-01-01 ~ 2026-12-31 │
|
||||
│ 담당자: 조효성 │
|
||||
│ 설명: 질병관리청 PIMS 시스템 Vue3 전환 및 기능 고도화 │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ 📁 소속 프로젝트 (3) [+ 프로젝트 배정] │
|
||||
│ ─────────────────────────────────────────────────────────────── │
|
||||
│ • 2026-001 PIMS 프론트엔드 개발 진행중 │
|
||||
│ • 2026-002 PIMS 백엔드 API 개발 진행중 │
|
||||
│ • 2026-003 PIMS DB 마이그레이션 계획중 │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ 📊 주간보고 현황 [취합보고 보기] │
|
||||
│ ─────────────────────────────────────────────────────────────── │
|
||||
│ 2026년 2주차: 3명 제출 / 3명 중 │
|
||||
│ 2026년 1주차: 3명 제출 / 3명 중 ✅ 취합완료 │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 4.3 사업 주간보고 (취합) (/business/[id]/report/[year]/[week])
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 📋 PIMS 고도화 사업 - 2026년 2주차 주간보고 │
|
||||
│ [AI 재생성] [확정하기] │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ 기간: 2026-01-06 ~ 2026-01-12 │
|
||||
│ 상태: ⚠️ 임시 (확정 전) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ## 📊 전체 요약 │
|
||||
│ 이번 주 PIMS 고도화 사업은 프론트엔드 대시보드 개발 완료, │
|
||||
│ API 연동 80% 진행, DB 설계 검토 중입니다. │
|
||||
│ │
|
||||
│ ─────────────────────────────────────────────────────────────── │
|
||||
│ │
|
||||
│ ## 🔷 프로젝트별 상세 │
|
||||
│ │
|
||||
│ ### 1. PIMS 프론트엔드 개발 │
|
||||
│ **금주 실적** │
|
||||
│ - 대시보드 화면 개발 완료 (조효성, 16h) │
|
||||
│ - 주간보고 목록 UI 개선 (서혜원, 8h) │
|
||||
│ │
|
||||
│ **차주 계획** │
|
||||
│ - 취합보고 화면 개발 │
|
||||
│ - 사용자 관리 화면 개발 │
|
||||
│ │
|
||||
│ ### 2. PIMS 백엔드 API 개발 │
|
||||
│ **금주 실적** │
|
||||
│ - 인증 API 세션 방식 전환 (조효성, 8h) │
|
||||
│ - 주간보고 CRUD API 완료 (조효성, 12h) │
|
||||
│ │
|
||||
│ **이슈** │
|
||||
│ - DB 연결 타임아웃 간헐적 발생 → 커넥션 풀 설정 조정 필요 │
|
||||
│ │
|
||||
│ ─────────────────────────────────────────────────────────────── │
|
||||
│ │
|
||||
│ ## ⚠️ 주요 이슈 │
|
||||
│ 1. DB 연결 타임아웃 - 커넥션 풀 설정 조정 예정 │
|
||||
│ 2. 고객사 요구사항 추가 - 다음 주 협의 예정 │
|
||||
│ │
|
||||
│ ## 📅 차주 주요 일정 │
|
||||
│ - 1/15(수): 고객사 중간보고 │
|
||||
│ - 1/17(금): DB 마이그레이션 범위 확정 회의 │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
|
||||
* 개발자들이 작성한 주간보고를 AI가 사업/프로젝트 단위로 자동 취합
|
||||
* 별도 작성 없음, 취합만 실행
|
||||
```
|
||||
|
||||
### 4.4 프로젝트 수정 시 사업 선택
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 프로젝트 수정 │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ 프로젝트코드: 2026-001 │
|
||||
│ 프로젝트명: [PIMS 프론트엔드 개발_______] │
|
||||
│ 소속 사업: [PIMS 고도화 사업 ▼] ← 신규 추가 │
|
||||
│ - 선택안함 │
|
||||
│ - PIMS 고도화 사업 │
|
||||
│ - NCCP 유지보수 │
|
||||
│ ... │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 4.5 주간보고 작성 시 사업 표시
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 주간보고 작성 │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ 프로젝트 선택: │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ ☑ PIMS 프론트엔드 개발 │ │
|
||||
│ │ └ 📁 PIMS 고도화 사업 ← 자동 표시 │ │
|
||||
│ │ ☐ NCCP 기능개선 │ │
|
||||
│ │ └ 📁 NCCP 유지보수 │ │
|
||||
│ │ ☐ 사내 시스템 개발 │ │
|
||||
│ │ └ 📁 (사업 미지정) │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. AI 프롬프트 설계
|
||||
|
||||
### 5.1 사업 주간보고 취합 프롬프트
|
||||
|
||||
```
|
||||
당신은 IT 프로젝트 주간보고 취합 전문가입니다.
|
||||
아래 개발자들의 주간보고를 사업 단위로 취합하여 정리해주세요.
|
||||
|
||||
## 사업 정보
|
||||
- 사업명: {business_name}
|
||||
- 사업코드: {business_code}
|
||||
- 보고 기간: {week_start_date} ~ {week_end_date}
|
||||
|
||||
## 소속 프로젝트
|
||||
{projects_list}
|
||||
|
||||
## 개발자 주간보고 원본
|
||||
{weekly_reports_raw}
|
||||
|
||||
## 출력 형식 (JSON)
|
||||
{
|
||||
"overall_summary": "전체 요약 (3-5문장)",
|
||||
"projects": [
|
||||
{
|
||||
"project_id": 1,
|
||||
"project_name": "프로젝트명",
|
||||
"work_summary": "금주 실적 요약",
|
||||
"work_details": [
|
||||
{"task": "작업내용", "assignee": "담당자", "hours": 8}
|
||||
],
|
||||
"plan_summary": "차주 계획 요약",
|
||||
"plan_details": ["계획1", "계획2"],
|
||||
"issues": ["이슈1", "이슈2"]
|
||||
}
|
||||
],
|
||||
"overall_issues": [
|
||||
{"issue": "이슈 내용", "action": "대응 방안"}
|
||||
],
|
||||
"next_week_schedule": [
|
||||
{"date": "1/15(수)", "event": "고객사 중간보고"}
|
||||
],
|
||||
"statistics": {
|
||||
"total_members": 3,
|
||||
"submitted_members": 3,
|
||||
"total_work_hours": 120,
|
||||
"completion_rate": 85
|
||||
}
|
||||
}
|
||||
|
||||
## 규칙
|
||||
1. 프로젝트별로 실적/계획/이슈를 구분하여 정리
|
||||
2. 동일 작업은 통합하고 담당자/시간 합산
|
||||
3. 이슈는 중요도 순으로 정렬
|
||||
4. 숫자(시간, 진척률 등)는 정확히 유지
|
||||
5. JSON 외 다른 텍스트 출력 금지
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 작업 일정
|
||||
|
||||
### Phase 1: 사업 CRUD (1.5일) ✅ 완료
|
||||
- [x] 시작: 2026-01-11 00:28 KST
|
||||
- [x] 완료: 2026-01-11 00:31 KST
|
||||
- [x] 소요시간: 3분
|
||||
|
||||
**작업 내용:**
|
||||
- [x] DB 테이블 생성 (wr_business) ✅ 기존 존재
|
||||
- [x] 사업 CRUD API (매니저 이상 권한) ✅
|
||||
- [x] 사업 목록/상세/등록/수정 화면 ✅
|
||||
- [ ] 메뉴 권한 설정 ⏳ 추후
|
||||
|
||||
**생성된 파일:**
|
||||
- backend/api/business/list.get.ts
|
||||
- backend/api/business/create.post.ts
|
||||
- backend/api/business/[id]/detail.get.ts
|
||||
- backend/api/business/[id]/update.put.ts
|
||||
- backend/api/business/[id]/delete.delete.ts
|
||||
- frontend/business/index.vue
|
||||
- frontend/business/[id].vue
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: 프로젝트-사업 연결 (1일)
|
||||
- [ ] 시작:
|
||||
- [ ] 완료:
|
||||
- [ ] 소요시간:
|
||||
|
||||
**작업 내용:**
|
||||
- [ ] 프로젝트 테이블에 business_id 컬럼 추가
|
||||
- [ ] 프로젝트 수정 화면에 사업 선택 추가
|
||||
- [ ] 프로젝트 배정 API
|
||||
- [ ] 주간보고 작성 시 사업명 표시
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: 사업 주간보고 취합 (1.5일)
|
||||
- [ ] 시작:
|
||||
- [ ] 완료:
|
||||
- [ ] 소요시간:
|
||||
|
||||
**작업 내용:**
|
||||
- [ ] 사업 주간보고 테이블 생성 (wr_business_weekly_report)
|
||||
- [ ] 사업 주간보고 취합 API (AI 활용)
|
||||
- [ ] 사업 주간보고 상세 화면
|
||||
- [ ] 확정 기능
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: 테스트 및 정리 (0.5일)
|
||||
- [ ] 시작:
|
||||
- [ ] 완료:
|
||||
- [ ] 소요시간:
|
||||
|
||||
**작업 내용:**
|
||||
- [ ] 전체 플로우 테스트
|
||||
- [ ] 기존 취합보고와 연계 확인
|
||||
- [ ] 버그 수정
|
||||
|
||||
---
|
||||
|
||||
## 작업 완료 결과
|
||||
|
||||
### Phase별 작업 시간
|
||||
|
||||
| Phase | 작업 내용 | 시작 | 완료 | 소요시간 |
|
||||
|:-----:|----------|:----:|:----:|:--------:|
|
||||
| 1 | 사업 CRUD | 01-11 00:28 | 01-11 00:31 | 3분 ✅ |
|
||||
| 2 | 프로젝트-사업 연결 | - | - | - |
|
||||
| 3 | 사업 주간보고 취합 | - | - | - |
|
||||
| 4 | 테스트 및 정리 | - | - | - |
|
||||
| | | | **총 소요시간** | **-** |
|
||||
|
||||
---
|
||||
|
||||
### 생성/수정된 파일
|
||||
|
||||
| 구분 | 파일 | 작업 |
|
||||
|------|------|:----:|
|
||||
| **DB** | wr_business | 신규 테이블 |
|
||||
| **DB** | wr_business_weekly_report | 신규 테이블 |
|
||||
| **DB** | wr_project_info | 수정 (business_id 추가) |
|
||||
| **API** | backend/api/business/*.ts | 신규 |
|
||||
| **API** | backend/api/business/report/*.ts | 신규 |
|
||||
| **API** | backend/api/project/[id]/assign-business.put.ts | 신규 |
|
||||
| **Frontend** | frontend/pages/business/*.vue | 신규 |
|
||||
| **Frontend** | frontend/pages/project/[id].vue | 수정 |
|
||||
| **Frontend** | frontend/pages/report/weekly/write.vue | 수정 |
|
||||
| **Utils** | backend/utils/openai.ts | 수정 (프롬프트 추가) |
|
||||
|
||||
---
|
||||
|
||||
## 7. 기술 스택
|
||||
|
||||
- **Backend**: Nitro (H3) + PostgreSQL
|
||||
- **Frontend**: Nuxt3 + Vue3 + Bootstrap 5
|
||||
- **AI**: OpenAI GPT-4o-mini (취합 요약)
|
||||
- **인증**: 기존 세션 기반 (requireAuth, requireManager)
|
||||
|
||||
---
|
||||
|
||||
## 8. 기존 기능과의 관계
|
||||
|
||||
| 기존 기능 | 변경 사항 |
|
||||
|----------|----------|
|
||||
| 주간보고 작성 | 프로젝트 옆에 사업명 표시 (읽기전용) |
|
||||
| 프로젝트 관리 | 사업 선택 필드 추가 |
|
||||
| 전체 취합보고 | 유지 (사업 주간보고와 별개) |
|
||||
|
||||
---
|
||||
|
||||
## 9. 향후 확장 고려
|
||||
|
||||
1. **사업별 대시보드**: 진척률, 투입시간 통계
|
||||
2. **사업 일정 관리**: 마일스톤, 일정표
|
||||
3. **사업별 산출물 관리**: 문서, 결과물 링크
|
||||
4. **고객사 공유**: 사업 주간보고 외부 공유 링크
|
||||
Reference in New Issue
Block a user