fix: 2 low findings from audit — consistent 500 match source, accurate return type
Use full_body for the 500 'could not process' permanent-rejection check, consistent with the 400 'face' check on the line above. error_detail is truncated to 100 chars via the fallback path, which could silently miss the phrase in a long response body. Remove | None from process_face_mode return type — every code path returns tuple[int,int] or str; None is unreachable. Update docstring to match.
This commit is contained in:
+1
-1
@@ -573,7 +573,7 @@ def upload_to_frigate(jobs: list[dict]) -> None:
|
||||
_is_permanent = (
|
||||
(resp.status_code == 400 and "face" in full_body.lower())
|
||||
or resp.status_code == 422
|
||||
or (resp.status_code == 500 and "could not process" in error_detail.lower())
|
||||
or (resp.status_code == 500 and "could not process" in full_body.lower())
|
||||
)
|
||||
if _is_permanent:
|
||||
asset_id = asset_map.get(fname)
|
||||
|
||||
@@ -68,11 +68,11 @@ def process_face_mode(
|
||||
count: int,
|
||||
min_width: int | None = None,
|
||||
insightface_app=None,
|
||||
) -> tuple[int, int] | str | None:
|
||||
) -> tuple[int, int] | str:
|
||||
"""Crop face based on Immich metadata and save to output directory.
|
||||
|
||||
Returns (width, height) of the saved crop, a skip-reason string if the
|
||||
face was filtered out, or None if no crop was saved for other reasons.
|
||||
Returns (width, height) of the saved crop, or a skip-reason string if the
|
||||
face was filtered out.
|
||||
When insightface_app is provided and ENABLE_FACE_ALIGNMENT is True,
|
||||
re-detects the face in the Immich bbox region using InsightFace to get
|
||||
precise landmarks for a proper 112x112 aligned crop. Falls back to
|
||||
|
||||
Reference in New Issue
Block a user