"""Per-tree AI model policy — owner-only admin view.""" import uuid from fastapi import APIRouter from app.api.deps import CurrentUser, SessionDep from app.schemas.ai_policy import TreeAiPolicyRead, TreeAiPolicyUpdate from app.services import ai_policy_service, tree_service router = APIRouter(prefix="/trees", tags=["ai"]) @router.get("/{tree_id}/ai", response_model=TreeAiPolicyRead) async def get_ai_policy( tree_id: uuid.UUID, session: SessionDep, current: CurrentUser ) -> TreeAiPolicyRead: tree = await tree_service.get_tree(session, viewer_id=current.id, tree_id=tree_id) return TreeAiPolicyRead(**await ai_policy_service.get_policy(session, actor=current, tree=tree)) @router.patch("/{tree_id}/ai", response_model=TreeAiPolicyRead) async def update_ai_policy( tree_id: uuid.UUID, data: TreeAiPolicyUpdate, session: SessionDep, current: CurrentUser ) -> TreeAiPolicyRead: tree = await tree_service.get_tree(session, viewer_id=current.id, tree_id=tree_id) policy = await ai_policy_service.update_policy( session, actor=current, tree=tree, member_provider=data.member_provider, recommender_provider=data.recommender_provider, ) return TreeAiPolicyRead(**policy)