Files
weeklyreport/claude_temp/03_유지보수_업무관리_작업계획서.md

30 KiB

유지보수 업무 요청/처리 관리 작업계획서

작성일: 2026-01-10 예상 기간: 5~7일 우선순위: 3


1. 기능 개요

1.1 핵심 컨셉

  • 기존 엑셀/구글시트로 관리하던 유지보수 업무를 시스템화
  • AI가 다양한 양식의 파일을 파싱 → 표준 형식으로 변환
  • 파싱 결과를 사용자가 검토/수정 후 등록
  • 처리 완료/진행중 업무 → 주간보고 실적 자동 반영

1.2 플로우

[엑셀/구글시트 파일 업로드]
            ↓
      🤖 AI 파싱
  (다양한 양식 → 표준 형식)
            ↓
   [검토 화면에 로드]
   (사용자가 확인/수정)
            ↓
        [등록]
            ↓
   [상태 관리: 미진행→진행중→완료]
            ↓
      [주간보고 작성 시]
            ↓
🤖 완료/진행중 업무 → 실적 자동 작성
   (유사 실적 있으면 AI가 병합)

1.3 결정 사항

# 항목 결정
1 데이터 소스 엑셀/구글시트 파일 업로드
2 양식 통일 안됨 → AI 파싱
3 파싱 결과 검토 화면에서 사용자 확인 후 등록
4 주간보고 연계 완료/진행중 → 실적 자동 작성, 유사 건 병합

2. 데이터 모델

2.1 유지보수 업무 테이블 (wr_maintenance_task)

CREATE TABLE wr_maintenance_task (
    task_id SERIAL PRIMARY KEY,
    
    -- 프로젝트/사업 연결
    project_id INTEGER REFERENCES wr_project_info(project_id),
    business_id INTEGER REFERENCES wr_business(business_id),
    
    -- 요청 정보
    request_date DATE NOT NULL,                    -- 접수일자
    task_title VARCHAR(300) NOT NULL,              -- 제목
    task_content TEXT,                             -- 내용
    requester_name VARCHAR(50),                    -- 요청자
    priority VARCHAR(20) DEFAULT 'MEDIUM',         -- 우선순위: HIGH/MEDIUM/LOW
    
    -- 처리 정보
    assignee_id INTEGER REFERENCES wr_employee_info(employee_id),  -- 담당자
    task_status VARCHAR(20) DEFAULT 'PENDING',     -- 상태
    -- PENDING: 미진행, IN_PROGRESS: 진행중, COMPLETED: 완료
    
    completed_date DATE,                           -- 작업완료일자
    
    -- 반영 여부
    is_dev_deployed BOOLEAN DEFAULT false,         -- 개발서버 반영
    dev_deployed_date DATE,
    is_prod_deployed BOOLEAN DEFAULT false,        -- 운영서버 반영
    prod_deployed_date DATE,
    is_customer_confirmed BOOLEAN DEFAULT false,   -- 고객 확인
    customer_confirmed_date DATE,
    
    -- 주간보고 연계
    linked_report_id INTEGER REFERENCES wr_weekly_report(report_id),
    linked_task_id INTEGER REFERENCES wr_weekly_report_task(task_id),
    
    -- 업로드 출처
    upload_batch_id INTEGER,                       -- 일괄 업로드 시 배치 ID
    source_row_number INTEGER,                     -- 원본 파일 행 번호
    
    -- 메타
    author_id INTEGER NOT NULL REFERENCES wr_employee_info(employee_id),
    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_maint_project ON wr_maintenance_task(project_id);
CREATE INDEX idx_maint_business ON wr_maintenance_task(business_id);
CREATE INDEX idx_maint_status ON wr_maintenance_task(task_status);
CREATE INDEX idx_maint_assignee ON wr_maintenance_task(assignee_id);
CREATE INDEX idx_maint_request_date ON wr_maintenance_task(request_date);
CREATE INDEX idx_maint_completed_date ON wr_maintenance_task(completed_date);

2.2 업로드 배치 테이블 (wr_maintenance_upload_batch)

CREATE TABLE wr_maintenance_upload_batch (
    batch_id SERIAL PRIMARY KEY,
    
    -- 파일 정보
    file_name VARCHAR(200) NOT NULL,
    file_type VARCHAR(20),                         -- EXCEL, GOOGLE_SHEET
    
    -- 처리 결과
    total_rows INTEGER,                            -- 전체 행 수
    parsed_rows INTEGER,                           -- 파싱 성공
    registered_rows INTEGER,                       -- 등록 완료
    skipped_rows INTEGER,                          -- 스킵 (중복 등)
    
    -- AI 파싱 원본
    ai_parsed_json TEXT,                           -- AI 파싱 결과 원본
    
    -- 메타
    uploaded_by INTEGER NOT NULL REFERENCES wr_employee_info(employee_id),
    uploaded_at TIMESTAMP DEFAULT NOW()
);

3. API 설계

3.1 유지보수 업무 API

Method Endpoint 설명
GET /api/maintenance/list 업무 목록 조회 (필터: 상태, 기간, 프로젝트)
GET /api/maintenance/[id]/detail 업무 상세 조회
POST /api/maintenance/create 업무 직접 등록
PUT /api/maintenance/[id]/update 업무 수정
PUT /api/maintenance/[id]/status 상태 변경
DELETE /api/maintenance/[id]/delete 업무 삭제

3.2 파일 업로드/AI 파싱 API

Method Endpoint 설명
POST /api/maintenance/upload/parse 파일 업로드 → AI 파싱
POST /api/maintenance/upload/register 파싱 결과 검토 후 일괄 등록
GET /api/maintenance/upload/history 업로드 이력 조회

3.3 통계 API

Method Endpoint 설명
GET /api/maintenance/stats/weekly 주간 통계 (요청/처리 건수)
GET /api/maintenance/stats/by-project 프로젝트별 통계
GET /api/maintenance/stats/by-assignee 담당자별 통계

3.4 주간보고 연계 API

Method Endpoint 설명
GET /api/maintenance/for-report 주간보고용 업무 목록 (완료/진행중)
POST /api/maintenance/link-to-report 업무 → 주간보고 실적 연계

4. 화면 설계

4.1 유지보수 업무 목록 (/maintenance)

┌─────────────────────────────────────────────────────────────────┐
│ 유지보수 업무 관리                    [파일 업로드] [+ 직접등록] │
├─────────────────────────────────────────────────────────────────┤
│ 프로젝트: [전체 ▼]  상태: [전체 ▼]  기간: [____] ~ [____]      │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│ 📊 이번 주 현황: 요청 12건 | 완료 8건 | 진행중 3건 | 미진행 1건 │
│                                                                 │
├─────────────────────────────────────────────────────────────────┤
│ 접수일 | 제목              | 요청자 | 담당자 | 상태   | 반영   │
│ ────────────────────────────────────────────────────────────── │
│ 01/10 | 로그인 오류 수정   | 김담당 | 조효성 | ✅완료 | 🟢🟢🟢 │
│ 01/09 | 보고서 양식 변경   | 박과장 | 서혜원 | 🔄진행 | 🟢⚪⚪ │
│ 01/09 | 엑셀 다운로드 추가 | 김담당 | -      | ⏳미진행| ⚪⚪⚪ │
│ 01/08 | 대시보드 통계 오류 | 이대리 | 조효성 | ✅완료 | 🟢🟢🟢 │
│ ...                                                             │
└─────────────────────────────────────────────────────────────────┘

* 반영: 개발/운영/고객확인 (🟢완료 ⚪미완료)

4.2 파일 업로드 → AI 파싱 (/maintenance/upload)

┌─────────────────────────────────────────────────────────────────┐
│ 유지보수 업무 파일 업로드                                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌───────────────────────────────────────────────────────────┐ │
│  │                                                           │ │
│  │     📁 엑셀 또는 구글시트 파일을 드래그하세요              │ │
│  │                                                           │ │
│  │              [파일 선택]                                  │ │
│  │                                                           │ │
│  │     지원 형식: .xlsx, .xls, .csv                          │ │
│  │                                                           │ │
│  └───────────────────────────────────────────────────────────┘ │
│                                                                 │
│  프로젝트: [PIMS 유지보수 ▼]   ← 기본 프로젝트 선택            │
│                                                                 │
│                              [업로드 및 분석]                   │
└─────────────────────────────────────────────────────────────────┘

            ↓ AI 파싱 중... ↓

┌─────────────────────────────────────────────────────────────────┐
│ 🤖 AI 분석 결과                              [전체선택] [등록]  │
├─────────────────────────────────────────────────────────────────┤
│ 파일: 유지보수현황_202601.xlsx                                  │
│ 분석: 15건 감지 (신규 12건, 중복 3건)                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│ ☑ #1 (신규)                                                    │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 접수일: 2026-01-10     요청자: 김담당                       │ │
│ │ 제목: [로그인 오류 수정__________________________]          │ │
│ │ 내용: [세션 만료 후 재로그인 시 오류 발생________]          │ │
│ │ 우선순위: [높음 ▼]  담당자: [조효성 ▼]  상태: [완료 ▼]     │ │
│ │ 완료일: [2026-01-10]                                        │ │
│ │ 반영: ☑개발 ☑운영 ☑고객확인                                │ │
│ └─────────────────────────────────────────────────────────────┘ │
│                                                                 │
│ ☑ #2 (신규)                                                    │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 접수일: 2026-01-09     요청자: 박과장                       │ │
│ │ 제목: [보고서 양식 변경__________________________]          │ │
│ │ ...                                                         │ │
│ └─────────────────────────────────────────────────────────────┘ │
│                                                                 │
│ ☐ #3 (⚠️ 중복 - 기존 건과 유사)                                │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 제목: 로그인 문제 수정                                      │ │
│ │ 💡 유사 건: #1234 "로그인 오류 수정" (01/10 등록)           │ │
│ │         [병합] [별도 등록] [스킵]                           │ │
│ └─────────────────────────────────────────────────────────────┘ │
│                                                                 │
│                          [선택 항목 등록 (10건)]                │
└─────────────────────────────────────────────────────────────────┘

4.3 업무 상세/수정 (/maintenance/[id])

┌─────────────────────────────────────────────────────────────────┐
│ 유지보수 업무 상세                           [수정] [삭제]      │
├─────────────────────────────────────────────────────────────────┤
│ 프로젝트: PIMS 유지보수                                        │
│ 접수일: 2026-01-10                                             │
│ 요청자: 김담당 (고객사)                                        │
├─────────────────────────────────────────────────────────────────┤
│ 제목: 로그인 오류 수정                                         │
│ 우선순위: 🔴 높음                                               │
├─────────────────────────────────────────────────────────────────┤
│ 내용:                                                          │
│ 세션 만료 후 재로그인 시 "잘못된 요청입니다" 오류 발생         │
│ 크롬 브라우저에서만 발생, IE는 정상                            │
├─────────────────────────────────────────────────────────────────┤
│ 📋 처리 현황                                                    │
│ ─────────────────────────────────────────────────────────────── │
│ 담당자: 조효성                                                  │
│ 상태: ✅ 완료 (2026-01-10)                                      │
│                                                                 │
│ ☑ 개발서버 반영 (2026-01-10)                                   │
│ ☑ 운영서버 반영 (2026-01-10)                                   │
│ ☑ 고객 확인 (2026-01-10)                                       │
├─────────────────────────────────────────────────────────────────┤
│ 🔗 주간보고 연계                                                │
│ ─────────────────────────────────────────────────────────────── │
│ 연계됨: 2026년 2주차 주간보고 - 조효성                         │
│        "PIMS 로그인 세션 오류 수정 (2h)"                        │
└─────────────────────────────────────────────────────────────────┘

4.4 주간보고 작성 시 연계

┌─────────────────────────────────────────────────────────────────┐
│ 💡 이번 주 처리한 유지보수 업무가 있습니다                      │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│ ☑ 로그인 오류 수정 (완료, 01/10)                               │
│   → 실적 추가: "PIMS 로그인 세션 오류 수정"                    │
│   → 예상 시간: [2]시간                                         │
│                                                                 │
│ ☑ 대시보드 통계 오류 (완료, 01/08)                             │
│   → 실적 추가: "대시보드 월별 통계 쿼리 수정"                  │
│   → 예상 시간: [1]시간                                         │
│                                                                 │
│ ☐ 보고서 양식 변경 (진행중)                                    │
│   → 실적 추가 안함 (진행중은 선택)                             │
│                                                                 │
│ ─────────────────────────────────────────────────────────────── │
│ ⚠️ 유사한 기존 실적이 있습니다:                                 │
│                                                                 │
│ "로그인 오류 수정" ↔ 기존: "PIMS 인증 버그 수정 (1h)"          │
│   [병합 (3h로 합산)] [별도 유지] [기존 건에 추가]              │
│                                                                 │
│                    [선택 항목 실적에 추가]                      │
└─────────────────────────────────────────────────────────────────┘

4.5 통계 대시보드 (/maintenance/stats)

┌─────────────────────────────────────────────────────────────────┐
│ 📊 유지보수 업무 통계                                           │
├─────────────────────────────────────────────────────────────────┤
│ 기간: [2026-01 ▼]  프로젝트: [전체 ▼]                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  이번 달 현황                                                   │
│  ┌──────────┬──────────┬──────────┬──────────┐                 │
│  │ 총 요청  │  완료    │  진행중  │  미진행  │                 │
│  │   45건   │  32건    │   8건    │   5건    │                 │
│  │          │  (71%)   │  (18%)   │  (11%)   │                 │
│  └──────────┴──────────┴──────────┴──────────┘                 │
│                                                                 │
│  주간 추이 (최근 4주)                                           │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │     12 ████████████                                     │   │
│  │     10 ██████████  ████████                             │   │
│  │      8 ████████    ██████    ████████████               │   │
│  │      6 ██████      ████      ██████████                 │   │
│  │        ──────────────────────────────────               │   │
│  │        1주차      2주차      3주차      4주차            │   │
│  │        ■ 요청  ■ 완료                                   │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│  담당자별 처리 현황                                             │
│  ─────────────────────────────────────────────────────────────  │
│  조효성: ████████████████ 18건                                 │
│  서혜원: ████████████ 14건                                     │
│  미배정: ████ 5건                                               │
│                                                                 │
│  평균 처리 시간: 1.8일                                          │
│  SLA 준수율: 92% (24시간 내 완료 기준)                          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

5. AI 프롬프트 설계

5.1 파일 파싱 프롬프트

당신은 엑셀/CSV 파일에서 유지보수 업무 데이터를 추출하는 전문가입니다.
다양한 양식의 파일에서 아래 표준 형식으로 데이터를 변환해주세요.

## 입력 데이터
{file_content_as_text}

## 추출할 필드
- request_date: 접수일자 (YYYY-MM-DD)
- title: 제목/요약
- content: 상세 내용
- requester: 요청자
- priority: 우선순위 (HIGH/MEDIUM/LOW, 긴급/높음→HIGH, 보통/일반→MEDIUM, 낮음→LOW)
- assignee: 담당자
- status: 상태 (PENDING/IN_PROGRESS/COMPLETED)
  - 미진행/대기/접수 → PENDING
  - 진행/진행중/처리중 → IN_PROGRESS
  - 완료/종료/해결 → COMPLETED
- completed_date: 완료일자 (있는 경우)
- is_dev_deployed: 개발 반영 여부 (true/false)
- is_prod_deployed: 운영 반영 여부 (true/false)
- is_customer_confirmed: 고객 확인 여부 (true/false)

## 출력 형식 (JSON)
{
  "parsed_rows": [
    {
      "row_number": 1,
      "request_date": "2026-01-10",
      "title": "로그인 오류 수정",
      "content": "세션 만료 후 재로그인 시 오류",
      "requester": "김담당",
      "priority": "HIGH",
      "assignee": "조효성",
      "status": "COMPLETED",
      "completed_date": "2026-01-10",
      "is_dev_deployed": true,
      "is_prod_deployed": true,
      "is_customer_confirmed": true,
      "confidence": 0.95,
      "parse_notes": "정상 파싱"
    }
  ],
  "summary": {
    "total_rows": 15,
    "parsed_successfully": 14,
    "parse_failed": 1,
    "notes": "1행은 헤더로 스킵"
  }
}

## 규칙
1. 헤더 행은 자동 감지하여 스킵
2. 빈 행은 스킵
3. 날짜는 다양한 형식 인식 (01/10, 2026.01.10, 1월10일 등)
4. 상태/우선순위는 유사 표현 매핑
5. 파싱 불확실한 필드는 confidence 낮게, parse_notes에 이유 기재
6. JSON 외 다른 텍스트 출력 금지

5.2 중복/유사 건 감지 프롬프트

당신은 유지보수 업무의 중복/유사 건을 판단하는 전문가입니다.

## 신규 업무
- 제목: {new_title}
- 내용: {new_content}
- 접수일: {new_date}

## 기존 업무 목록
{existing_tasks_json}

## 판단 기준
1. 제목이 80% 이상 유사하면 중복 의심
2. 내용의 핵심 키워드가 동일하면 중복 의심
3. 같은 날짜에 동일 요청자가 등록한 유사 건은 중복 가능성 높음

## 출력 형식 (JSON)
{
  "is_duplicate": true,
  "similar_task_id": 1234,
  "similarity_score": 0.85,
  "reason": "제목과 내용이 85% 유사, 동일 요청자",
  "recommendation": "MERGE | SKIP | REGISTER_SEPARATE"
}

5.3 주간보고 실적 생성 프롬프트

당신은 유지보수 업무를 주간보고 실적으로 변환하는 전문가입니다.

## 이번 주 처리 업무
{maintenance_tasks_json}

## 기존 주간보고 실적
{existing_report_tasks_json}

## 작업
1. 각 유지보수 업무를 주간보고 실적 문장으로 변환
2. 기존 실적 중 유사한 것이 있으면 병합 제안
3. 예상 소요 시간 추정

## 출력 형식 (JSON)
{
  "generated_tasks": [
    {
      "maintenance_task_id": 123,
      "report_description": "PIMS 로그인 세션 오류 수정",
      "estimated_hours": 2,
      "similar_existing": {
        "task_id": 456,
        "description": "PIMS 인증 버그 수정",
        "merge_recommendation": "MERGE | KEEP_SEPARATE",
        "merged_description": "PIMS 로그인/인증 오류 수정",
        "merged_hours": 3
      }
    }
  ]
}

6. 작업 일정

Phase 1: 기본 CRUD (2일)

  • 시작:
  • 완료:
  • 소요시간:

작업 내용:

  • DB 테이블 생성 (wr_maintenance_task, wr_maintenance_upload_batch)
  • 유지보수 업무 CRUD API
  • 업무 목록/상세/등록/수정 화면
  • 상태 변경 기능

Phase 2: 파일 업로드 + AI 파싱 (2일)

  • 시작:
  • 완료:
  • 소요시간:

작업 내용:

  • 파일 업로드 API (엑셀/CSV)
  • AI 파싱 프롬프트 구현
  • 파싱 결과 검토 화면
  • 중복 감지 로직
  • 일괄 등록 기능

Phase 3: 주간보고 연계 (2일)

  • 시작:
  • 완료:
  • 소요시간:

작업 내용:

  • 주간보고 작성 시 유지보수 업무 조회
  • AI 실적 문장 생성
  • 유사 실적 병합 기능
  • 연계 정보 저장

Phase 4: 통계 + 테스트 (1일)

  • 시작:
  • 완료:
  • 소요시간:

작업 내용:

  • 통계 API (주간/월간/담당자별)
  • 통계 대시보드 화면
  • 전체 테스트 및 버그 수정

작업 완료 결과

Phase별 작업 시간

Phase 작업 내용 시작 완료 소요시간
1 기본 CRUD - - -
2 파일 업로드 + AI 파싱 - - -
3 주간보고 연계 - - -
4 통계 + 테스트 - - -
총 소요시간 -

생성/수정된 파일

구분 파일 작업
DB wr_maintenance_task 신규 테이블
DB wr_maintenance_upload_batch 신규 테이블
API backend/api/maintenance/*.ts 신규
API backend/api/maintenance/upload/*.ts 신규
API backend/api/maintenance/stats/*.ts 신규
Frontend frontend/pages/maintenance/*.vue 신규
Frontend frontend/pages/report/weekly/write.vue 수정
Utils backend/utils/openai.ts 수정 (프롬프트 추가)
Utils backend/utils/excel-parser.ts 신규

7. 기술 스택

  • Backend: Nitro (H3) + PostgreSQL
  • Frontend: Nuxt3 + Vue3 + Bootstrap 5
  • 파일 처리: SheetJS (xlsx)
  • AI: OpenAI GPT-4o-mini (파싱, 중복감지, 실적생성)
  • 인증: 기존 세션 기반 (requireAuth)

8. 향후 확장 고려

  1. 구글 시트 직접 연동: URL 입력 → API로 직접 읽기
  2. 알림 기능: 긴급 건 등록 시 담당자 알림
  3. SLA 관리: 처리 기한 설정 및 초과 알림
  4. 고객 포털: 고객이 직접 요청 등록/상태 조회
  5. 월간 보고서: 월별 유지보수 현황 자동 생성