fix: resolve metadata field mapping and return current_content in prompt template update [AC-IDSMETA-16]
This commit is contained in:
parent
95365298f2
commit
b832f372d1
|
|
@ -17,6 +17,17 @@ from app.models.entities import PromptTemplateCreate, PromptTemplateUpdate
|
||||||
from app.services.prompt.template_service import PromptTemplateService
|
from app.services.prompt.template_service import PromptTemplateService
|
||||||
from app.services.monitoring.prompt_monitor import PromptMonitor
|
from app.services.monitoring.prompt_monitor import PromptMonitor
|
||||||
|
|
||||||
|
|
||||||
|
class PromptTemplateUpdateAPI(BaseModel):
|
||||||
|
"""API model for updating prompt template with metadata field mapping."""
|
||||||
|
name: str | None = None
|
||||||
|
scene: str | None = None
|
||||||
|
description: str | None = None
|
||||||
|
system_instruction: str | None = None
|
||||||
|
variables: list[dict[str, Any]] | None = None
|
||||||
|
is_default: bool | None = None
|
||||||
|
metadata: dict[str, Any] | None = None
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
router = APIRouter(prefix="/admin/prompt-templates", tags=["Prompt Management"])
|
router = APIRouter(prefix="/admin/prompt-templates", tags=["Prompt Management"])
|
||||||
|
|
@ -108,29 +119,47 @@ async def get_template_detail(
|
||||||
@router.put("/{tpl_id}")
|
@router.put("/{tpl_id}")
|
||||||
async def update_template(
|
async def update_template(
|
||||||
tpl_id: uuid.UUID,
|
tpl_id: uuid.UUID,
|
||||||
body: PromptTemplateUpdate,
|
body: PromptTemplateUpdateAPI,
|
||||||
tenant_id: str = Depends(get_tenant_id),
|
tenant_id: str = Depends(get_tenant_id),
|
||||||
session: AsyncSession = Depends(get_session),
|
session: AsyncSession = Depends(get_session),
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
[AC-AISVC-53] Update prompt template (creates a new version).
|
[AC-AISVC-53] Update prompt template (creates a new version).
|
||||||
|
[AC-IDSMETA-16] Return current_content and metadata for frontend display.
|
||||||
"""
|
"""
|
||||||
logger.info(f"[AC-AISVC-53] Updating template for tenant={tenant_id}, id={tpl_id}")
|
logger.info(f"[AC-AISVC-53] Updating template for tenant={tenant_id}, id={tpl_id}")
|
||||||
|
|
||||||
service = PromptTemplateService(session)
|
service = PromptTemplateService(session)
|
||||||
template = await service.update_template(tenant_id, tpl_id, body)
|
|
||||||
|
# Convert API model to entity model (metadata -> metadata_)
|
||||||
|
update_data = PromptTemplateUpdate(
|
||||||
|
name=body.name,
|
||||||
|
scene=body.scene,
|
||||||
|
description=body.description,
|
||||||
|
system_instruction=body.system_instruction,
|
||||||
|
variables=body.variables,
|
||||||
|
is_default=body.is_default,
|
||||||
|
metadata_=body.metadata,
|
||||||
|
)
|
||||||
|
|
||||||
|
template = await service.update_template(tenant_id, tpl_id, update_data)
|
||||||
|
|
||||||
if not template:
|
if not template:
|
||||||
raise HTTPException(status_code=404, detail="Template not found")
|
raise HTTPException(status_code=404, detail="Template not found")
|
||||||
|
|
||||||
published_version = await service.get_published_version_info(tenant_id, template.id)
|
published_version = await service.get_published_version_info(tenant_id, template.id)
|
||||||
|
|
||||||
|
# Get latest version content for current_content
|
||||||
|
latest_version = await service._get_latest_version(template.id)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"id": str(template.id),
|
"id": str(template.id),
|
||||||
"name": template.name,
|
"name": template.name,
|
||||||
"scene": template.scene,
|
"scene": template.scene,
|
||||||
"description": template.description,
|
"description": template.description,
|
||||||
"is_default": template.is_default,
|
"is_default": template.is_default,
|
||||||
|
"current_content": latest_version.content if latest_version else None,
|
||||||
|
"metadata": template.metadata_,
|
||||||
"published_version": published_version,
|
"published_version": published_version,
|
||||||
"created_at": template.created_at.isoformat(),
|
"created_at": template.created_at.isoformat(),
|
||||||
"updated_at": template.updated_at.isoformat(),
|
"updated_at": template.updated_at.isoformat(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue