Files
sam-docs/projects/legacy-5130/04_PRODUCTION.md
hskwon 08a8259313 docs: 5130 레거시 분석 문서 및 기존 문서 초기 커밋
- 5130 레거시 시스템 분석 (00_OVERVIEW ~ 08_SAM_COMPARISON)
- MES 프로젝트 문서
- API/프론트엔드 스펙 문서
- 가이드 및 레퍼런스 문서
2025-12-04 18:47:19 +09:00

9.7 KiB

생산/공사 (Production/Work) 분석

개요

  • 디렉토리: /make/, /work/
  • DB 테이블: work, 동적 테이블 (make_*)
  • 주요 기능: 공사 관리, 생산 지시, 작업 진행 추적

디렉토리 구조

/make/ (생산 지시)

/make/
├── _request.php           # 요청 파라미터
├── _row.php               # 행 렌더링
├── insert.php             # 데이터 저장
├── insert_new.php         # 신규 저장
├── list.php               # 생산 목록
├── write.php              # 생산 지시 등록
├── write_form.php         # 생산 지시 폼 (37KB)
├── print.php              # 인쇄
├── print_list.php         # 목록 인쇄
├── make.js                # 자바스크립트 (22KB)
├── get_check_done.php     # 완료 체크
├── get_screenlist.php     # 스크린 목록
├── update_checkbox.php    # 체크박스 업데이트
└── load*.php              # 데이터 로드

/work/ (공사 관리)

/work/
├── _request.php           # 요청 파라미터 (91개 변수)
├── _row.php               # 행 렌더링
├── insert.php             # 데이터 저장
├── list.php               # 공사 목록
├── write_form.php         # 공사 등록 폼
├── view.php               # 공사 상세
├── searchkd.php           # 검색
├── workerlist.php         # 작업자 목록
├── savefile.php           # 파일 저장
└── ...

DB 스키마

work 테이블 (공사 마스터)

CREATE TABLE work (
    num INT AUTO_INCREMENT PRIMARY KEY,

    -- 공사 기본정보
    work_state VARCHAR(50),            -- 공사상태
    workplacename VARCHAR(200),        -- 현장명
    address TEXT,                      -- 현장주소
    chargedperson VARCHAR(50),         -- 공사담당자

    -- 발주처 정보 (1차)
    firstord VARCHAR(100),             -- 1차 발주처 (건설사)
    firstordman VARCHAR(50),           -- 1차 담당자
    firstordmantel VARCHAR(20),        -- 1차 연락처

    -- 발주처 정보 (2차)
    secondord VARCHAR(100),            -- 2차 발주처 (시공사)
    secondordman VARCHAR(50),          -- 2차 담당자
    secondordmantel VARCHAR(20),       -- 2차 연락처

    -- 작업 정보
    worklist TEXT,                     -- 작업 목록
    motormaker VARCHAR(100),           -- 모터 제조사
    power VARCHAR(50),                 -- 전원

    -- 일정 정보
    workday DATE,                      -- 시공 시작일
    endworkday DATE,                   -- 시공 완료일
    cableday DATE,                     -- 결선 시작일
    endcableday DATE,                  -- 결선 완료일

    -- 작업자 정보
    worker VARCHAR(100),               -- 시공팀
    cablestaff VARCHAR(100),           -- 결선팀

    -- AS 정보
    asday DATE,                        -- AS 접수일
    asman VARCHAR(50),                 -- AS 담당자
    asendday DATE,                     -- AS 완료일
    asproday DATE,                     -- AS 처리예정일
    setdate DATE,                      -- 세팅예정일
    asorderman VARCHAR(50),            -- AS 의뢰자
    asordermantel VARCHAR(20),         -- AS 의뢰자 연락처
    aslist TEXT,                       -- AS 내역
    asresult TEXT,                     -- AS 결과
    ashistory TEXT,                    -- AS 이력
    as_state VARCHAR(50),              -- AS 상태
    as_step VARCHAR(50),               -- AS 단계
    as_check TINYINT,                  -- AS 체크
    aswriter VARCHAR(50),              -- AS 등록자
    asfee TINYINT,                     -- AS 유/무상
    asfee_estimate INT,                -- AS 유상금액
    as_checkboxvalue1 CHAR(1),         -- AS 체크1
    as_checkboxvalue2 CHAR(1),         -- AS 체크2
    as_checkboxvalue3 CHAR(1),         -- AS 체크3
    as_checkboxvalue4 CHAR(1),         -- AS 체크4

    -- 클레임 정보
    claimperson VARCHAR(50),           -- 클레임 담당자
    claimtel VARCHAR(20),              -- 클레임 연락처
    claimList TEXT,                    -- 클레임 리스트 (JSON)

    -- 금액 정보
    sum_estimate DECIMAL(15,0),        -- 견적합계
    sum_bill DECIMAL(15,0),            -- 청구합계
    sum_receivable DECIMAL(15,0),      -- 미수금
    sum_deposit DECIMAL(15,0),         -- 입금합계
    sum_claimamount DECIMAL(15,0),     -- 클레임금액
    receivable DECIMAL(15,0),          -- 미수잔액
    totalbill DECIMAL(15,0),           -- 총청구액
    decided_estimate DECIMAL(15,0),    -- 확정견적
    total_receivable DECIMAL(15,0),    -- 총미수금
    total_deposit DECIMAL(15,0),       -- 총입금액
    issued_receivable DECIMAL(15,0),   -- 발행미수금
    issued_amount DECIMAL(15,0),       -- 발행금액

    -- 보증 정보
    warrantyFromDate DATE,             -- 보증 시작일
    warrantyToDate DATE,               -- 보증 종료일
    warrantyPeriod VARCHAR(50),        -- 보증 기간
    warrantyMemo TEXT,                 -- 보증 메모

    -- 인정검사 정보
    certifiedInspector VARCHAR(50),    -- 인정검사원
    certifiedLabelAttachedDate DATE,   -- 인정라벨 부착일

    -- 상태 정보
    checkbox TINYINT,                  -- 계약체결여부
    checkstep VARCHAR(50),             -- 진행단계
    workStatus VARCHAR(50),            -- 시공상태
    cableworkStatus VARCHAR(50),       -- 결선상태
    motorwirestatus VARCHAR(50),       -- 모터결선상태

    -- 체크 플래그
    checkreceivable TINYINT,           -- 미수금 체크
    checkbond TINYINT,                 -- 채권 체크

    -- JSON 데이터
    accountList TEXT,                  -- 회계 리스트 (JSON)
    estimateList TEXT,                 -- 견적 리스트 (JSON)
    equipmentList TEXT,                -- 장비 리스트 (JSON)

    -- 기타
    comment TEXT,                      -- 비고
    outputmemo TEXT,                   -- 출하 메모
    accountnote TEXT,                  -- 회계 메모
    change_worklist TEXT,              -- 변경 작업목록
    as_refer TEXT,                     -- AS 참조
    promiseday DATE,                   -- 약속일

    -- 시스템 필드
    regist_day DATETIME,               -- 등록일
    update_day DATETIME,               -- 수정일
    update_log TEXT,                   -- 수정이력
    searchtag TEXT,                    -- 검색태그
    is_deleted TINYINT DEFAULT 0,      -- 삭제플래그
    hit INT DEFAULT 0,                 -- 조회수

    INDEX idx_workplacename (workplacename),
    INDEX idx_secondord (secondord),
    INDEX idx_work_state (work_state)
);

공사 진행 상태

work_state 상태값

상태 설명 조건
계약전 초기 상태 checkbox = 0
착공전 계약 완료 checkbox = 1
시공중 시공 시작 workday 입력
결선대기 시공 완료 endworkday 입력
결선중 결선 시작 cableday 입력
결선완료 결선 완료 endcableday 입력

AS 상태 (as_state)

상태 설명 조건
미접수 초기 상태 -
접수완료 AS 접수 asday 입력
처리예약 처리 예정 asproday 입력
세팅예약 세팅 예정 setdate 입력
처리완료 AS 완료 asendday 입력

비즈니스 로직

공사 상태 자동 계산

// as/list.php
$state_work = 0;
if ($row["checkbox"] == 0) $state_work = 1;           // 착공전
if (substr($row["workday"], 0, 2) == "20") $state_work = 2;      // 시공중
if (substr($row["endworkday"], 0, 2) == "20") $state_work = 3;   // 결선대기
if (substr($row["cableday"], 0, 2) == "20") $state_work = 4;     // 결선중
if (substr($row["endcableday"], 0, 2) == "20") $state_work = 5;  // 결선완료

생산 지시 처리

// make/insert.php
// screen_state 업데이트
$sql = "UPDATE $DB.$tablename SET screen_state=?, update_log=? WHERE num=?";

관련 디렉토리

벤딩 관련

/bending/            # 벤딩 작업 관리
/bendingfee/         # 벤딩 비용
/bendingmap/         # 벤딩 맵
/etcbending/         # 기타 벤딩

출력물 관련

/output/             # 출하/출력
/egimake/            # EGI 제작
/guiderail/          # 가이드레일
/shutterbox/         # 셔터박스

SAM 마이그레이션 포인트

1. 공사/프로젝트 분리

-- SAM: 프로젝트 마스터
projects (
    id,
    tenant_id,
    project_number,
    project_name,
    customer_id,
    status,              -- draft, contracted, in_progress, completed
    contracted_date,
    start_date,
    end_date
)

-- SAM: 공사 단계
project_phases (
    id,
    project_id,
    phase_type,          -- construction, wiring, testing
    planned_start,
    planned_end,
    actual_start,
    actual_end,
    assigned_team,
    status
)

2. 작업 지시서

-- SAM: 작업 지시
work_orders (
    id,
    project_id,
    work_order_number,
    work_type,           -- production, assembly, installation
    status,
    priority,
    due_date,
    assigned_to
)

-- SAM: 작업 상세
work_order_items (
    id,
    work_order_id,
    item_id,
    quantity,
    completed_quantity,
    status
)

3. 진행 상태 추적

-- SAM: 상태 이력
status_histories (
    id,
    entity_type,         -- project, work_order, phase
    entity_id,
    from_status,
    to_status,
    changed_by,
    changed_at,
    reason
)

참고 파일

  • /work/_request.php - 91개 요청 변수 정의
  • /work/insert.php - 저장 로직
  • /make/write_form.php - 생산 지시 UI
  • /as/list.php - 공사 상태 계산 로직