- 5130 레거시 시스템 분석 (00_OVERVIEW ~ 08_SAM_COMPARISON) - MES 프로젝트 문서 - API/프론트엔드 스펙 문서 - 가이드 및 레퍼런스 문서
8.2 KiB
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 컬럼 포함)