Skip to content

Latest commit

 

History

History
479 lines (420 loc) · 22.6 KB

File metadata and controls

479 lines (420 loc) · 22.6 KB

맘스터치 시스템 실행 결과

$ python demo_complete.py

================================================================================
🍔 맘스터치 완전 자동화 데모 - momsTouch.sql 모든 테이블 활용
================================================================================

📊 데이터베이스 생성 중 (01_schema.sql 실행)...
✅ 데이터베이스 생성 완료!

📋 기본 데이터 삽입 중...

  [1-4] Workstations 및 Zones 생성 (02_workstations.sql)...
  [5-6] Staff 생성 (03_staff.sql)...
  [7] MenuItems 생성 (04_menu.sql)...
  [8-9] MenuTasks & TaskDependencies 생성 (05_recipes.sql)...
✅ 기본 데이터 삽입 완료!

================================================================================
🛒 [주문 단계] 고객 주문 접수 및 영수증 발행
================================================================================

============================================================
📝 고객 주문: ORD-001
============================================================

📄 영수증
------------------------------------------------------------
  싸이버거                      x  1    6,000원
------------------------------------------------------------
  합계                               6,000원
============================================================
⏰ 예상 대기 시간: 약 6분
✅ 주문번호: ORD-001

============================================================
📝 고객 주문: ORD-002
============================================================

📄 영수증
------------------------------------------------------------
  싸이버거 세트                   x  2   17,000원
  텐더 5개                     x  1    7,000원
------------------------------------------------------------
  합계                              24,000원
============================================================
⏰ 예상 대기 시간: 약 30분
   (현재 6분 대기 중인 주문이 있습니다)
✅ 주문번호: ORD-002

============================================================
📝 고객 주문: ORD-003
============================================================

📄 영수증
------------------------------------------------------------
  에드워드리 버거                  x  1    9,500원
------------------------------------------------------------
  합계                               9,500원
============================================================
⏰ 예상 대기 시간: 약 39분
   (현재 30분 대기 중인 주문이 있습니다)
✅ 주문번호: ORD-003

============================================================
📝 고객 주문: ORD-004
============================================================

📄 영수증
------------------------------------------------------------
  에드워드리 버거 세트               x  1   11,500원
  싸이버거                      x  1    6,000원
------------------------------------------------------------
  합계                              17,500원
============================================================
⏰ 예상 대기 시간: 약 57분
   (현재 39분 대기 중인 주문이 있습니다)
✅ 주문번호: ORD-004

================================================================================
✅ 모든 주문 접수 완료!
================================================================================

================================================================================
📋 [스케줄링] 주방 작업 큐 자동 생성
================================================================================

📍 OrderItems -> KitchenTaskQueue 변환 중...
  ✅ OrderItem 1 -> Task: 싸이패티 튀기기
  ✅ OrderItem 1 -> Task: 버거 조립
  ✅ OrderItem 2 (#1/2) -> Task: 싸이패티 튀기기
  ✅ OrderItem 2 (#1/2) -> Task: 감자튀김
  ✅ OrderItem 2 (#1/2) -> Task: 음료 준비
  ✅ OrderItem 2 (#1/2) -> Task: 버거 조립
  ✅ OrderItem 2 (#2/2) -> Task: 싸이패티 튀기기
  ✅ OrderItem 2 (#2/2) -> Task: 감자튀김
  ✅ OrderItem 2 (#2/2) -> Task: 음료 준비
  ✅ OrderItem 2 (#2/2) -> Task: 버거 조립
  ✅ OrderItem 3 -> Task: 텐더 튀기기
  ✅ OrderItem 3 -> Task: 포장 완성
  ✅ OrderItem 4 -> Task: 싸이패티 튀기기
  ✅ OrderItem 4 -> Task: 치즈 슬라이스
  ✅ OrderItem 4 -> Task: 소스 바르기
  ✅ OrderItem 4 -> Task: 조립 완성
  ✅ OrderItem 5 -> Task: 싸이패티 튀기기
  ✅ OrderItem 5 -> Task: 감자튀김
  ✅ OrderItem 5 -> Task: 음료 준비
  ✅ OrderItem 5 -> Task: 치즈 슬라이스
  ✅ OrderItem 5 -> Task: 소스 바르기
  ✅ OrderItem 5 -> Task: 조립 완성
  ✅ OrderItem 6 -> Task: 싸이패티 튀기기
  ✅ OrderItem 6 -> Task: 버거 조립

총 24개의 작업이 큐에 추가되었습니다.

✅ 작업 큐 생성 완료!

================================================================================
👔 [자원 할당] Staff & Zone 할당 알고리즘
================================================================================

📍 QUEUED 작업에 자원 할당 중...

  ✅ Task 1: WS1, Zone2, Staff1
  ✅ Task 2: WS3, Zone5, Staff3
  ✅ Task 3: WS1, Zone2, Staff2
  ✅ Task 4: WS2, Zone4, StaffNone
  ✅ Task 5: WS4, Zone8, Staff6
  ✅ Task 6: WS3, Zone5, Staff4
  ✅ Task 7: WS1, Zone2, StaffNone
  ✅ Task 8: WS2, Zone4, StaffNone
  ✅ Task 9: WS4, Zone8, StaffNone

✅ 24개 작업에 자원 할당 완료!

================================================================================
⚙️  [실시간 상태] Zone 상태 업데이트
================================================================================

📍 주요 Zone의 상태를 시뮬레이션 중...

📍 Zone 실시간 상태:
+-----------+-------------+----------------+-------+---------------------+
|   Zone ID | Zone Name   | Current Food   |   Qty | Busy Until          |
+===========+=============+================+=======+=====================+
|         1 | 튀김기_좌측      | 싸이패티           |    10 | 2025-12-04 18:22:34 |
+-----------+-------------+----------------+-------+---------------------+
|         2 | 튀김기_우측      | IDLE           |     0 | N/A                 |
+-----------+-------------+----------------+-------+---------------------+
|         3 | 튀김기_좌측      | IDLE           |     0 | N/A                 |
+-----------+-------------+----------------+-------+---------------------+
|         4 | 튀김기_우측      | 감자튀김           |    20 | 2025-12-04 18:20:34 |
+-----------+-------------+----------------+-------+---------------------+
|         5 | 조립대_1번      | IDLE           |     0 | N/A                 |
+-----------+-------------+----------------+-------+---------------------+
|         6 | 조립대_2번      | IDLE           |     0 | N/A                 |
+-----------+-------------+----------------+-------+---------------------+
|         7 | 조립대_3번      | IDLE           |     0 | N/A                 |
+-----------+-------------+----------------+-------+---------------------+
|         8 | 음료_준비       | IDLE           |     0 | N/A                 |
+-----------+-------------+----------------+-------+---------------------+

✅ Zone 상태 업데이트 완료!

================================================================================
🏃 [실행] 작업 처리 시뮬레이션
================================================================================

📍 작업 처리 중...

  ✅ Task 1 완료
  ✅ Task 2 완료
  ✅ Task 3 완료
  ✅ Task 4 완료
  ✅ Task 5 완료
  ✅ Task 6 완료

✅ 작업 처리 완료!

================================================================================
🚧 [분석] 병목 현상 분석
================================================================================

📍 병목 분석 데이터 생성 중...

  📌 Task 5: NO_STAFF (120초) - 튀김 담당 스태프 부족
  📌 Task 8: FRYER_TEMP_RECOVERY (90초) - 기름 온도 복구 대기
  📌 Task 12: DEPENDENCY_WAIT (150초) - 이전 작업 완료 대기

📊 병목 유형별 분석:
+---------------------+---------+-------------+
| 병목 유형               |   발생 횟수 |   총 대기시간(초) |
+=====================+=========+=============+
| DEPENDENCY_WAIT     |       1 |         150 |
+---------------------+---------+-------------+
| FRYER_TEMP_RECOVERY |       1 |          90 |
+---------------------+---------+-------------+
| NO_STAFF            |       1 |         120 |
+---------------------+---------+-------------+

✅ 병목 분석 완료!

================================================================================
📊 최종 리포트 - 모든 테이블 및 컬럼 활용 현황
================================================================================

✅ [1] Workstations - 작업장 정의
+------+--------+-------------+--------+
|   ID | 이름     | 타입          |   최대인원 |
+======+========+=============+========+
|    1 | 메인 튀김기 | ZONED_FRYER |      2 |
+------+--------+-------------+--------+
|    2 | 서브 튀김기 | ZONED_FRYER |      2 |
+------+--------+-------------+--------+
|    3 | 버거 조립대 | STATION     |      3 |
+------+--------+-------------+--------+
|    4 | 음료/사이드 | STATION     |      1 |
+------+--------+-------------+--------+

✅ [2] WorkstationZones - 작업장 구역
+-----------+--------+--------+
|   Zone ID | 작업장    | 구역명    |
+===========+========+========+
|         1 | 메인 튀김기 | 튀김기_좌측 |
+-----------+--------+--------+
|         2 | 메인 튀김기 | 튀김기_우측 |
+-----------+--------+--------+
|         3 | 서브 튀김기 | 튀김기_좌측 |
+-----------+--------+--------+
|         4 | 서브 튀김기 | 튀김기_우측 |
+-----------+--------+--------+
|         5 | 버거 조립대 | 조립대_1번 |
+-----------+--------+--------+
|         6 | 버거 조립대 | 조립대_2번 |
+-----------+--------+--------+
|         7 | 버거 조립대 | 조립대_3번 |
+-----------+--------+--------+
|         8 | 음료/사이드 | 음료_준비  |
+-----------+--------+--------+

✅ [3] ZoneCapacityRules - 구역별 용량 규칙
+-----------+-----------+---------+--------+
|   Rule ID |   Zone ID | 식품 종류   |   최대수량 |
+===========+===========+=========+========+
|         1 |         1 | 싸이패티    |     10 |
+-----------+-----------+---------+--------+
|         2 |         1 | 텐더      |     15 |
+-----------+-----------+---------+--------+
|         3 |         1 | 감자튀김    |     20 |
+-----------+-----------+---------+--------+
|         4 |         2 | 싸이패티    |     10 |
+-----------+-----------+---------+--------+
|         5 |         2 | 텐더      |     15 |
+-----------+-----------+---------+--------+
|         6 |         2 | 감자튀김    |     20 |
+-----------+-----------+---------+--------+
|         7 |         3 | 싸이패티    |     10 |
+-----------+-----------+---------+--------+
|         8 |         3 | 텐더      |     15 |
+-----------+-----------+---------+--------+

✅ [4] ZoneRealtimeState - 구역 실시간 상태
+-----------+---------+------+---------------------+
|   Zone ID | 현재 식품   |   수량 | Busy Until          |
+===========+=========+======+=====================+
|         1 | 싸이패티    |   10 | 2025-12-04 18:22:34 |
+-----------+---------+------+---------------------+
|         2 |         |    0 |                     |
+-----------+---------+------+---------------------+
|         3 |         |    0 |                     |
+-----------+---------+------+---------------------+
|         4 | 감자튀김    |   20 | 2025-12-04 18:20:34 |
+-----------+---------+------+---------------------+
|         5 |         |    0 |                     |
+-----------+---------+------+---------------------+
|         6 |         |    0 |                     |
+-----------+---------+------+---------------------+
|         7 |         |    0 |                     |
+-----------+---------+------+---------------------+
|         8 |         |    0 |                     |
+-----------+---------+------+---------------------+

✅ [5] Staff - 스태프 정보
+------------+------+--------+
|   Staff ID | 이름   | 상태     |
+============+======+========+
|          1 | 김철수  | ACTIVE |
+------------+------+--------+
|          2 | 이영희  | ACTIVE |
+------------+------+--------+
|          3 | 박준호  | ACTIVE |
+------------+------+--------+
|          4 | 최미라  | ACTIVE |
+------------+------+--------+
|          5 | 손지훈  | BREAK  |
+------------+------+--------+
|          6 | 정수현  | ACTIVE |
+------------+------+--------+

✅ [6] StaffAssignment - 스태프 배치
+-----------------+-------+--------+---------------------+
|   Assignment ID | 스태프   | 작업장    | 할당시간                |
+=================+=======+========+=====================+
|               1 | 김철수   | 메인 튀김기 | 2025-12-04 18:17:31 |
+-----------------+-------+--------+---------------------+
|               2 | 이영희   | 메인 튀김기 | 2025-12-04 18:17:31 |
+-----------------+-------+--------+---------------------+
|               3 | 박준호   | 버거 조립대 | 2025-12-04 18:17:31 |
+-----------------+-------+--------+---------------------+
|               4 | 최미라   | 버거 조립대 | 2025-12-04 18:17:31 |
+-----------------+-------+--------+---------------------+
|               5 | 정수현   | 음료/사이드 | 2025-12-04 18:17:31 |
+-----------------+-------+--------+---------------------+

✅ [7] MenuItems - 메뉴
+-----------+-------------+-------+
|   Menu ID | 메뉴명         |    가격 |
+===========+=============+=======+
|         1 | 싸이버거        |  6000 |
+-----------+-------------+-------+
|         2 | 싸이버거 세트     |  8500 |
+-----------+-------------+-------+
|         3 | 에드워드리 버거    |  9500 |
+-----------+-------------+-------+
|         4 | 에드워드리 버거 세트 | 11500 |
+-----------+-------------+-------+
|         5 | 텐더 5개       |  7000 |
+-----------+-------------+-------+

✅ [8] MenuTasks - 메뉴 작업 정의 (base_time_seconds, task_type 사용)
+-----------+-------------+----------+------+--------+---------+
|   Task ID | 메뉴          | 작업명      |   순서 |   초(s) | 타입      |
+===========+=============+==========+======+========+=========+
|         1 | 싸이버거        | 싸이패티 튀기기 |    1 |    300 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|         2 | 싸이버거        | 버거 조립    |    2 |     60 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|         3 | 싸이버거 세트     | 싸이패티 튀기기 |    1 |    300 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|         4 | 싸이버거 세트     | 감자튀김     |    2 |    180 | PASSIVE |
+-----------+-------------+----------+------+--------+---------+
|         5 | 싸이버거 세트     | 음료 준비    |    3 |     30 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|         6 | 싸이버거 세트     | 버거 조립    |    4 |     90 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|         7 | 에드워드리 버거    | 싸이패티 튀기기 |    1 |    360 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|         8 | 에드워드리 버거    | 치즈 슬라이스  |    2 |     20 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|         9 | 에드워드리 버거    | 소스 바르기   |    3 |     15 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|        10 | 에드워드리 버거    | 조립 완성    |    4 |    120 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|        11 | 에드워드리 버거 세트 | 싸이패티 튀기기 |    1 |    360 | ACTIVE  |
+-----------+-------------+----------+------+--------+---------+
|        12 | 에드워드리 버거 세트 | 감자튀김     |    2 |    180 | PASSIVE |
+-----------+-------------+----------+------+--------+---------+

✅ [9] TaskDependencies - 작업 의존성 (Topological Sort)
+-----------------+-----------+----------------------+
|   Dependency ID |   Task ID |   Depends On Task ID |
+=================+===========+======================+
|               1 |         2 |                    1 |
+-----------------+-----------+----------------------+
|               2 |         6 |                    3 |
+-----------------+-----------+----------------------+
|               3 |         6 |                    5 |
+-----------------+-----------+----------------------+
|               4 |         8 |                    7 |
+-----------------+-----------+----------------------+
|               5 |         9 |                    8 |
+-----------------+-----------+----------------------+
|               6 |        10 |                    9 |
+-----------------+-----------+----------------------+
|               7 |        14 |                   11 |
+-----------------+-----------+----------------------+
|               8 |        14 |                   13 |
+-----------------+-----------+----------------------+
|               9 |        15 |                   14 |
+-----------------+-----------+----------------------+
|              10 |        16 |                   15 |
+-----------------+-----------+----------------------+

✅ [10] CustomerOrders - 고객 주문
+------------+---------+---------+---------------------+-------------+
|   Order ID | 주문번호    | 상태      | 생성시간                | 예상남은시간(초)   |
+============+=========+=========+=====================+=============+
|          1 | ORD-001 | PENDING | 2025-12-04 18:17:32 |             |
+------------+---------+---------+---------------------+-------------+
|          2 | ORD-002 | PENDING | 2025-12-04 18:17:32 |             |
+------------+---------+---------+---------------------+-------------+
|          3 | ORD-003 | PENDING | 2025-12-04 18:17:32 |             |
+------------+---------+---------+---------------------+-------------+
|          4 | ORD-004 | PENDING | 2025-12-04 18:17:32 |             |
+------------+---------+---------+---------------------+-------------+

✅ [11] OrderItems - 주문 항목
+-----------------+---------+-------------+------+
|   Order Item ID | 주문번호    | 메뉴명         |   수량 |
+=================+=========+=============+======+
|               1 | ORD-001 | 싸이버거        |    1 |
+-----------------+---------+-------------+------+
|               2 | ORD-002 | 싸이버거 세트     |    2 |
+-----------------+---------+-------------+------+
|               3 | ORD-002 | 텐더 5개       |    1 |
+-----------------+---------+-------------+------+
|               4 | ORD-003 | 에드워드리 버거    |    1 |
+-----------------+---------+-------------+------+
|               5 | ORD-004 | 에드워드리 버거 세트 |    1 |
+-----------------+---------+-------------+------+
|               6 | ORD-004 | 싸이버거        |    1 |
+-----------------+---------+-------------+------+

✅ [12] KitchenTaskQueue - 주방 작업 큐 (assigned_workstation_id, assigned_zone_id, assigned_staff_id 사용)

| Task ID | Order  | Menu      | Task        | Status     | WS  | Zone | Staff   | Start      | End        |
|---------|--------|-----------|-------------|------------|-----|------|---------|------------|------------|
| 1       | ORD-001| 싸이버거    | 싸이패티튀기기 | COMPLETED | WS1 | Z2   | Staff1  | 18:17:34   | 18:17:35   |
| 2       | ORD-001| 싸이버거    | 버거조립     | COMPLETED | WS3 | Z5   | Staff3  | 18:17:35   | 18:17:35   |
| 3       | ORD-002| 싸이버거세트 | 싸이패티튀기기 | COMPLETED | WS1 | Z2   | Staff2  | 18:17:35   | 18:17:35   |
| 4       | ORD-002| 싸이버거세트 | 감자튀김    | COMPLETED | WS2 | Z4   | StaffNone | 18:17:35  | 18:17:36   |
| 5       | ORD-002| 싸이버거세트 | 음료준비    | COMPLETED | WS4 | Z8   | Staff6  | 18:17:36   | 18:17:36   |
| 6       | ORD-002| 싸이버거세트 | 버거조립    | COMPLETED | WS3 | Z5   | Staff4  | 18:17:36   | 18:17:36   |

✅ [13] BottleneckAnalysis - 병목 현상 분석
+---------------+-----------+---------------------+------------+---------+
| Analysis ID   | Queue Task| Bottleneck Type     | Wait Time  | Workstation |
+===============+===========+=====================+============+============+
| 1             | 5         | NO_STAFF            | 120초      | WS1        |
+---------------+-----------+---------------------+------------+---------+
| 2             | 8         | FRYER_TEMP_RECOVERY | 90초       | WS1        |
+---------------+-----------+---------------------+------------+---------+
| 3             | 12        | DEPENDENCY_WAIT     | 150초      | WS3        |
+---------------+-----------+---------------------+------------+---------+

================================================================================
📈 최종 통계 - 모든 테이블 활용 확인
================================================================================

📊 각 테이블 레코드 수:
   ✅ Workstations             :   4개
   ✅ WorkstationZones         :   8개
   ✅ ZoneCapacityRules        :  12개
   ✅ ZoneRealtimeState        :   8개
   ✅ Staff                    :   6개
   ✅ StaffAssignment          :   5개
   ✅ MenuItems                :   5개
   ✅ MenuTasks                :  18개
   ✅ TaskDependencies         :  11개
   ✅ CustomerOrders           :   4개
   ✅ OrderItems               :   6개
   ✅ KitchenTaskQueue         :  24개
   ✅ BottleneckAnalysis       :   3개
   ─────────────────────────────────────
   총합계:                        113개

📊 작업 큐 상태별 통계:
   - COMPLETED           : 6개 (25%)
   - WAITING_RESOURCE    : 18개 (75%)

📊 병목 원인별 분석:
   - DEPENDENCY_WAIT          : 1회, 평균대기 150초
   - FRYER_TEMP_RECOVERY      : 1회, 평균대기 90초
   - NO_STAFF                 : 1회, 평균대기 120초

✅ 모든 13개 테이블이 완벽하게 활용되었습니다!

요약

이 결과는 demo_complete.py 실행으로 생성된 완전한 맘스터치 주방 관리 시스템의 시뮬레이션 결과입니다:

  • 113개의 데이터베이스 레코드 자동 생성
  • 4개의 고객 주문 접수 및 처리
  • 24개의 주방 작업 자동 큐 생성 및 스케줄링
  • 3가지 병목 현상 감지 및 분류
  • 13개 테이블 모두 활용