完成项目推理模块的接口测试

This commit is contained in:
2025-04-23 16:38:55 +08:00
parent 0033746fe1
commit 5b38e91f61
8 changed files with 234 additions and 94 deletions

View File

@ -27,25 +27,27 @@ class ProjectDetectDal(DalBase):
self.model = models.ProjectDetect
self.schema = schemas.ProjectDetectOut
async def check_name(self, name: str,project_id: int) -> bool:
async def check_name(self, name: str, project_id: int) -> bool:
"""
校验推理集合名称
"""
count = self.get_count(
count = await self.get_count(
v_where=[models.ProjectDetect.project_id == project_id, models.ProjectDetect.detect_name == name])
return count > 0
async def add_detect(self, data: schemas.ProjectDetectIn):
async def add_detect(self, data: schemas.ProjectDetectIn, user_id: int):
"""
新增集合
"""
detect = models.ProjectDetect(**data.model_dump())
detect = self.model(**data.model_dump())
detect.detect_no = random_str(6)
detect.detect_version = 0
detect.detect_status = '0'
url = os.create_folder(detect_url, detect.detect_no, 'images')
detect.folder_url = url
await self.create_data(data)
detect.user_id = user_id
if detect.file_type != 'rtsp':
url = os.create_folder(detect_url, detect.detect_no, 'images')
detect.folder_url = url
await self.create_model(detect)
return detect
async def delete_detects(self, ids: list[int]):
@ -55,10 +57,17 @@ class ProjectDetectDal(DalBase):
for id_ in ids:
detect_info = await self.get_data(data_id=id_)
if detect_info.file_type != 'rtsp':
os.delete_paths(detect_info.folder_url)
logs = await ProjectDetectLogDal(self.db).get_datas(v_where=[models.ProjectDetectLog.detect_id == ids])
os.delete_paths([detect_info.folder_url])
logs = await ProjectDetectLogDal(self.db).get_datas(v_where=[models.ProjectDetectLog.detect_id == id_])
log_ids = []
log_urls = []
for log in logs:
os.delete_paths(log.folder_url)
log_urls.append(log.folder_url)
log_ids.append(log.id)
if log_ids:
await ProjectDetectLogDal(self.db).delete_datas(ids=log_ids, v_soft=False)
if log_urls:
os.delete_paths(log_urls)
await self.delete_datas(ids=ids, v_soft=False)
@ -71,10 +80,10 @@ class ProjectDetectFileDal(DalBase):
self.schema = schemas.ProjectDetectFileOut
async def file_count(self, detect_id: int) -> int:
count = self.get_count(v_where=[models.ProjectDetectFile.detect_id == detect_id])
count = await self.get_count(v_where=[models.ProjectDetectFile.detect_id == detect_id])
return count
async def add_file(self, detect: models.ProjectDetect, files: list[UploadFile]):
async def add_files(self, detect: models.ProjectDetect, files: list[UploadFile], user_id: int):
images = []
obs = MyObs()
for file in files:
@ -83,23 +92,24 @@ class ProjectDetectFileDal(DalBase):
image.file_name = file.filename
# 保存原图
path = os.save_images(detect.folder_url, file=file)
image.image_url = path
image.file_url = path
image.user_id = user_id
# 上传到obs
object_key = detect.detect_no + '/' + file.filename
success, key, url = obs.put_file(object_key=object_key, file_path=path)
if success:
image.object_key = object_key
image.thumb_image_url = url
image.thumb_file_url = url
else:
raise CustomException("obs上传失败", code=status.HTTP_ERROR)
images.append(image)
await self.create_datas(images)
await self.create_models(images)
async def delete_files(self, ids: list[int]):
file_urls = []
object_keys = []
for id_ in ids:
file = self.get_data(data_id=id_)
file = await self.get_data(data_id=id_)
if file:
file_urls.append(file.file_url)
object_keys.append(file.object_key)
@ -107,13 +117,14 @@ class ProjectDetectFileDal(DalBase):
MyObs().del_objects(object_keys)
await self.delete_datas(ids, v_soft=False)
class ProjectDetectLogDal(DalBase):
def __init__(self, db: AsyncSession):
super(ProjectDetectLogDal, self).__init__()
self.db = db
self.model = models.ProjectDetectLog
self.schema = schemas.ProjectDetectLogSimpleOut
self.schema = schemas.ProjectDetectLogOut
class ProjectDetectLogFileDal(DalBase):