22 KiB
22 KiB
사업-프로젝트 계층 구조 작업계획서
작성일: 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)
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)
-- 기존 테이블에 컬럼 추가
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)
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일) ✅ 완료
- 시작: 2026-01-11 00:28 KST
- 완료: 2026-01-11 00:31 KST
- 소요시간: 3분
작업 내용:
- DB 테이블 생성 (wr_business) ✅ 기존 존재
- 사업 CRUD API (매니저 이상 권한) ✅
- 사업 목록/상세/등록/수정 화면 ✅
- 메뉴 권한 설정 ⏳ 추후
생성된 파일:
- 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. 향후 확장 고려
- 사업별 대시보드: 진척률, 투입시간 통계
- 사업 일정 관리: 마일스톤, 일정표
- 사업별 산출물 관리: 문서, 결과물 링크
- 고객사 공유: 사업 주간보고 외부 공유 링크