Files
MH-DashBoard-organization/docs/INTEGRATION_DB_PLAN.md

4.5 KiB

Integration DB Plan

Goal

organization.xlsx, MH.xlsx, payment.csv를 하나의 통합 DB로 수용하고, 조직 현황, 프로젝트별 분석, 팀/개인별 분석, 자리배치도가 같은 기준 데이터를 바라보도록 정리한다.

Source Summary

1. organization.xlsx

용도:

  • 인원 기본 정보
  • 조직 구조

주요 컬럼:

  • name
  • tag
  • rank
  • pos
  • co
  • cell
  • team
  • div
  • gr
  • part
  • ph
  • mail

해석:

  • tag는 사번 또는 내부 인원 식별자로 사용
  • 조직 정보는 part > gr > div > team > cell 구조

2. MH.xlsx

용도:

  • 일자별 인원 근무 실적
  • 프로젝트별 투입 시간
  • 연장근무 포함 세부 투입 슬롯

주요 컬럼:

  • 근무일자
  • 팀 분류
  • 사원번호
  • 이름
  • 직책
  • user_state
  • 시차시간
  • 메인업무/추가업무1~5/연장근무
    • 프로젝트 코드
    • 프로젝트명
    • 서브 코드
    • 근무시간

추가 시트:

  • Sheet2
    • 프로젝트 코드와 PM 이름 매핑으로 추정

3. payment.csv

용도:

  • 프로젝트별 수입/지출 전표

주요 컬럼:

  • 프로젝트코드
  • 사업명
  • 사업명(표출PJT)
  • 사업명(인트라넷기준)
  • 사업분야
  • 세부분야
  • 부서명
  • 팀명
  • 거래처
  • 적요
  • 차변공급가
  • 대변공급가
  • 지출
  • 수입
  • 구분
  • 프로젝트성격

Raw Layer

원본을 그대로 적재하는 영역.

  • raw_organization_import
  • raw_mh_import
  • raw_payment_import

원칙:

  • 원본 행을 최대한 손대지 않고 저장
  • 파일명, 업로드시각, 배치 ID 같이 저장

Standard Layer

정규화된 운영 테이블.

Members

  • members
    • id
    • employee_id
    • name
    • company
    • rank
    • position
    • phone
    • email
    • active

Organization

  • org_units

    • id
    • unit_type
    • name
    • parent_id
  • member_org_assignments

    • id
    • member_id
    • part_name
    • group_name
    • division_name
    • team_name
    • cell_name
    • effective_from
    • effective_to

Projects

  • projects

    • id
    • project_code
    • project_name
    • display_name
    • intranet_name
    • domain
    • subdomain
    • project_type
    • project_nature
  • project_aliases

    • id
    • project_id
    • alias_type
    • alias_value
  • project_pm_assignments

    • id
    • project_id
    • member_id
    • source

Work Logs

  • work_logs

    • id
    • member_id
    • work_date
    • team_category
    • team_name
    • user_state
    • shift_hours
    • late_flag
  • work_log_segments

    • id
    • work_log_id
    • project_id
    • activity_code
    • hours
    • is_overtime
    • slot_type

Vouchers

  • vouchers
    • id
    • company_name
    • request_date
    • issue_date
    • issue_month
    • account_code
    • management_account_code
    • project_id
    • department_name
    • team_name
    • customer_name
    • summary
    • debit_amount
    • credit_amount
    • expense_amount
    • income_amount
    • voucher_type
    • project_nature
    • note

Reference

  • member_cost_rates
    • 직급별 표준 인건비

Matching Rules

Member Match

우선순위:

  1. MH.xlsx.사원번호
  2. organization.xlsx.tag
  3. 이름 단독 매칭은 보조 규칙으로만 사용

원칙:

  • employee_id가 있으면 그 값으로 병합
  • 이름만 같은 경우 자동 병합 금지

Project Match

우선순위:

  1. project_code
  2. 사업명(인트라넷기준)
  3. 사업명(표출PJT)
  4. 프로젝트명

원칙:

  • project_code를 정식 키로 사용
  • 이름 차이는 project_aliases로 흡수

Migration Strategy

Phase 1

  • payment.html, mh.html을 현재 대시보드 탭에 편입
  • 기존 HTML 기능은 유지
  • 파일은 backend route를 통해 iframe으로 연결

Phase 2

  • raw import 테이블 생성
  • 원본 3종 import 스크립트 작성
  • 파일별 업로드/재적재 배치 ID 관리

Phase 3

  • 표준 테이블 생성
  • raw -> standard 정규화 파이프라인 작성
  • 멤버/프로젝트 매핑 규칙 적용

Phase 4

  • payment.html, mh.html의 파일 직접 파싱 로직을 API 기반 조회로 전환
  • 프론트는 공통 DB 기준으로만 동작

Immediate Next Tasks

  1. Postgres 스키마 초안 SQL 작성
  2. payment.csv import 파서 작성
  3. MH.xlsx import 파서 작성
  4. organization.xlsx import 파서 작성
  5. 멤버/프로젝트 중복 병합 규칙 구현