fix(journal/rapport): SOMA atomar + Rapport-Korrektheit + Export-dpr (v1.6.5)
- SOMA-Init atomar: pg_advisory_xact_lock pro Projekt in Transaktion +
createMany → keine doppelten SOMA-Listen mehr, wenn zwei Geräte denselben
frischen Einsatz gleichzeitig öffnen. initCheckItems meldet Änderung an
andere Clients (journal-refresh).
- Rapport: korrigierte (durchgestrichene) Original-Einträge werden nicht mehr
als gültige Massnahmen übernommen; Erledigt-Status ("— erledigt HH:MM")
erscheint jetzt im Rapport; SOMA zeigt okAt, falls confirmedAt fehlt.
- Export: dpr-Fallback auf devicePixelRatio, wenn die Karte ausgeblendet ist
(Journal-Tab) — vorher Infinity → NaN-Grössen, Export defekt.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -169,11 +169,12 @@ export function JournalView({ projectId, projectTitle, projectLocation, mode, ei
|
||||
if (res.ok) {
|
||||
const items = await res.json()
|
||||
setCheckItems(items)
|
||||
notifyJournalChanged() // andere offene Clients über die neue SOMA-Liste informieren
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Failed to init check items:', err)
|
||||
}
|
||||
}, [projectId])
|
||||
}, [projectId, notifyJournalChanged])
|
||||
|
||||
useEffect(() => {
|
||||
initDoneRef.current = false
|
||||
@@ -455,12 +456,17 @@ export function JournalView({ projectId, projectTitle, projectLocation, mode, ei
|
||||
zeitAusruecken: '', zeitEintreffen: '', zeitBereit: '',
|
||||
zeitKontrolle: '', zeitAus: '', zeitEinruecken: '', zeitEnde: '',
|
||||
lageEintreffen: '',
|
||||
massnahmen: entries.map(e => `${formatTime(e.time)} ${e.what}${e.who ? ` (${e.who})` : ''}`),
|
||||
// Nur gültige Massnahmen: durchgestrichene Original-Einträge (isCorrected)
|
||||
// ausfiltern; Erledigt-Status übernehmen.
|
||||
massnahmen: entries
|
||||
.filter(e => !(e as any).isCorrected)
|
||||
.map(e => `${formatTime(e.time)} ${e.what}${e.who ? ` (${e.who})` : ''}${e.done && e.doneAt ? ` — erledigt ${formatTime(e.doneAt)}` : ''}`),
|
||||
somaItems: checkItems.map(c => ({
|
||||
label: c.label,
|
||||
confirmed: c.confirmed,
|
||||
ok: c.ok,
|
||||
confirmedAt: c.confirmedAt ? formatTime(c.confirmedAt) : null,
|
||||
okAt: c.okAt ? formatTime(c.okAt) : null,
|
||||
})),
|
||||
pendenzenItems: pendenzen.map(p => ({
|
||||
what: p.what,
|
||||
|
||||
Reference in New Issue
Block a user