refactor(P6): standardize route variable naming to router
Some checks failed
CI / ruff (push) Successful in 9s
CI / pytest (push) Has been cancelled
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled

All route files (admin.py, store.py) now export `router` instead of
`admin_router`/`store_router`. Consumer code (definition.py, __init__.py)
imports as `router as admin_router` where distinction is needed.
ModuleDefinition fields remain admin_router/store_router.

64 files changed across all modules. Architecture rules, docs, and
migration plan updated. Added noqa:API001 support to validator for
pre-existing raw dict endpoints now visible with standardized router name.
All 1114 tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 11:05:34 +01:00
parent 8c0967e215
commit 30c4593e0f
65 changed files with 376 additions and 355 deletions

View File

@@ -63,7 +63,7 @@ from app.modules.tenancy.models import User # API-007
logger = logging.getLogger(__name__)
# Store router with module access control
store_router = APIRouter(
router = APIRouter(
prefix="/loyalty",
dependencies=[Depends(require_module_access("loyalty", FrontendType.STORE))],
)
@@ -86,7 +86,7 @@ def get_store_merchant_id(db: Session, store_id: int) -> int:
# =============================================================================
@store_router.get("/program", response_model=ProgramResponse)
@router.get("/program", response_model=ProgramResponse)
def get_program(
current_user: User = Depends(get_current_store_api),
db: Session = Depends(get_db),
@@ -104,7 +104,7 @@ def get_program(
return response
@store_router.get("/stats", response_model=ProgramStatsResponse)
@router.get("/stats", response_model=ProgramStatsResponse)
def get_stats(
current_user: User = Depends(get_current_store_api),
db: Session = Depends(get_db),
@@ -118,7 +118,7 @@ def get_stats(
return ProgramStatsResponse(**stats)
@store_router.get("/stats/merchant", response_model=MerchantStatsResponse)
@router.get("/stats/merchant", response_model=MerchantStatsResponse)
def get_merchant_stats(
current_user: User = Depends(get_current_store_api),
db: Session = Depends(get_db),
@@ -137,7 +137,7 @@ def get_merchant_stats(
# =============================================================================
@store_router.get("/pins", response_model=PinListResponse)
@router.get("/pins", response_model=PinListResponse)
def list_pins(
current_user: User = Depends(get_current_store_api),
db: Session = Depends(get_db),
@@ -156,7 +156,7 @@ def list_pins(
)
@store_router.post("/pins", response_model=PinResponse, status_code=201)
@router.post("/pins", response_model=PinResponse, status_code=201)
def create_pin(
data: PinCreate,
current_user: User = Depends(get_current_store_api),
@@ -171,7 +171,7 @@ def create_pin(
return PinResponse.model_validate(pin)
@store_router.patch("/pins/{pin_id}", response_model=PinResponse)
@router.patch("/pins/{pin_id}", response_model=PinResponse)
def update_pin(
pin_id: int = Path(..., gt=0),
data: PinUpdate = None,
@@ -183,7 +183,7 @@ def update_pin(
return PinResponse.model_validate(pin)
@store_router.delete("/pins/{pin_id}", status_code=204)
@router.delete("/pins/{pin_id}", status_code=204)
def delete_pin(
pin_id: int = Path(..., gt=0),
current_user: User = Depends(get_current_store_api),
@@ -193,7 +193,7 @@ def delete_pin(
pin_service.delete_pin(db, pin_id)
@store_router.post("/pins/{pin_id}/unlock", response_model=PinResponse)
@router.post("/pins/{pin_id}/unlock", response_model=PinResponse)
def unlock_pin(
pin_id: int = Path(..., gt=0),
current_user: User = Depends(get_current_store_api),
@@ -209,7 +209,7 @@ def unlock_pin(
# =============================================================================
@store_router.get("/cards", response_model=CardListResponse)
@router.get("/cards", response_model=CardListResponse)
def list_cards(
skip: int = Query(0, ge=0),
limit: int = Query(50, ge=1, le=100),
@@ -316,7 +316,7 @@ def _build_card_lookup_response(card, db=None) -> CardLookupResponse:
)
@store_router.get("/cards/lookup", response_model=CardLookupResponse)
@router.get("/cards/lookup", response_model=CardLookupResponse)
def search_card(
request: Request,
q: str = Query(..., description="Search by email, card number, or name"),
@@ -340,7 +340,7 @@ def search_card(
return _build_card_lookup_response(card, db)
@store_router.post("/cards/lookup", response_model=CardLookupResponse)
@router.post("/cards/lookup", response_model=CardLookupResponse)
def lookup_card(
request: Request,
card_id: int | None = Query(None),
@@ -369,7 +369,7 @@ def lookup_card(
return _build_card_lookup_response(card, db)
@store_router.get("/cards/{card_id}", response_model=CardDetailResponse)
@router.get("/cards/{card_id}", response_model=CardDetailResponse)
def get_card_detail(
card_id: int = Path(..., gt=0),
current_user: User = Depends(get_current_store_api),
@@ -421,7 +421,7 @@ def get_card_detail(
)
@store_router.get("/transactions", response_model=TransactionListResponse)
@router.get("/transactions", response_model=TransactionListResponse)
def list_store_transactions(
skip: int = Query(0, ge=0),
limit: int = Query(10, ge=1, le=100),
@@ -446,7 +446,7 @@ def list_store_transactions(
return TransactionListResponse(transactions=tx_responses, total=total)
@store_router.post("/cards/enroll", response_model=CardResponse, status_code=201)
@router.post("/cards/enroll", response_model=CardResponse, status_code=201)
def enroll_customer(
data: CardEnrollRequest,
current_user: User = Depends(get_current_store_api),
@@ -491,7 +491,7 @@ def enroll_customer(
)
@store_router.get("/cards/{card_id}/transactions", response_model=TransactionListResponse)
@router.get("/cards/{card_id}/transactions", response_model=TransactionListResponse)
def get_card_transactions(
card_id: int = Path(..., gt=0),
skip: int = Query(0, ge=0),
@@ -520,7 +520,7 @@ def get_card_transactions(
# =============================================================================
@store_router.post("/stamp", response_model=StampResponse)
@router.post("/stamp", response_model=StampResponse)
def add_stamp(
request: Request,
data: StampRequest,
@@ -546,7 +546,7 @@ def add_stamp(
return StampResponse(**result)
@store_router.post("/stamp/redeem", response_model=StampRedeemResponse)
@router.post("/stamp/redeem", response_model=StampRedeemResponse)
def redeem_stamps(
request: Request,
data: StampRedeemRequest,
@@ -572,7 +572,7 @@ def redeem_stamps(
return StampRedeemResponse(**result)
@store_router.post("/stamp/void", response_model=StampVoidResponse)
@router.post("/stamp/void", response_model=StampVoidResponse)
def void_stamps(
request: Request,
data: StampVoidRequest,
@@ -605,7 +605,7 @@ def void_stamps(
# =============================================================================
@store_router.post("/points/earn", response_model=PointsEarnResponse)
@router.post("/points/earn", response_model=PointsEarnResponse)
def earn_points(
request: Request,
data: PointsEarnRequest,
@@ -633,7 +633,7 @@ def earn_points(
return PointsEarnResponse(**result)
@store_router.post("/points/redeem", response_model=PointsRedeemResponse)
@router.post("/points/redeem", response_model=PointsRedeemResponse)
def redeem_points(
request: Request,
data: PointsRedeemRequest,
@@ -660,7 +660,7 @@ def redeem_points(
return PointsRedeemResponse(**result)
@store_router.post("/points/void", response_model=PointsVoidResponse)
@router.post("/points/void", response_model=PointsVoidResponse)
def void_points(
request: Request,
data: PointsVoidRequest,
@@ -689,7 +689,7 @@ def void_points(
return PointsVoidResponse(**result)
@store_router.post("/cards/{card_id}/points/adjust", response_model=PointsAdjustResponse)
@router.post("/cards/{card_id}/points/adjust", response_model=PointsAdjustResponse)
def adjust_points(
request: Request,
data: PointsAdjustRequest,