Files
weeklyreport/claude_temp/02_사업_프로젝트_계층구조_작업계획서.md

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. 향후 확장 고려

  1. 사업별 대시보드: 진척률, 투입시간 통계
  2. 사업 일정 관리: 마일스톤, 일정표
  3. 사업별 산출물 관리: 문서, 결과물 링크
  4. 고객사 공유: 사업 주간보고 외부 공유 링크