"""任务记录 CRUD — 编辑 / 删除""" import json import uuid from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.models.task import TaskRecord from app.schemas.task import TaskRecordCreate, TaskRecordResponse from app.services.auth_service import get_current_user router = APIRouter(prefix="/records", tags=["任务记录"]) async def _get_record_or_404(db: AsyncSession, record_id: int) -> TaskRecord: result = await db.execute(select(TaskRecord).where(TaskRecord.id == record_id)) record = result.scalar_one_or_none() if not record: raise HTTPException(status_code=404, detail=f"记录不存在: {record_id}") return record @router.put("/{record_id}", response_model=TaskRecordResponse) async def update_record( record_id: int, data: TaskRecordCreate, db: AsyncSession = Depends(get_db), current_user: dict = Depends(get_current_user), ): """更新任务记录(备注+图片)""" record = await _get_record_or_404(db, record_id) record.remark = data.remark or None record.images = json.dumps(data.images) if data.images else None await db.commit() await db.refresh(record) # 手动反序列化 images return TaskRecordResponse.model_validate(record) @router.delete("/{record_id}") async def delete_record( record_id: int, db: AsyncSession = Depends(get_db), current_user: dict = Depends(get_current_user), ): """删除任务记录""" record = await _get_record_or_404(db, record_id) await db.delete(record) await db.commit() return {"message": "记录已删除"}