v1.1 📅 2026-02-19 📂 기획

시스템 아키텍처 가이드

1. 전체 구조

                    ┌────────────────────────┐
                    │    Filament Admin      │  ← UI 계층
                    │  (Resources / Pages)   │
                    └───────────┬────────────┘
                                │
                    ┌───────────▼────────────┐
                    │    Laravel Routes      │  ← 라우팅
                    │   (web.php / api.php)  │
                    └───────────┬────────────┘
                                │
          ┌─────────────────────┼─────────────────────┐
          │                     │                       │
┌─────────▼──────────┐  ┌──────▼───────┐  ┌───────────▼──────────┐
│  Filament Resource │  │  API Controller│  │  PlanController     │
│  (Admin CRUD)      │  │  (REST API)    │  │  (문서 허브)         │
└─────────┬──────────┘  └──────┬───────┘  └──────────────────────┘
          │                     │
          └─────────┬───────────┘
                    │
          ┌─────────▼──────────┐
          │   Domain Services  │  ← 비즈니스 로직
          │  (InventoryService │
          │   OrderService     │
          │   PurchaseService) │
          └─────────┬──────────┘
                    │
          ┌─────────▼──────────┐
          │   Domain Models    │  ← 데이터 계층
          │   (Eloquent ORM)   │
          └─────────┬──────────┘
                    │
          ┌─────────▼──────────┐
          │     MariaDB        │  ← 저장소
          └────────────────────┘

2. 디렉토리 구조

app/
├── Domains/                    ← DDD 도메인 계층
│   ├── Product/
│   │   ├── Models/             (Product, ProductMapping)
│   │   ├── Imports/            (ProductImport)
│   │   └── Policies/          (ProductPolicy)
│   ├── Inventory/
│   │   ├── Enums/              (StockLogType, StockTakeStatus)
│   │   ├── Models/             (Inventory, InventoryAllocation, StockLog, StockTake*)
│   │   ├── Services/           (InventoryService, InventoryAnalysisService, SafetyStockService)
│   │   ├── Imports/            (InventoryImport)
│   │   └── Policies/          (InventoryPolicy, InventoryAllocationPolicy, StockTakePolicy)
│   ├── Order/
│   │   ├── Enums/              (OrderStatus, ReturnRequestStatus)
│   │   ├── Models/             (Order, OrderItem, ReturnRequest)
│   │   ├── Services/           (OrderService)
│   │   ├── Imports/            (OrderImport, OrderInvoiceImport, ShipmentImport)
│   │   └── Policies/          (OrderPolicy, ReturnRequestPolicy)
│   ├── Purchasing/
│   │   ├── Enums/              (PurchaseOrderStatus)
│   │   ├── Models/             (PurchaseOrder, PurchaseOrderItem, Supplier)
│   │   ├── Services/           (PurchaseService)
│   │   └── Policies/          (PurchaseOrderPolicy, SupplierPolicy)
│   └── SalesChannel/
│       ├── Models/             (SalesChannel)
│       └── Policies/          (SalesChannelPolicy)
│
├── Exports/                    ← 엑셀 내보내기 (Sample Templates)
├── Filament/                   ← Filament Admin Panel
│   └── Resources/              (15개 Resource — 아래 참조)
├── Http/
│   ├── Controllers/
│   │   ├── Api/V1/             (InventoryController, OrderController)
│   │   └── PlanController.php  (문서 허브)
│   ├── Middleware/              (AuthenticateApiKey)
│   ├── Requests/               (StoreOrderRequest 등)
│   └── Resources/              (API Resource 변환기)
├── Jobs/                       ← Queue 작업
├── Models/                     ← 공통 모델 (CommonCode, Setting, User)
├── Policies/                   ← 공통 정책
└── Providers/                  ← 서비스 프로바이더

3. Filament Resources (Admin 화면)

Resource 도메인 핵심 기능
ProductResource Product 상품 CRUD + 공통코드 연결 + SKU 매핑
SalesChannelResource SalesChannel 채널 관리 + API Key
InventoryResource Inventory 재고 조회 + 입/출/조정 액션
AllocationResource Inventory 채널별 재고 할당
InboundResource Inventory 입고 관리
StockLogResource Inventory 입출고 이력 조회
StockTakeResource Inventory 재고 실사
AssetValueResource Inventory 재고 자산 가치
MovementSummaryResource Inventory 입출고 요약
OrderResource Order 주문 관리 + 상태 탭 + Excel Import
ReturnRequestResource Order 반품 관리
PurchaseOrderResource Purchasing 구매 발주 관리
SupplierResource Purchasing 공급업체 관리
CommonCodeResource System 공통코드 (브랜드/카테고리/색상/단위)
UserResource System 사용자 관리

4. 핵심 서비스 로직

4.1 InventoryService

재고 변동의 중심 서비스. 모든 재고 관련 작업은 DB 트랜잭션 + Stock Log 기록.

4.2 OrderService

주문 상태 전이를 관리. OrderStatus Enum 사용:

모든 상태값은 App\Domains\Order\Enums\OrderStatus Enum으로 관리됩니다.

4.3 PurchaseService

구매 발주 라이프사이클 관리.

4.4 SafetyStockService

안전재고 자동 계산 + 발주점 알림.

4.5 Activity Log

spatie/laravel-activitylog 기반 변경 이력 자동 추적.


5. API 계층

routes/api.php
  └── prefix('v1') + middleware(AuthenticateApiKey)
        ├── GET  /inventory        → InventoryController@index
        ├── GET  /inventory/{sku}  → InventoryController@show
        └── POST /orders           → OrderController@store

인증 흐름:

  1. X-Api-Key 헤더 확인
  2. sales_channels 테이블에서 api_key 매칭
  3. 매칭된 SalesChannel 객체를 $request->attributes에 주입
  4. 컨트롤러에서 채널 기반 데이터 필터링

6. 코드 규칙

← 문서 목록으로