feat: integritet zatvaranja taska i putnog naloga
Dodaje status 'spreman_za_zavrsetak' i backend provjeru koja blokira zatvaranje taska kada je povezani putni nalog otvoren, uz 409 odgovor i opcionalni auto-close flow.\n\nPri zatvaranju putnog naloga taskovi u statusu 'servis' automatski prelaze u 'spreman_za_zavrsetak'. Frontend modal sada podržava potvrdu i retry s auto_close_work_order=true.\n\nUključeni su i ciljani testovi za novi behavior, te ažuriran prikaz statusa u dashboardu.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -105,8 +105,18 @@ async function request(endpoint, options = {}) {
|
||||
// Ako je greška DRF validacijska, flatten-iraj je u string ili objekt
|
||||
throw { message: Object.values(errData).flat().join(', '), details: errData, status: 400 };
|
||||
}
|
||||
if (errData.detail) errorMessage = errData.detail;
|
||||
throw { message: String(errorMessage), status: response.status };
|
||||
const normalizedDetails = (
|
||||
errData
|
||||
&& typeof errData === 'object'
|
||||
&& typeof errData.detail === 'object'
|
||||
&& errData.detail !== null
|
||||
) ? errData.detail : errData;
|
||||
if (typeof errData.detail === 'string' && errData.detail.trim()) {
|
||||
errorMessage = errData.detail;
|
||||
} else if (typeof normalizedDetails?.message === 'string' && normalizedDetails.message.trim()) {
|
||||
errorMessage = normalizedDetails.message;
|
||||
}
|
||||
throw { message: String(errorMessage), status: response.status, details: normalizedDetails };
|
||||
}
|
||||
|
||||
if (options.responseType === 'blob') return await response.blob();
|
||||
|
||||
Reference in New Issue
Block a user