| 
									
										
										
										
											2025-09-03 20:07:38 +08:00
										 |  |  |  | from datetime import datetime | 
					
						
							|  |  |  |  | from pydantic import BaseModel, Field | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  | from typing import List, Optional | 
					
						
							| 
									
										
										
										
											2025-09-03 20:07:38 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | # ------------------------------ | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  | # 请求模型(前端传参校验)- 保留update的eigenvalue(如需更新特征值) | 
					
						
							| 
									
										
										
										
											2025-09-03 20:07:38 +08:00
										 |  |  |  | # ------------------------------ | 
					
						
							|  |  |  |  | class FaceCreateRequest(BaseModel): | 
					
						
							| 
									
										
										
										
											2025-09-08 17:34:23 +08:00
										 |  |  |  |     """创建人脸记录请求模型(无需ID、由数据库自增)""" | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  |     name: Optional[str] = Field(None, max_length=255, description="名称(可选、最长255字符)") | 
					
						
							| 
									
										
										
										
											2025-09-03 20:07:38 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class FaceUpdateRequest(BaseModel): | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  |     """更新人脸记录请求模型 - 保留eigenvalue(如需更新特征值,不影响返回)""" | 
					
						
							|  |  |  |  |     name: Optional[str] = Field(None, max_length=255, description="名称(可选)") | 
					
						
							|  |  |  |  |     eigenvalue: Optional[str] = Field(None, description="特征值(可选,文件处理后可更新)")  # 保留更新能力 | 
					
						
							|  |  |  |  |     address: Optional[str] = Field(None, description="图片完整路径(可选,更新图片时使用)") | 
					
						
							| 
									
										
										
										
											2025-09-03 20:07:38 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | # ------------------------------ | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  | # 响应模型(后端返回数据)- 核心修改:删除eigenvalue字段 | 
					
						
							| 
									
										
										
										
											2025-09-03 20:07:38 +08:00
										 |  |  |  | # ------------------------------ | 
					
						
							|  |  |  |  | class FaceResponse(BaseModel): | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  |     """人脸记录响应模型(仅返回需要的字段,移除eigenvalue)""" | 
					
						
							| 
									
										
										
										
											2025-09-03 21:41:26 +08:00
										 |  |  |  |     id: int = Field(..., description="主键ID(数据库自增)") | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  |     name: Optional[str] = Field(None, description="名称") | 
					
						
							|  |  |  |  |     address: Optional[str] = Field(None, description="人脸图片完整保存路径(数据库新增字段)")  # 仅保留address | 
					
						
							|  |  |  |  |     created_at: datetime = Field(..., description="记录创建时间(数据库自动生成)") | 
					
						
							|  |  |  |  |     updated_at: datetime = Field(..., description="记录更新时间(数据库自动生成)") | 
					
						
							| 
									
										
										
										
											2025-09-03 20:07:38 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  |     # 关键配置:支持从数据库查询结果(字典)直接转换 | 
					
						
							| 
									
										
										
										
											2025-09-04 22:59:27 +08:00
										 |  |  |  |     model_config = {"from_attributes": True} | 
					
						
							| 
									
										
										
										
											2025-09-12 14:05:09 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class FaceListResponse(BaseModel): | 
					
						
							|  |  |  |  |     """人脸列表分页响应模型(结构不变,内部FaceResponse已移除eigenvalue)""" | 
					
						
							|  |  |  |  |     total: int = Field(..., description="筛选后的总记录数") | 
					
						
							|  |  |  |  |     faces: List[FaceResponse] = Field(..., description="当前页的人脸记录列表") | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     model_config = {"from_attributes": True} |