"""공개 설정 엔드포인트

이 엔드포인트의 scope:
- 민감정보 없는, 프론트 동작에 필수인 최소 공개 설정만 제공.
- 임의의 서버 설정을 프론트에 노출하는 범용 창구가 아님.
- 필드 추가 시 "민감정보 여부 + 프론트 필수 여부" 2가지 기준 통과 필요.
"""

from fastapi import APIRouter
from pydantic import BaseModel

from core.config import settings

router = APIRouter()


class UploadPublicConfig(BaseModel):
    max_bytes: int


class PublicConfigResponse(BaseModel):
    upload: UploadPublicConfig


@router.get("/public", response_model=PublicConfigResponse)
async def get_public_config() -> PublicConfigResponse:
    """프론트가 초기 로드 시 조회하는 공개 설정.

    현재 제공: upload.max_bytes (업로드 pre-check UX 용도).
    slack_ratio, stream_chunk_bytes 등 서버 내부 정책은 노출하지 않음.
    """
    return PublicConfigResponse(
        upload=UploadPublicConfig(max_bytes=settings.upload.max_bytes),
    )
