- 5130 레거시 시스템 분석 (00_OVERVIEW ~ 08_SAM_COMPARISON) - MES 프로젝트 문서 - API/프론트엔드 스펙 문서 - 가이드 및 레퍼런스 문서
326 lines
8.2 KiB
Markdown
326 lines
8.2 KiB
Markdown
# 품질/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 관련 컬럼
|
|
```sql
|
|
-- 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
|
|
```
|
|
|
|
### 클레임 관련 컬럼
|
|
```sql
|
|
-- work 테이블 내 클레임 필드
|
|
claimperson VARCHAR(50), -- 클레임 담당자
|
|
claimtel VARCHAR(20), -- 클레임 연락처
|
|
claimList TEXT, -- 클레임 리스트 (JSON)
|
|
sum_claimamount DECIMAL(15,0), -- 클레임금액
|
|
```
|
|
|
|
### 보증 관련 컬럼
|
|
```sql
|
|
-- work 테이블 내 보증 필드
|
|
warrantyFromDate DATE, -- 보증 시작일
|
|
warrantyToDate DATE, -- 보증 종료일
|
|
warrantyPeriod VARCHAR(50), -- 보증 기간
|
|
warrantyMemo TEXT, -- 보증 메모
|
|
```
|
|
|
|
### 인정검사 관련 컬럼
|
|
```sql
|
|
-- work 테이블 내 인정검사 필드
|
|
certifiedInspector VARCHAR(50), -- 인정검사원
|
|
certifiedLabelAttachedDate DATE, -- 인정라벨 부착일
|
|
```
|
|
|
|
## AS 상태 흐름
|
|
|
|
### as_state 상태값
|
|
| 상태 | 설명 | 조건 |
|
|
|------|------|------|
|
|
| 미접수 | 초기 상태 | as_check = 1, asday 미입력 |
|
|
| 접수완료 | AS 접수됨 | asday 입력 |
|
|
| 처리예약 | 처리 예정 | asproday 입력 |
|
|
| 세팅예약 | 세팅 예정 | setdate 입력 |
|
|
| 처리완료 | AS 완료 | asendday 입력 |
|
|
|
|
### 상태 전이 다이어그램
|
|
```
|
|
[미접수] → [접수완료] → [처리예약] → [처리완료]
|
|
↘ [세팅예약] ↗
|
|
```
|
|
|
|
## 비즈니스 로직
|
|
|
|
### AS 목록 조회 (as/list.php)
|
|
```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
|
|
|
|
### 유/무상 판단
|
|
```php
|
|
// asfee 값에 따른 유/무상 구분
|
|
if ($asfee == 0) {
|
|
// 무상 AS
|
|
} else {
|
|
// 유상 AS - asfee_estimate 금액 적용
|
|
}
|
|
```
|
|
|
|
## JSON 데이터 구조
|
|
|
|
### claimList (클레임 리스트)
|
|
```json
|
|
[
|
|
{
|
|
"seq": 1,
|
|
"claim_date": "2025-01-15",
|
|
"claim_type": "품질불량",
|
|
"description": "표면 스크래치",
|
|
"status": "처리완료",
|
|
"result": "교체 완료"
|
|
}
|
|
]
|
|
```
|
|
|
|
### ashistory (AS 이력)
|
|
```json
|
|
[
|
|
{
|
|
"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 테이블 분리
|
|
```sql
|
|
-- 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 이력 테이블
|
|
```sql
|
|
-- SAM: AS 상태 이력
|
|
after_service_histories (
|
|
id,
|
|
after_service_id,
|
|
from_status,
|
|
to_status,
|
|
action, -- received, scheduled, completed, reopened
|
|
handler_id,
|
|
note,
|
|
created_at
|
|
)
|
|
```
|
|
|
|
### 3. 클레임 테이블 분리
|
|
```sql
|
|
-- 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. 보증 테이블 분리
|
|
```sql
|
|
-- 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. 인정검사 이력
|
|
```sql
|
|
-- 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 컬럼 포함)
|