Files
sam-kd/docs/README.md
kent b1128bedb5 docs: 5130 프로젝트 문서화 추가
- docs/README.md: 프로젝트 개요, 기술 스택, 구조, 핵심 모듈
- docs/MODULES.md: 모듈별 상세 (견적, 출고, 수입검사, 작업, 전자결재)
- docs/DATABASE.md: DB 스키마, 테이블 구조, 연결 설정

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 13:22:44 +09:00

8.8 KiB

5130 프로젝트 문서

프로젝트 개요

5130은 (주)경동기업의 방화셔터 및 철강 제조업 관리 시스템입니다. PHP 7.3 기반의 레거시 웹 애플리케이션으로, 견적, 출고, 재고, 전자결재 등 제조업 전반의 업무를 관리합니다.

기본 정보

항목 내용
도메인 https://5130.co.kr, https://5130.sam.kr (개발)
PHP 버전 7.3
데이터베이스 MySQL 8.0 (chandj)
UI 프레임워크 Bootstrap 5, jQuery
회사 (주)경동기업, (주)주일철강

핵심 기능

  • 견적 시스템: 스크린/스라트 방화셔터 견적 산출
  • 출고 관리: 주문 접수부터 출고 완료까지 전체 프로세스
  • 수입검사: 자재 입고 및 품질 검사
  • 전자결재: 품의서, 지출결의서, 연차신청 등
  • 재고 관리: LOT 관리, 자재 입출고
  • Dashboard: 실시간 현황 및 통계

기술 스택

Backend:    PHP 7.3
Database:   MySQL 8.0 (PDO)
Frontend:   Bootstrap 5, jQuery, Bootstrap Icons
Charts:     (통계 차트용)
Grid:       AG-Grid (일부 모듈)

프로젝트 구조

5130/
├── index.php              # 메인 대시보드
├── session.php            # 세션 관리 (.env 로드 포함)
├── common.php             # 공통 유틸리티 함수
├── proDB.php              # JSON API (CRUD 작업)
├── lib/
│   └── mydb.php           # PDO 데이터베이스 연결
│
├── estimate/              # 견적 모듈
├── output/                # 출고 관리
├── work/                  # 작업/생산 관리
├── instock/               # 수입검사/입고
├── lot/                   # LOT 관리
│
├── account/               # 회계 (경동)
├── account_juil/          # 회계 (주일)
├── account_plan/          # 회계 계획
│
├── annualleave/           # 연차 관리
├── askitem/               # 품의서
├── askitem_ER/            # 지출결의서
│
├── notice/                # 공지사항
├── qna/                   # 자료실
├── rnd/                   # 개발일지
│
├── member/                # 회원 관리
├── login/                 # 로그인
│
├── car/                   # 차량 관리
├── lift/                  # 지게차 관리
│
├── bending/               # 벤딩 관리
├── bendingfee/            # 벤딩 비용
│
├── dbeditor/              # phpMyAdmin (DB 관리 도구)
├── DBcontrol/             # DB 제어 유틸
│
├── img/                   # 이미지 리소스
├── js/                    # JavaScript 파일
├── css/                   # CSS 스타일
└── docs/                  # 문서 (현재 폴더)

핵심 모듈 상세

1. 견적 모듈 (estimate/)

방화셔터(스크린/스라트) 견적 산출 시스템

주요 파일:

  • list.php - 견적 목록
  • write_form.php - 견적 작성/수정
  • estimate.php / estimateSlat.php - 견적서 출력
  • get_screen_amount.php - 스크린 금액 계산
  • get_slat_amount.php - 스라트 금액 계산

상세 문서: estimate/README.md

2. 출고 모듈 (output/)

주문 접수부터 출고까지 전체 프로세스 관리 (136개 파일)

주요 파일:

  • list.php - 출고 목록
  • write_form.php - 출고 작성/수정
  • delivery.php - 배송 관리
  • statistics.php - 출고 통계
  • list_ACI.php - 인정검사 목록
  • write_ACI.php / write_ACI_slat.php - 인정검사 작성

주요 테이블: output

3. 수입검사 모듈 (instock/)

자재 입고 및 품질 검사 관리

주요 파일:

  • list.php - 수입검사 목록
  • write_form.php - 검사 등록
  • i_*.php - 품목별 검사 양식 (EGI155, GIplate, SUScoil 등)
  • statistics.php - 구매 통계

주요 테이블: instock

4. 작업 관리 모듈 (work/)

생산 작업 및 인계 관리

주요 파일:

  • list.php - 작업 목록
  • write_form.php - 작업 등록
  • handover_list.php / handover_doc.php - 인계서 관리
  • accountlist.php - 정산 목록

5. 전자결재 (annualleave/, askitem/, askitem_ER/)

연차 신청 (annualleave/):

  • 연차/반차/조퇴 신청 및 승인
  • 결재라인 설정

품의서 (askitem/):

  • 물품 구매 등 품의 신청

지출결의서 (askitem_ER/):

  • 비용 지출 결의

공통 테이블: eworks (전자결재 통합 테이블)


데이터베이스 구조

주요 테이블

테이블명 설명
output 출고/주문 정보
estimate 견적 정보
instock 수입검사/입고
eworks 전자결재 (연차, 품의서, 지출결의서)
notice 공지사항
qna 자료실
rnd 개발일지
member 회원 정보
car 차량 정보
lift 지게차 정보
lot LOT 정보

데이터베이스 연결

// lib/mydb.php
function db_connect(){
    loadEnv();
    $db_host = $_ENV['DB_HOST'] ?? 'localhost';
    $db_name = $_ENV['DB_NAME'] ?? 'chandj';
    $db_user = $_ENV['DB_USER'] ?? 'chandj';
    $db_pass = $_ENV['DB_PASS'] ?? '';

    $dsn = "mysql:host=".$db_host.";dbname=".$db_name.";charset=utf8mb4";
    $pdo = new PDO($dsn, $db_user, $db_pass, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
    return $pdo;
}

세션 및 인증

세션 변수

// session.php에서 관리
$_SESSION["level"]         // 권한 레벨 (1: 관리자)
$_SESSION["name"]          // 사용자 이름
$_SESSION["userid"]        // 사용자 ID
$_SESSION["DB"]            // 데이터베이스명 (기본: chandj)
$_SESSION["eworks_lv"]     // 결재 레벨
$_SESSION["eworks_level"]  // 결재 단계
$_SESSION["position"]      // 직급
$_SESSION["mycompany"]     // 회사 (경동/주일)
$_SESSION["mypart"]        // 부서
$_SESSION["authority"]     // 특수 권한 (ACCOUNT: 회계권한)

권한 체크

// index.php 예시
if(!isset($_SESSION["level"]) || intval($_SESSION["level"]) > 7) {
    header("Location:" . $WebSite . "login/login_form.php");
    exit;
}

API 엔드포인트

proDB.php - 범용 CRUD API

POST /proDB.php
Content-Type: application/json

Parameters:
- table: 테이블명
- command: insert | update | delete
- field: 필드명
- strtmp: 값
- recnum: 레코드 번호 (update/delete 시)

Response: JSON

환경 설정

.env 파일

DB_HOST=localhost
DB_NAME=chandj
DB_USER=chandj
DB_PASS=password
APP_URL=https://5130.co.kr

Docker 설정 (개발 환경)

  • 도메인: 5130.sam.kr
  • PHP 컨테이너: php73:9000
  • Nginx 프록시 설정 참조: docker/nginx/nginx.conf

코드 패턴

목록 페이지 패턴

// list.php 일반 구조
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");

$pdo = db_connect();

// 검색 조건
$where = " WHERE 1=1 ";
if(!empty($search)) {
    $where .= " AND field LIKE '%$search%' ";
}

// 페이징
$sql = "SELECT COUNT(*) FROM table" . $where;
$total = $pdo->query($sql)->fetchColumn();

// 데이터 조회
$sql = "SELECT * FROM table" . $where . " ORDER BY num DESC LIMIT $start, $limit";
$stmh = $pdo->query($sql);

등록/수정 페이지 패턴

// write_form.php 일반 구조
$mode = $_REQUEST['mode'] ?? 'write';
$num = $_REQUEST['num'] ?? '';

if($mode == 'modify' || $mode == 'view') {
    // 기존 데이터 조회
    $sql = "SELECT * FROM table WHERE num = ?";
    $stmh = $pdo->prepare($sql);
    $stmh->execute([$num]);
    $row = $stmh->fetch();
}

// 폼 처리는 update.php에서

주요 공통 함수

common.php

// 날짜 관련
specialDate($date)           // 특수 날짜 변환
NullCheckDate($date)         // NULL 날짜 체크
trans_date($date)            // 날짜 형식 변환

// 연차 계산
calculateAnnualLeave($info)  // 연차 계산

// 카테고리
getCategoryByName($name)     // 카테고리 조회

// 모델 선택
selectModel($code)           // 제품 모델 선택

보안 고려사항

현재 구현

  1. 세션 기반 인증
  2. 권한 레벨 체크 ($_SESSION["level"])
  3. PDO Prepared Statements (일부)

개선 필요 사항

  1. CSRF 토큰 미적용
  2. 일부 SQL 인젝션 취약점 (직접 쿼리 문자열 연결)
  3. XSS 필터링 불완전
  4. 입력값 검증 강화 필요

관련 문서


변경 이력

날짜 내용
2025-12-13 초기 문서 작성 (Claude Code 분석)

이 문서는 코드 분석을 통해 자동 생성되었습니다.