16c6fb2e07
Replace five duplicated uuid::Uuid::parse_str calls in web handlers (analyze, document view, delete, reset, case detail) with a CaseIdPath extractor that validates the URL segment once and returns the legacy "Invalid case_id" 400 body byte-for-byte. The extractor uses axum's FromRequestParts and maps any failure to AppError::BadRequest, so IntoResponse handling is unchanged.