Skip to content

Commit e911685

Browse files
committed
[Fix]
1 parent 6caad3f commit e911685

2 files changed

Lines changed: 13 additions & 43 deletions

File tree

BE/app/api/internal.py

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -81,28 +81,22 @@ async def create_event(
8181
return success_response(EventItem.model_validate(event).model_dump())
8282

8383

84-
@router.patch("/events/by-ai-id/{ai_event_id}/video", status_code=200)
85-
async def attach_event_video(
84+
@router.post("/events/broadcast", status_code=200)
85+
async def broadcast_only(
8686
request: Request,
87-
ai_event_id: str,
88-
video: UploadFile | None = File(None),
89-
db: Session = Depends(get_db),
87+
camera_id: str = Form(...),
88+
anomaly_type: str = Form("fight"),
89+
confidence: float = Form(...),
90+
detected_at: str = Form(...),
9091
):
9192
_check_callback_secret(request)
92-
form = await request.form()
93-
video_bytes = await video.read() if video else None
94-
thumbnail_bytes_list = []
95-
thumb_index = 1
96-
while True:
97-
thumb_upload = form.get(f"thumb_{thumb_index}")
98-
if not isinstance(thumb_upload, (UploadFile, StarletteUploadFile)):
99-
break
100-
thumbnail_bytes_list.append(await thumb_upload.read())
101-
thumb_index += 1
102-
event = EventService.attach_video(db, ai_event_id, video_bytes, thumbnail_bytes_list)
103-
if not event:
104-
raise AppException(status_code=404, code="NOT_FOUND", message="이벤트를 찾을 수 없습니다.")
105-
return success_response(EventItem.model_validate(event).model_dump())
93+
await broadcast_event(camera_id, {
94+
"camera_id": camera_id,
95+
"anomaly_type": anomaly_type,
96+
"confidence": confidence,
97+
"detected_at": detected_at,
98+
})
99+
return success_response({"broadcast": True})
106100

107101

108102
@router.post("/event-payloads", status_code=201)

BE/app/services/event_service.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -102,30 +102,6 @@ def list_events(
102102
def get(db: Session, event_id: int) -> Event | None:
103103
return db.get(Event, event_id)
104104

105-
@staticmethod
106-
def attach_video(
107-
db: Session,
108-
ai_event_id: str,
109-
video_bytes: bytes | None = None,
110-
thumbnail_bytes_list: list[bytes] | None = None,
111-
) -> Event | None:
112-
event = db.query(Event).filter(Event.ai_event_id == ai_event_id).first()
113-
if not event:
114-
return None
115-
if video_bytes:
116-
event.s3_key = s3_client.upload_event_video(video_bytes, event.camera_id, event.detected_at)
117-
existing_keys = json.loads(event.thumbnail_s3_keys or "[]")
118-
for image_bytes in thumbnail_bytes_list or []:
119-
if not image_bytes:
120-
continue
121-
thumb_key = s3_client.upload_event_thumbnail(image_bytes, event.camera_id, event.detected_at)
122-
existing_keys.append(thumb_key)
123-
if thumbnail_bytes_list:
124-
event.thumbnail_s3_keys = json.dumps(existing_keys, ensure_ascii=False)
125-
db.commit()
126-
db.refresh(event)
127-
return event
128-
129105
@staticmethod
130106
def update_status(db: Session, event: Event, status: str) -> Event:
131107
if status not in EventService.ALLOWED_STATUSES:

0 commit comments

Comments
 (0)