from typing import Annotated from fastapi import APIRouter, Depends, Path, Query from fastapi.responses import JSONResponse from app.common.response import ResponseSchema, SuccessResponse from app.core.base_schema import AuthSchema from app.core.dependencies import AuthPermission from app.core.router_class import OperationLogRoute from .schema import TemplateConfigSaveSchema, TemplateSingleChapterConfigSaveSchema from .service import TemplateConfigService TemplateConfigRouter = APIRouter(route_class=OperationLogRoute, prefix="/attachment-template/config", tags=["能源报告模板配置"]) @TemplateConfigRouter.get( "/detail", summary="查询模板章节规则和变量关联配置", response_model=ResponseSchema[dict], ) async def get_template_config_detail_controller( template_id: Annotated[int, Query(ge=1, description="模板ID")], auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:attachment_template:detail"]))], ) -> JSONResponse: result = await TemplateConfigService(auth).detail(template_id=template_id) return SuccessResponse(data=result, msg="查询模板配置成功") @TemplateConfigRouter.post( "/save", summary="统一保存模板章节规则和变量关联配置", response_model=ResponseSchema[dict], ) async def save_template_config_controller( data: TemplateConfigSaveSchema, auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:attachment_template:update"]))], ) -> JSONResponse: result = await TemplateConfigService(auth).save(data=data) return SuccessResponse(data=result, msg="保存模板配置成功") @TemplateConfigRouter.post( "/chapter/create", summary="创建单个章节标注并保存变量关联", response_model=ResponseSchema[dict], ) async def create_template_chapter_config_controller( data: TemplateSingleChapterConfigSaveSchema, auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:attachment_template:update"]))], ) -> JSONResponse: result = await TemplateConfigService(auth).create_chapter_config(data=data) return SuccessResponse(data=result, msg="创建章节标注变量配置成功") @TemplateConfigRouter.put( "/chapter/update/{chapter_id}", summary="更新单个章节标注并保存变量关联", response_model=ResponseSchema[dict], ) async def update_template_chapter_config_controller( data: TemplateSingleChapterConfigSaveSchema, chapter_id: Annotated[int, Path(ge=1, description="章节标注ID")], auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:attachment_template:update"]))], ) -> JSONResponse: result = await TemplateConfigService(auth).update_chapter_config(chapter_id=chapter_id, data=data) return SuccessResponse(data=result, msg="更新章节标注变量配置成功")