This commit is contained in:
seb
2026-10-20 00:47:10 +02:00
parent 883c856bdb
commit 935e01cb30
2 changed files with 46 additions and 13 deletions

View File

@@ -746,6 +746,42 @@ export function createDeliveryEditorAutomat(options = {}) {
})
);
// Preserve already attached files in the editor so loading a draft manifest does not wipe them out.
const currentAttachments =
automat.state.attachments?.length > 0
? automat.state.attachments
: (Array.isArray(automat.state.files) && automat.state.files.length > 0 ? automat.state.files : []);
const rawManifestAttachments =
data.attachments ??
data.files ??
basedata.attachments ??
basedata.files ??
null;
const manifestAttachments = Array.isArray(rawManifestAttachments) ? rawManifestAttachments : [];
let attachments = currentAttachments;
if (currentAttachments.length === 0) {
attachments = manifestAttachments;
} else if (manifestAttachments.length > 0) {
const existingKeys = new Set(
currentAttachments.flatMap((a) => [
a.id != null ? String(a.id) : null,
a.name ? String(a.name).trim().toLowerCase() : null,
]).filter(Boolean)
);
const newAttachments = manifestAttachments.filter((a) => {
const idKey = a.id != null ? String(a.id) : null;
const nameKey = a.name ? String(a.name).trim().toLowerCase() : null;
if (idKey && existingKeys.has(idKey)) return false;
if (nameKey && existingKeys.has(nameKey)) return false;
return true;
});
if (newAttachments.length > 0) {
attachments = [...currentAttachments, ...newAttachments];
}
}
automat.actions.setDelivery({
id: null,
deliveryId: null,
@@ -758,6 +794,8 @@ export function createDeliveryEditorAutomat(options = {}) {
type,
lines,
lineitems: lines,
attachments,
files: attachments,
});
},

View File

@@ -156,13 +156,13 @@ export default class ChatDrawer extends PureComponent {
stagedReferences: [],
stagedExtractions: s.pendingExtraction
? [
{
id: `ext-${Date.now()}`,
text: s.pendingExtraction.text,
label: s.pendingExtraction.label || 'parsed invoice',
instruction: s.pendingExtraction.instruction || EXTRACTION_MODEL_INSTRUCTION,
},
]
{
id: `ext-${Date.now()}`,
text: s.pendingExtraction.text,
label: s.pendingExtraction.label || 'parsed invoice',
instruction: s.pendingExtraction.instruction || EXTRACTION_MODEL_INSTRUCTION,
},
]
: [],
previewExtraction: null,
isProcessingFiles: false,
@@ -839,7 +839,7 @@ export default class ChatDrawer extends PureComponent {
try {
inputEl.selectionStart = newCursorPos;
inputEl.selectionEnd = newCursorPos;
} catch {}
} catch { }
}
}
);
@@ -1949,11 +1949,6 @@ export default class ChatDrawer extends PureComponent {
type="submit"
color="primary"
disabled={!canSend}
title={
isWorking
? 'Modell antwortet gerade…'
: 'Senden (Enter)'
}
sx={{
bgcolor: isWorking ? 'action.hover' : 'primary.main',
color: isWorking ? 'warning.main' : 'primary.contrastText',