zioinfo-mail/workspace/guardia-docs/07_SI프로젝트관리_분석설계서.md
DESKTOP-TKLFCPR\ython cfe2901a55 refactor(structure): consolidate all projects under workspace/
- itsm/    -> workspace/guardia-itsm/
- manager/ -> workspace/guardia-manager/
- app/     -> workspace/guardia-messenger/
- manual/  -> workspace/guardia-docs/

workspace/zioinfo-web/ unchanged.
git mv preserves full commit history.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 23:50:56 +09:00

14 KiB
Raw Blame History

GUARDiA ITSM — SI 프로젝트 관리 모듈 분석·설계서

문서 버전: 1.0
작성일: 2026-05-25
대상 독자: 개발자, PM, 이해관계자


목차

  1. 개요 및 목적
  2. 기능 범위
  3. 도메인 모델 설계
  4. API 엔드포인트 설계
  5. 프로세스 흐름
  6. 추가 고려사항 및 확장 방향
  7. SM ↔ SI 통합 연계

1. 개요 및 목적

1.1 현재 vs 확장 범위

현재 (SM 모드)                 확장 (SI 모드)
────────────────              ────────────────────────────
SR 접수·처리                  RFP 요구사항 등록·관리
SSL 인증서 점검               WBS 작성·진척 관리
정기 PM 점검                  프로젝트 이슈·리스크 관리
장애 관리 (Incident)          마일스톤·산출물 관리
온콜·당직 관리                변경 요청(CR) 관리
배치 작업 관리                테스트 관리 (계획→실행→결함)
                              요구사항 추적성 매트릭스(RTM)
                              Gantt 차트 데이터 제공
                              안정화 체크리스트

1.2 SI 프로젝트 생명주기

착수 → 분석 → 설계 → 개발 → 테스트 → 구축 → 안정화 → 종료
 ↑      ↑      ↑      ↑       ↑        ↑       ↑       ↑
RFP   요구사  설계  WBS     테스트   시스템  헬스체크  최종
등록  항분류  산출  진척    실행     이관    SR자동    보고서
             물    관리    결함     체크    생성

2. 기능 범위

2.1 핵심 기능 8개

# 기능 설명
F1 SI 프로젝트 관리 프로젝트 CRUD, 단계(Phase) 전환, 진행률 집계
F2 RFP 요구사항 관리 요구사항 등록·분류·추적, RTM 생성, Excel 일괄 업로드
F3 WBS 관리 계층형 WBS 작성, Gantt 데이터, 진척률·지연 감지
F4 이슈 관리 기술/일정/자원/품질 이슈, 이슈→SR 연동
F5 리스크 관리 확률×영향 점수, 대응 계획, 리스크→이슈 전환
F6 마일스톤·산출물 관리 마일스톤 달성 여부, 산출물 제출·승인 워크플로우
F7 변경 요청(CR) 관리 범위·일정·예산 변경, 결재 연동
F8 테스트 관리 테스트 계획, 케이스, 실행, 결함, 결과 보고서

2.2 고려사항 (구현 시 주의)

① 요구사항 추적성 (Traceability)
   RFP 요구사항 → WBS 항목 → 테스트 케이스 → 결함 → 검증
   req_id FK 체인으로 연결, RTM Excel 자동 생성

② WBS 계층 구조
   재귀 Self-Join (parent_id → id)
   최대 4레벨: 1 프로젝트 > 1.1 단계 > 1.1.1 업무 > 1.1.1.1 작업
   진척률 = 자식 노드 평균 (Leaf 노드만 수동 입력)

③ Gantt 데이터 포맷
   WBS 항목의 planned_start/end, actual_start/end를 JSON 배열로 반환
   프론트엔드에서 D3.js 또는 다른 Gantt 라이브러리로 렌더링

④ 지연 감지 자동화
   스케줄러: 매일 07:00 — planned_end < today AND completion_pct < 100 → 이슈 자동 생성 + 알림

⑤ SM 통합
   SI 안정화 단계 종료 후 → SM 모드로 자동 전환
   SM 서버(CMDB), SR, PM 스케줄에 연동

⑥ 대용량 파일
   산출물 파일 업로드는 기존 attachments 모듈 재사용 (uploads/si_deliverables/)

⑦ 보안
   프로젝트별 접근 권한: ADMIN > PM(해당 프로젝트) > ENGINEER(참여자) > 조회 불가
   계약금액 등 민감 필드는 ADMIN/PM만 조회

3. 도메인 모델 설계

3.1 ER 다이어그램 (핵심 테이블)

tb_si_project (SI 프로젝트)
  ├── tb_si_requirement (요구사항) ─── req_id FK ──► tb_wbs_item
  ├── tb_wbs_item (WBS 항목) ←── parent_id (self-join)
  │     └── tb_wbs_item ←── predecessor FK
  ├── tb_project_issue (이슈)
  │     └── tb_sr_request (SR 연동, nullable FK)
  ├── tb_project_risk (리스크)
  │     └── tb_project_issue (실현 시 이슈 생성)
  ├── tb_project_milestone (마일스톤)
  │     └── tb_project_deliverable (산출물)
  ├── tb_change_request (변경 요청)
  │     └── tb_approval_flow (결재 연동)
  └── tb_si_test_plan (테스트 계획)
        ├── tb_si_test_case (테스트 케이스)
        │     └── tb_si_requirement (요구사항 FK)
        └── tb_si_test_execution (실행 결과)
              └── tb_si_defect (결함)

3.2 Enum 정의

class ProjectPhase(str, Enum):
    INITIATION   = "INITIATION"    # 착수
    ANALYSIS     = "ANALYSIS"      # 분석
    DESIGN       = "DESIGN"        # 설계
    DEVELOPMENT  = "DEVELOPMENT"   # 개발
    TESTING      = "TESTING"       # 테스트
    DEPLOYMENT   = "DEPLOYMENT"    # 구축/이관
    STABILIZATION = "STABILIZATION" # 안정화
    CLOSED       = "CLOSED"        # 종료

class ReqType(str, Enum):
    FUNCTIONAL     = "FUNCTIONAL"      # 기능 요구사항
    NON_FUNCTIONAL = "NON_FUNCTIONAL"  # 비기능 요구사항
    CONSTRAINT     = "CONSTRAINT"      # 제약 사항
    INTERFACE      = "INTERFACE"       # 인터페이스 요구사항

class ReqStatus(str, Enum):
    DRAFT       = "DRAFT"        # 초안
    REVIEWED    = "REVIEWED"     # 검토 완료
    APPROVED    = "APPROVED"     # 승인
    IMPLEMENTED = "IMPLEMENTED"  # 구현 완료
    VERIFIED    = "VERIFIED"     # 검증 완료
    DEFERRED    = "DEFERRED"     # 보류
    DELETED     = "DELETED"      # 삭제

class WbsStatus(str, Enum):
    NOT_STARTED = "NOT_STARTED"
    IN_PROGRESS = "IN_PROGRESS"
    COMPLETED   = "COMPLETED"
    DELAYED     = "DELAYED"
    ON_HOLD     = "ON_HOLD"

class RiskLevel(str, Enum):
    HIGH   = "HIGH"     # 3
    MEDIUM = "MEDIUM"   # 2
    LOW    = "LOW"      # 1

class IssueType(str, Enum):
    TECHNICAL = "TECHNICAL"   # 기술
    SCHEDULE  = "SCHEDULE"    # 일정
    RESOURCE  = "RESOURCE"    # 자원
    QUALITY   = "QUALITY"     # 품질
    SCOPE     = "SCOPE"       # 범위
    EXTERNAL  = "EXTERNAL"    # 외부

class CrType(str, Enum):
    SCOPE    = "SCOPE"     # 범위 변경
    SCHEDULE = "SCHEDULE"  # 일정 변경
    BUDGET   = "BUDGET"    # 예산 변경
    QUALITY  = "QUALITY"   # 품질 기준 변경

class TestResult(str, Enum):
    PASS    = "PASS"
    FAIL    = "FAIL"
    BLOCKED = "BLOCKED"
    SKIP    = "SKIP"

class DefectSeverity(str, Enum):
    CRITICAL = "CRITICAL"
    MAJOR    = "MAJOR"
    MINOR    = "MINOR"
    TRIVIAL  = "TRIVIAL"

4. API 엔드포인트 설계

4.1 SI 프로젝트 (/api/si/projects)

Method Path 설명
GET / 프로젝트 목록
POST / 프로젝트 생성
GET /{id} 프로젝트 상세 (진행률 포함)
PATCH /{id} 프로젝트 수정
PATCH /{id}/phase 단계 전환
GET /{id}/dashboard 프로젝트 대시보드 (이슈수, 리스크수, WBS 진척률)
GET /{id}/gantt Gantt 차트 데이터 (WBS 전체)
POST /{id}/members 프로젝트 멤버 추가

4.2 요구사항 (/api/si/projects/{pid}/requirements)

Method Path 설명
GET / 요구사항 목록 (타입/상태 필터)
POST / 요구사항 단건 등록
POST /bulk Excel 일괄 업로드 (openpyxl 파싱)
GET /{id} 요구사항 상세
PATCH /{id} 요구사항 수정
PATCH /{id}/status 상태 변경
GET /rtm 추적성 매트릭스(RTM) JSON
GET /rtm/excel RTM Excel 다운로드

4.3 WBS (/api/si/projects/{pid}/wbs)

Method Path 설명
GET / WBS 트리 구조 조회
POST / WBS 항목 추가
POST /bulk Excel WBS 일괄 업로드
PATCH /{id} WBS 항목 수정
PATCH /{id}/progress 진척률 업데이트
DELETE /{id} WBS 항목 삭제 (자식 있으면 거부)
GET /gantt Gantt 렌더링용 JSON
GET /delayed 지연 항목 목록

4.4 이슈 (/api/si/projects/{pid}/issues)

Method Path 설명
GET / 이슈 목록 (타입/상태 필터)
POST / 이슈 등록
GET /{id} 이슈 상세
PATCH /{id} 이슈 수정
PATCH /{id}/resolve 이슈 해결 처리
POST /{id}/convert-sr ITSM SR로 변환 등록

4.5 리스크 (/api/si/projects/{pid}/risks)

Method Path 설명
GET / 리스크 목록 (점수 정렬)
POST / 리스크 등록
PATCH /{id} 리스크 수정
PATCH /{id}/occur 리스크 실현 → 이슈 자동 생성
GET /matrix 리스크 매트릭스 데이터 (3×3 격자)

4.6 마일스톤·산출물

Method Path 설명
GET /api/si/projects/{pid}/milestones 마일스톤 목록
POST /api/si/projects/{pid}/milestones 마일스톤 등록
PATCH /api/si/projects/{pid}/milestones/{id}/achieve 달성 처리
GET /api/si/projects/{pid}/deliverables 산출물 목록
POST /api/si/projects/{pid}/deliverables 산출물 등록
POST /api/si/projects/{pid}/deliverables/{id}/submit 제출 처리
PATCH /api/si/projects/{pid}/deliverables/{id}/approve 승인 처리

4.7 변경 요청 (/api/si/projects/{pid}/change-requests)

Method Path 설명
GET / CR 목록
POST / CR 등록
PATCH /{id}/approve CR 승인
PATCH /{id}/reject CR 거부
PATCH /{id}/implement CR 구현 완료

4.8 테스트 관리 (/api/si/projects/{pid}/tests)

Method Path 설명
POST /plans 테스트 계획 생성
POST /plans/{plan_id}/cases 테스트 케이스 등록
POST /plans/{plan_id}/cases/bulk 케이스 일괄 업로드
POST /plans/{plan_id}/execute 테스트 실행 결과 저장
POST /defects 결함 등록
PATCH /defects/{id}/fix 결함 수정 완료
GET /plans/{plan_id}/report 테스트 결과 보고서

5. 프로세스 흐름

5.1 RFP 입력 → WBS 자동 생성 흐름

1. RFP 문서 업로드 (PDF/Word/Excel)
2. 요구사항 수동 입력 또는 Excel 일괄 업로드
   → req_id 자동 채번: REQ-F-001 (기능), REQ-NF-001 (비기능)
3. 요구사항 검토 → APPROVED 상태 전환
4. WBS 자동 생성 트리거:
   APPROVED 요구사항 카테고리 기준으로 WBS 골격 생성
   (분석→설계→개발→테스트 단계별 노드 자동 생성)
5. PM이 WBS 상세 조정 (기간, 담당자 배정)
6. Gantt 차트 확인 → 일정 확정

5.2 WBS 진척 관리 흐름

매일 07:00 스케줄러 실행:
  └── planned_end < today AND completion_pct < 100
        └── status = DELAYED 자동 변경
        └── ProjectIssue 자동 생성 (issue_type=SCHEDULE)
        └── Messenger 알림 → PM/담당자

엔지니어: completion_pct 업데이트
  └── PATCH /wbs/{id}/progress {"completion_pct": 75}
  └── 부모 노드 진척률 자동 재계산 (평균)
  └── 프로젝트 전체 진척률 갱신

5.3 리스크 → 이슈 전환 흐름

리스크 생성 (확률×영향 점수 HIGH×HIGH = 9)
  └── 점수 6 이상: 관리 필요 알림
  └── 점수 9: 즉시 PM 알림

리스크 실현 (PATCH /risks/{id}/occur):
  └── risk.status = OCCURRED
  └── ProjectIssue 자동 생성
      - title: f"[리스크 실현] {risk.title}"
      - issue_type: 리스크 타입 매핑
      - priority: HIGH
  └── Messenger P2 알림

5.4 테스트 → SM 전환 흐름

테스트 완료 조건:
  - 전체 TC Pass율 ≥ 95%
  - Critical/Major 결함 0건
  - 마일스톤 "테스트 완료" 달성

구축(DEPLOYMENT) 단계:
  - 서버 정보 → CMDB 자동 등록 (Server 테이블)
  - SSL 도메인 → SslDomain 자동 등록
  - PM 스케줄 → PmSchedule 자동 생성

안정화(STABILIZATION) 단계:
  - 안정화 SR 자동 생성 (sr_type=INCIDENT, priority=HIGH)
  - 온콜 당직 스케줄 생성

종료(CLOSED):
  - 프로젝트 최종 보고서 Excel 생성
  - SM 모드로 전환 완료 플래그

6. 추가 고려사항 및 확장 방향

6.1 즉시 구현 필요 (Must)

① RTM(Requirements Traceability Matrix) Excel 자동 생성
   요구사항 ID → WBS 코드 → 테스트 케이스 ID → 결함 수 → 검증 상태
   
② WBS Excel 업로드/다운로드
   표준 WBS 양식(xlsx) 업로드 → 자동 파싱 → DB 저장
   
③ 지연 자동 감지 스케줄러
   scheduler.py에 _scan_wbs_delay() 추가
   
④ 안정화→SM 전환 트리거
   DEPLOYMENT 완료 시 CMDB/SSL/PM 자동 생성

6.2 중기 확장 (Should)

① Gantt 차트 프론트엔드
   WBS Gantt API → static/si_gantt.html 구현
   
② 공수 관리 (Man-day)
   WbsItem에 planned_md, actual_md 추가
   
③ 예산 관리
   SiProject에 budget_total, budget_used 연동
   
④ 외부 협력사 포털
   CUSTOMER Role 확장: 협력사 계정에 특정 WBS만 접근
   
⑤ sLLM 연동
   RFP 텍스트 → 요구사항 자동 추출 (내부 sLLM API)

6.3 장기 확장 (Nice)

① 프로젝트 템플릿
   표준 SI 프로젝트 WBS 템플릿 (전자정부, ERP 등)
   
② 시뮬레이션
   일정 변경 시 종료일 영향 시뮬레이션 (Critical Path)
   
③ 유사 프로젝트 비교
   과거 SI 프로젝트 실적 기반 일정/공수 추정 보조

7. SM ↔ SI 통합 연계

SI 프로젝트 종료 후 SM 자산 자동 등록:

SiProject.phase = CLOSED
  └── 각 서버 → Server(CMDB) 자동 등록
  └── 각 도메인 → SslDomain 자동 등록
  └── PM 스케줄 → PmSchedule 자동 생성 (MONTHLY)
  └── 배치 작업 → BatchJob 이관 (있는 경우)
  └── SM SRType.INQUIRY → 안정화 SR 자동 생성

연계 API: POST /api/si/projects/{id}/convert-to-sm
  → 위 자동 등록 트리거
  → 결과 요약 반환 (등록된 서버 수, SSL 수, PM 수)

본 설계서는 구현 진행에 따라 갱신됩니다.