from fastapi import APIRouter, Depends, Query from common.models.gmodel import PageParams from router.v1.validator.dependencies import RemoveNoneResponse, RequireDeveloper from services.ops_service import OpsService from .protocol import Res_OpsSites, Res_OpsUsers # 내부 운영(개발자) 전용 조회 — 회사 스코프를 걷어낸 전 계정 사이트·유저 목록. # admin/frontend(:9801)를 새 도메인으로 키우는 대신 solution 앱(:9800)에 경량으로 얹은 것이다 # (2026-09-23 기획). RequireDeveloper 가 유일한 문이다 — OWNER(사장님)는 관리할 하위 계정이 # 없어(2026-09-08 회사/테넌트 걷어냄) 이 화면을 볼 이유가 없다. router = APIRouter(prefix="/v1/ops", tags=["Ops"]) @router.get(path="/sites", response_model=Res_OpsSites, summary="전 계정 사이트 목록(개발자 전용)") async def list_sites(service: OpsService = Depends(), pg: PageParams = Depends(), _user=Depends(RequireDeveloper)): return RemoveNoneResponse(await service.list_sites(pg)) @router.get(path="/users", response_model=Res_OpsUsers, summary="전 계정 목록(개발자 전용)") async def list_users( service: OpsService = Depends(), pg: PageParams = Depends(), search: str | None = Query(None, description="이메일·이름·로그인 아이디 부분 일치"), _user=Depends(RequireDeveloper), ): return RemoveNoneResponse(await service.list_users(pg, search))