feat(malaysia): 말레이시아 창고 재고관리 모듈 추가
- 신규 모듈 app/modules/malaysia (prefix /malaysia, 권한키 malaysia) - malaysia_stock_db: warehouses/malaysia_items/set_bom/stock_movement/ daily_stocktake/daily_stocktake_line (멱등 init SQL) - 낱개(MT/MX/MZ) 입출고·조정 movement, 세트(MY) BOM 관리, 세트 출고 BOM 분해 - 일일 재고조사: 세트→낱개 자동 분해(direct+from_set=total), 확정 시 차이만 STOCKTAKE - prefix 검증 이중화(DB CHECK + store.py 순수함수), MD- 전면 제외 - 상품명은 itemcode_db 읽기 전용 재사용(중복 마스터 없음) - 화면 4종 + JSON API, 순수로직 테스트 14건, README/docs 갱신 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""말레이시아 창고 재고관리(malaysia) 모듈.
|
||||
|
||||
라우터/저장소/템플릿을 한 디렉토리에서 관리한다.
|
||||
- 라우터: `router.py` (FastAPI APIRouter, prefix=/malaysia)
|
||||
- 저장소: `db.py` (malaysia_stock_db / PostgreSQL 전용) + `store.py` (상수/순수 계산)
|
||||
- 상품명: 전역 `app.state.itemcode_reader`(itemcode_db 읽기 전용) 재사용
|
||||
- 템플릿: `templates/malaysia/`
|
||||
|
||||
데이터 저장은 malaysia_stock_db 전용이다. MALAYSIA_STOCK_DB_URL 미설정 시
|
||||
build_malaysia_store 는 None 을 반환하고, 라우터가 "설정 필요" 안내 페이지를
|
||||
보여준다(앱은 죽지 않음).
|
||||
"""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from . import store
|
||||
from .router import router
|
||||
from .store import (
|
||||
MOVEMENT_TYPES,
|
||||
STOCKTAKE_STATUSES,
|
||||
explode_set,
|
||||
explode_stocktake,
|
||||
missing_bom_sets,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"router",
|
||||
"store",
|
||||
"MOVEMENT_TYPES",
|
||||
"STOCKTAKE_STATUSES",
|
||||
"explode_set",
|
||||
"explode_stocktake",
|
||||
"missing_bom_sets",
|
||||
"build_malaysia_store",
|
||||
]
|
||||
|
||||
|
||||
def build_malaysia_store(*, dsn: str | None) -> Any:
|
||||
"""MALAYSIA_STOCK_DB_URL 이 있으면 MalaysiaStockStore, 없으면 None.
|
||||
|
||||
JSON 폴백을 두지 않는다(운영 데이터 분기 방지). None 이면 라우터가 안내 페이지 표시.
|
||||
"""
|
||||
if not dsn:
|
||||
return None
|
||||
from .db import MalaysiaStockStore # 지연 import (개발 환경 deps 없을 수 있음)
|
||||
|
||||
return MalaysiaStockStore(dsn)
|
||||
Reference in New Issue
Block a user