bug fixes
This commit is contained in:
parent
83120174a6
commit
13fe32577f
@ -1597,6 +1597,33 @@ def videomae_model_status() -> dict:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def detector_model_status(load: bool = False) -> dict:
|
||||||
|
current_model = get_model() if load else model
|
||||||
|
names = getattr(current_model, "names", {}) or {} if current_model is not None else {}
|
||||||
|
|
||||||
|
expected_text = str(DEFAULT_MODEL_PATH)
|
||||||
|
exists = False
|
||||||
|
error = _MODEL_ERROR
|
||||||
|
|
||||||
|
try:
|
||||||
|
expected = resolve_model_path()
|
||||||
|
expected_text = str(expected)
|
||||||
|
exists = True
|
||||||
|
except Exception as exc:
|
||||||
|
if not error:
|
||||||
|
error = str(exc)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"modelAvailable": exists,
|
||||||
|
"modelLoaded": current_model is not None,
|
||||||
|
"model": _MODEL_PATH or (expected_text if exists else ""),
|
||||||
|
"modelError": error,
|
||||||
|
"expectedModel": expected_text,
|
||||||
|
"classCount": len(names),
|
||||||
|
"classes": list(names.values())[:80] if isinstance(names, dict) else names,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.post("/predict-batch", dependencies=[Depends(require_ai_server_auth)])
|
@app.post("/predict-batch", dependencies=[Depends(require_ai_server_auth)])
|
||||||
def predict_batch(req: PredictBatchRequest):
|
def predict_batch(req: PredictBatchRequest):
|
||||||
paths = [str(path).strip() for path in req.paths if str(path).strip()]
|
paths = [str(path).strip() for path in req.paths if str(path).strip()]
|
||||||
@ -1707,23 +1734,15 @@ def predict_position_clips(req: PredictPositionClipsRequest):
|
|||||||
|
|
||||||
@app.get("/health", dependencies=[Depends(require_ai_server_auth)])
|
@app.get("/health", dependencies=[Depends(require_ai_server_auth)])
|
||||||
def health():
|
def health():
|
||||||
current_model = get_model()
|
|
||||||
names = getattr(current_model, "names", {}) or {} if current_model is not None else {}
|
|
||||||
|
|
||||||
status_payload = {
|
status_payload = {
|
||||||
"ok": True,
|
"ok": True,
|
||||||
"ready": True,
|
"ready": True,
|
||||||
"modelAvailable": current_model is not None,
|
|
||||||
"model": _MODEL_PATH,
|
|
||||||
"modelError": _MODEL_ERROR,
|
|
||||||
"expectedModel": str(DEFAULT_MODEL_PATH),
|
|
||||||
"trainingRoot": str(TRAINING_ROOT),
|
"trainingRoot": str(TRAINING_ROOT),
|
||||||
"classCount": len(names),
|
|
||||||
"classes": list(names.values())[:80] if isinstance(names, dict) else names,
|
|
||||||
"labelConfig": str(DETECTION_LABELS_PATH) if DETECTION_LABELS_PATH else "",
|
"labelConfig": str(DETECTION_LABELS_PATH) if DETECTION_LABELS_PATH else "",
|
||||||
"labelError": _LABEL_ERROR,
|
"labelError": _LABEL_ERROR,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status_payload.update(detector_model_status(load=False))
|
||||||
status_payload.update(pose_model_status())
|
status_payload.update(pose_model_status())
|
||||||
status_payload.update(videomae_model_status())
|
status_payload.update(videomae_model_status())
|
||||||
return status_payload
|
return status_payload
|
||||||
@ -1756,23 +1775,15 @@ def reload_model():
|
|||||||
_VIDEOMAE_DEVICE_ACTIVE = ""
|
_VIDEOMAE_DEVICE_ACTIVE = ""
|
||||||
DETECTION_LABELS_PATH = None
|
DETECTION_LABELS_PATH = None
|
||||||
|
|
||||||
current_model = get_model()
|
|
||||||
names = getattr(current_model, "names", {}) or {} if current_model is not None else {}
|
|
||||||
|
|
||||||
status_payload = {
|
status_payload = {
|
||||||
"ok": True,
|
"ok": True,
|
||||||
"ready": True,
|
"ready": True,
|
||||||
"modelAvailable": current_model is not None,
|
|
||||||
"model": _MODEL_PATH,
|
|
||||||
"modelError": _MODEL_ERROR,
|
|
||||||
"expectedModel": str(DEFAULT_MODEL_PATH),
|
|
||||||
"trainingRoot": str(TRAINING_ROOT),
|
"trainingRoot": str(TRAINING_ROOT),
|
||||||
"classCount": len(names),
|
|
||||||
"classes": list(names.values())[:80] if isinstance(names, dict) else names,
|
|
||||||
"labelConfig": str(DETECTION_LABELS_PATH) if DETECTION_LABELS_PATH else "",
|
"labelConfig": str(DETECTION_LABELS_PATH) if DETECTION_LABELS_PATH else "",
|
||||||
"labelError": _LABEL_ERROR,
|
"labelError": _LABEL_ERROR,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status_payload.update(detector_model_status(load=True))
|
||||||
status_payload.update(pose_model_status())
|
status_payload.update(pose_model_status())
|
||||||
status_payload.update(videomae_model_status())
|
status_payload.update(videomae_model_status())
|
||||||
return status_payload
|
return status_payload
|
||||||
|
|||||||
BIN
backend/dist/nsfwapp-linux-amd64
vendored
BIN
backend/dist/nsfwapp-linux-amd64
vendored
Binary file not shown.
BIN
backend/dist/nsfwapp.exe
vendored
BIN
backend/dist/nsfwapp.exe
vendored
Binary file not shown.
BIN
backend/dist/nsfwapp_amd64.deb
vendored
BIN
backend/dist/nsfwapp_amd64.deb
vendored
Binary file not shown.
@ -633,10 +633,7 @@ func startAIServer(ctx context.Context) (*aiServerProcess, error) {
|
|||||||
close(proc.done)
|
close(proc.done)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
waitCtx, cancel := context.WithTimeout(ctx, 30*time.Second)
|
if err := waitForAIServer(ctx, aiServerURL(), 120*time.Second); err != nil {
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if err := waitForAIServer(waitCtx, aiServerURL(), 30*time.Second); err != nil {
|
|
||||||
appLogln("⚠️ AI Server noch nicht bereit:", err)
|
appLogln("⚠️ AI Server noch nicht bereit:", err)
|
||||||
// Nicht hart abbrechen. Deine Analyse kann auf den Fallback gehen.
|
// Nicht hart abbrechen. Deine Analyse kann auf den Fallback gehen.
|
||||||
return proc, nil
|
return proc, nil
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user