사이트·관리자 봉투 물류 기능(수불·통계·레포트·재고·발주)과 DB·메뉴·E2E를 운영 반영한다.

통계 분석(전년대비·월별·계절별), 수급계획·LOT 수불, 지정판매소·실사·메뉴 링크 등을 포함한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
taekyoungc
2026-06-01 16:15:15 +09:00
parent 21e7b91871
commit 0f1d414f37
129 changed files with 18068 additions and 1585 deletions

View File

@@ -189,13 +189,18 @@ CREATE TABLE IF NOT EXISTS `bag_order` (
`bo_agency_idx` INT UNSIGNED NULL COMMENT '입고처(대행소) FK (sales_agency)',
`bo_fee_rate` DECIMAL(5,2) NOT NULL DEFAULT 0 COMMENT '수수료율(%)',
`bo_order_date` DATE NOT NULL COMMENT '발주일',
`bo_bag_types` TEXT NULL COMMENT '봉투 종류 목록(JSON)',
`bo_unit_prices` TEXT NULL COMMENT '발주 단가 목록(JSON)',
`bo_qty_boxes` TEXT NULL COMMENT '발주 박스 수량 목록(JSON)',
`bo_lot_no` VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'LOT 번호',
`bo_hash` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'SHA-256 해시',
`bo_status` VARCHAR(10) NOT NULL DEFAULT 'normal' COMMENT 'normal/cancelled/deleted',
`bo_orderer_idx` INT UNSIGNED NULL COMMENT '발주자 mb_idx',
`bo_regdate` DATETIME NOT NULL,
`bo_moddate` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`bo_idx`),
`bo_regdate` DATETIME NOT NULL COMMENT '등록일시',
`bo_moddate` DATETIME NULL DEFAULT NULL COMMENT '수정일시',
PRIMARY KEY (`bo_uuid`, `bo_version`),
-- 코드/화면 로직은 bo_idx(숫자 PK)로 조회/취소/삭제하고 있어, bo_idx도 유니크로 유지한다.
UNIQUE KEY `uk_bo_idx` (`bo_idx`),
UNIQUE KEY `uk_bo_uuid_ver` (`bo_uuid`, `bo_version`),
KEY `idx_bo_lg_idx` (`bo_lg_idx`),
KEY `idx_bo_status` (`bo_status`),
@@ -255,6 +260,7 @@ CREATE TABLE IF NOT EXISTS `shop_order` (
`so_order_date` DATE NOT NULL COMMENT '접수일',
`so_delivery_date` DATE NULL COMMENT '배달일',
`so_payment_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '이체/가상계좌',
`so_channel` VARCHAR(20) NOT NULL DEFAULT 'phone' COMMENT '접수채널 phone/web/app/counter',
`so_paid` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '입금여부 1=예',
`so_received` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '수령여부 1=예',
`so_total_qty` INT UNSIGNED NOT NULL DEFAULT 0,
@@ -264,7 +270,8 @@ CREATE TABLE IF NOT EXISTS `shop_order` (
`so_regdate` DATETIME NOT NULL,
PRIMARY KEY (`so_idx`),
KEY `idx_so_lg_idx` (`so_lg_idx`),
KEY `idx_so_ds_idx` (`so_ds_idx`)
KEY `idx_so_ds_idx` (`so_ds_idx`),
KEY `idx_so_lg_order_channel` (`so_lg_idx`, `so_order_date`, `so_channel`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='주문 접수';
CREATE TABLE IF NOT EXISTS `shop_order_item` (
@@ -321,6 +328,22 @@ CREATE TABLE IF NOT EXISTS `bag_issue` (
KEY `idx_bi2_date` (`bi2_issue_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='무료용 불출';
CREATE TABLE IF NOT EXISTS `bag_issue_item_code` (
`bic_idx` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`bic_lg_idx` INT UNSIGNED NOT NULL,
`bic_bi2_idx` INT UNSIGNED NOT NULL COMMENT 'bag_issue.bi2_idx',
`bic_bag_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '봉투 종류 코드',
`bic_issue_code` VARCHAR(80) NOT NULL DEFAULT '' COMMENT '불출 품목 코드',
`bic_qty` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '원수량(낱장)',
`bic_cancel_qty` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '취소수량(낱장)',
`bic_state` VARCHAR(10) NOT NULL DEFAULT 'normal' COMMENT 'normal/cancelled',
`bic_regdate` DATETIME NOT NULL,
PRIMARY KEY (`bic_idx`),
KEY `idx_bic_lg_idx` (`bic_lg_idx`),
KEY `idx_bic_bi2_idx` (`bic_bi2_idx`),
KEY `idx_bic_issue_code` (`bic_issue_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='무료용 불출 품목코드 상세';
-- ---------------------------------------------------------------------------
-- 감사 로그 (activity_log_tables.sql) — audit_helper.php
-- ---------------------------------------------------------------------------
@@ -340,6 +363,26 @@ CREATE TABLE IF NOT EXISTS `activity_log` (
KEY `idx_al_regdate` (`al_regdate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='CRUD 활동 로그';
-- 블록체인 원장 (폐쇄형 SQL Ledger)
CREATE TABLE IF NOT EXISTS `blockchain_ledger` (
`bl_idx` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '블록 인덱스(Height)',
`bl_created_at` DATETIME NOT NULL COMMENT '블록 생성 시각',
`bl_tx_type` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '트랜잭션 타입(ORDER_CREATE/ORDER_UPDATE/...)',
`bl_entity_uuid` CHAR(36) NULL COMMENT '업무 엔티티 UUID',
`bl_entity_version` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '엔티티 버전',
`bl_payload` JSON NOT NULL COMMENT '블록 payload(JSON)',
`bl_previous_hash` CHAR(64) NOT NULL DEFAULT '' COMMENT '이전 블록 해시',
`bl_hash` CHAR(64) NOT NULL DEFAULT '' COMMENT '현재 블록 해시',
`bl_nonce` INT NOT NULL DEFAULT 0 COMMENT '논스(폐쇄형 체인에서 기본 0)',
`bl_actor_idx` INT UNSIGNED NULL COMMENT '수행자 mb_idx',
`bl_lg_idx` INT UNSIGNED NULL COMMENT '지자체 lg_idx',
PRIMARY KEY (`bl_idx`),
KEY `idx_bl_entity_uuid` (`bl_entity_uuid`),
KEY `idx_bl_tx_type` (`bl_tx_type`),
KEY `idx_bl_lg_idx` (`bl_lg_idx`),
UNIQUE KEY `uk_bl_hash` (`bl_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='블록체인 원장';
-- ---------------------------------------------------------------------------
-- 기타 입출고 리포트 (bag_misc_flow_tables.sql)
-- ---------------------------------------------------------------------------