"""库存管理路由层 - 薄路由 业务逻辑下沉至 inventory.services.inventory_service,路由只做参数校验与响应组装。 路由前缀: /api/inventory """ from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from typing import Optional from shared.database.database import get_db_session from shared.services.auth_service import get_current_active_user from shared.models.identity import User from ..schemas import InventoryResponse, InventoryCreate, InventoryUpdate, PaginatedResponse from ..services.inventory_service import inventory_service router = APIRouter(prefix="/inventory", tags=["库存管理"]) @router.get("", response_model=PaginatedResponse[InventoryResponse]) async def list_inventory( warehouse_id: Optional[int] = None, product_id: Optional[int] = None, low_stock: bool = False, skip: int = Query(0, ge=0), limit: int = Query(20, ge=1, le=100), db_session: AsyncSession = Depends(get_db_session), current_user: User = Depends(get_current_active_user) ): return await inventory_service.list_inventory(db_session, warehouse_id, product_id, low_stock, skip, limit) @router.post("", response_model=InventoryResponse, status_code=201) async def create_inventory( payload: InventoryCreate, db_session: AsyncSession = Depends(get_db_session), current_user: User = Depends(get_current_active_user) ): return await inventory_service.create_inventory(db_session, payload, current_user) @router.put("/{inventory_id}", response_model=InventoryResponse) async def update_inventory( inventory_id: int, payload: InventoryUpdate, db_session: AsyncSession = Depends(get_db_session), current_user: User = Depends(get_current_active_user) ): return await inventory_service.update_inventory(db_session, inventory_id, payload, current_user) @router.delete("/{inventory_id}") async def delete_inventory( inventory_id: int, db_session: AsyncSession = Depends(get_db_session), current_user: User = Depends(get_current_active_user) ): return await inventory_service.delete_inventory(db_session, inventory_id, current_user)