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

8.2 KiB

품질/AS (Quality/After-Service) 분석

개요

  • 디렉토리: /as/
  • DB 테이블: work (공사 테이블 내 AS 컬럼 사용)
  • 주요 기능: AS 접수, 처리 추적, 클레임 관리, 보증 관리

디렉토리 구조

/as/
├── list.php                   # AS 목록 (54KB)
├── view.php                   # AS 상세 (56KB)
├── write_form.php             # AS 등록/수정 폼 (54KB)
├── func.php                   # 공통 함수
├── delete.php                 # AS 삭제
├── delete_ripple.php          # 연관 삭제
├── print_area.php             # 인쇄 영역
├── print_aslist.php           # AS 목록 인쇄
├── outputlist.php             # 출력 목록
└── outputview.php             # 출력 뷰

DB 스키마

work 테이블 - AS 관련 컬럼

-- AS는 별도 테이블이 아닌 work 테이블의 컬럼으로 관리
-- work 테이블에 AS 관련 필드 포함

-- AS 기본 정보
as_check TINYINT,                  -- AS 체크 (1: AS 대상)
as_state VARCHAR(50),              -- AS 상태 (미접수, 접수완료, 처리예약, 세팅예약, 처리완료)
as_step VARCHAR(50),               -- AS 단계

-- AS 일정 정보
asday DATE,                        -- AS 접수일
asproday DATE,                     -- AS 처리예정일
setdate DATE,                      -- 세팅예정일
asendday DATE,                     -- AS 완료일

-- AS 담당자 정보
asman VARCHAR(50),                 -- AS 담당자
aswriter VARCHAR(50),              -- AS 등록자
asorderman VARCHAR(50),            -- AS 의뢰자
asordermantel VARCHAR(20),         -- AS 의뢰자 연락처

-- AS 내용
aslist TEXT,                       -- AS 내역
asresult TEXT,                     -- AS 결과
ashistory TEXT,                    -- AS 이력
as_refer TEXT,                     -- AS 참조

-- AS 비용
asfee TINYINT,                     -- AS 유/무상 (0: 무상, 1: 유상)
asfee_estimate INT,                -- AS 유상금액

-- 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

클레임 관련 컬럼

-- work 테이블 내 클레임 필드
claimperson VARCHAR(50),           -- 클레임 담당자
claimtel VARCHAR(20),              -- 클레임 연락처
claimList TEXT,                    -- 클레임 리스트 (JSON)
sum_claimamount DECIMAL(15,0),     -- 클레임금액

보증 관련 컬럼

-- work 테이블 내 보증 필드
warrantyFromDate DATE,             -- 보증 시작일
warrantyToDate DATE,               -- 보증 종료일
warrantyPeriod VARCHAR(50),        -- 보증 기간
warrantyMemo TEXT,                 -- 보증 메모

인정검사 관련 컬럼

-- work 테이블 내 인정검사 필드
certifiedInspector VARCHAR(50),    -- 인정검사원
certifiedLabelAttachedDate DATE,   -- 인정라벨 부착일

AS 상태 흐름

as_state 상태값

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

상태 전이 다이어그램

[미접수] → [접수완료] → [처리예약] → [처리완료]
                    ↘ [세팅예약] ↗

비즈니스 로직

AS 목록 조회 (as/list.php)

// AS 대상 조회 조건
$a = "(as_check = '1') or (asday <> '0000-00-00') order by num desc";

// 상태별 필터링
if($asprocess == "전체") {
    $sql = "SELECT * FROM chandj.work WHERE " . $a;
} elseif($asprocess == "미접수") {
    $sql = "SELECT * FROM chandj.work WHERE (as_state LIKE '%$asprocess%')
            AND (as_check = '1') ORDER BY num DESC";
} else {
    $sql = "SELECT * FROM chandj.work WHERE (as_state LIKE '%$asprocess%')
            ORDER BY num DESC";
}

AS 등록 조건

  • as_check = 1: 해당 공사를 AS 대상으로 지정
  • asday 입력 시: 자동으로 "접수완료" 상태로 변경
  • work 테이블에 직접 UPDATE

유/무상 판단

// asfee 값에 따른 유/무상 구분
if ($asfee == 0) {
    // 무상 AS
} else {
    // 유상 AS - asfee_estimate 금액 적용
}

JSON 데이터 구조

claimList (클레임 리스트)

[
    {
        "seq": 1,
        "claim_date": "2025-01-15",
        "claim_type": "품질불량",
        "description": "표면 스크래치",
        "status": "처리완료",
        "result": "교체 완료"
    }
]

ashistory (AS 이력)

[
    {
        "date": "2025-01-15",
        "action": "접수",
        "handler": "홍길동",
        "note": "고객 불만 접수"
    },
    {
        "date": "2025-01-20",
        "action": "처리완료",
        "handler": "김철수",
        "note": "부품 교체 완료"
    }
]

관련 뷰 파일

목록 뷰

  • list.php - AS 전체 목록 (상태별 필터링)
  • print_aslist.php - AS 목록 인쇄

상세 뷰

  • view.php - AS 상세 정보
  • outputview.php - 출력용 뷰

등록/수정 뷰

  • write_form.php - AS 등록/수정 폼

SAM 마이그레이션 포인트

1. AS 테이블 분리

-- SAM: AS 독립 테이블
after_services (
    id,
    tenant_id,
    project_id,             -- work → projects 참조
    as_number,              -- AS 번호 (자동생성)
    status,                 -- pending, received, scheduled, completed

    -- 접수 정보
    received_date,
    received_by,
    requester_name,
    requester_phone,

    -- 처리 정보
    scheduled_date,
    setting_date,
    completed_date,
    handler_id,

    -- 비용
    fee_type,               -- free, paid
    fee_amount,

    -- 내용
    issue_description,
    result_description,

    created_at,
    updated_at
)

2. AS 이력 테이블

-- SAM: AS 상태 이력
after_service_histories (
    id,
    after_service_id,
    from_status,
    to_status,
    action,                 -- received, scheduled, completed, reopened
    handler_id,
    note,
    created_at
)

3. 클레임 테이블 분리

-- SAM: 클레임 관리
claims (
    id,
    tenant_id,
    project_id,
    after_service_id,       -- AS와 연결 (선택)
    claim_number,
    claim_type,             -- quality, delivery, etc.
    claim_date,

    description,
    status,                 -- open, investigating, resolved, closed
    resolution,

    claimed_amount,
    approved_amount,

    created_at,
    resolved_at
)

4. 보증 테이블 분리

-- SAM: 보증 관리
warranties (
    id,
    tenant_id,
    project_id,
    warranty_number,

    start_date,
    end_date,
    period_months,

    coverage_type,          -- full, limited, parts_only
    terms TEXT,

    is_active,
    created_at
)

5. 인정검사 이력

-- SAM: 인정검사 이력 (output 테이블 ACI와 연계)
certifications (
    id,
    tenant_id,
    project_id,
    shipment_id,            -- output → shipments 참조

    inspector_name,
    inspection_date,
    label_attached_date,
    certificate_number,

    result,                 -- passed, failed, conditional
    documents JSON,

    created_at
)

특이사항

work 테이블 통합 구조

5130에서 AS는 별도 테이블이 아닌 work (공사) 테이블에 통합:

  • 장점: 공사-AS 데이터 일체화로 조회 용이
  • 단점: 하나의 공사에 다수 AS 발생 시 관리 어려움
  • SAM에서는 1:N 관계로 분리 권장

상태 관리

  • 상태값이 한글 문자열로 저장 (미접수, 접수완료 등)
  • SAM에서는 enum 또는 상수 테이블로 정규화 권장

클레임-AS 관계

  • 현재 구조에서 클레임과 AS가 명확히 구분되지 않음
  • SAM에서는 claims와 after_services 테이블로 분리하되 연결 가능하도록 설계

참고 파일

  • /as/list.php - AS 목록 쿼리 및 상태 필터링 (54KB)
  • /as/view.php - AS 상세 표시 (56KB)
  • /work/_request.php - AS 관련 91개 변수 정의
  • /work/insert.php - work 테이블 저장 (AS 컬럼 포함)