Files
paperlessmanager/paperless-backend/src/paperless/dokument-zugriff.util.ts
T
bjoernpoettkerandClaude Opus 5.5 e0a6598b35 refactor: Paperless-Dokumentrouten unter /api/paperless/documents/:id
„inbox“ war doppelt belegt (/api/inbox = Scanner, /api/paperless/inbox =
Paperless-Posteingang) und passte nicht zur Manuell-Seite, die dieselben
Routen nutzt. Umbenannt (ohne Alias, nur das eigene Frontend nutzt sie):

  PUT  paperless/inbox/:id            → PUT  paperless/documents/:id
  GET  paperless/inbox/pdf/:id        → GET  paperless/documents/:id/pdf
  GET  paperless/inbox/preview/:id    → GET  paperless/documents/:id/preview
  GET  paperless/inbox/:id/erechnung  → GET  paperless/documents/:id/erechnung

Dabei:
- Dokumentsuche (GET documents) wieder für den Posteingang (VIEW_INBOX)
  statt nur Admin – die Verknüpfungssuche im Bearbeiten-Dialog nutzt sie;
  die Einschränkung aus dem vorigen Commit hatte sie gebrochen.
- Suche und GET documents/:id liefern nur noch id, Titel, ASN, Datum
  (kein OCR-Volltext, keine Statusfelder).
- documents/:id/pdf auch für VIEW_SCANNER (Duplikatvergleich im Scanner).
- E-Rechnungs-Vorschlag prüft wie das Speichern pro Dokument (Tag 1 bzw.
  Manuell-Tag); Vorschau/PDF bewusst nicht (Suchergebnisse, Duplikate).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 10:46:57 +01:00

52 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Permission } from '../auth/permissions.enum';
/** Paperless-Tag, der ein Dokument als „im Posteingang“ kennzeichnet. */
export const POSTEINGANG_TAG_ID = 1;
/**
* Darf der Benutzer dieses Paperless-Dokument über die Posteingangs-Maske
* bearbeiten? Der Backend-Service-Token umgeht die Paperless-Rechte, deshalb
* wird hier pro Dokument geprüft: Posteingang-Rolle nur für Dokumente mit
* Posteingang-Tag, Buchhaltung nur für Dokumente mit Manuell-Tag.
*/
export function darfDokumentBearbeiten(
tags: number[] | undefined,
permissions: Permission[],
manuellTagId: number,
): boolean {
if (permissions.includes(Permission.MANAGE_ALL)) return true;
const vorhanden = new Set((tags ?? []).map(Number));
return (
(vorhanden.has(POSTEINGANG_TAG_ID) &&
permissions.includes(Permission.VIEW_INBOX)) ||
(vorhanden.has(manuellTagId) &&
permissions.includes(Permission.PROCESS_MANUALLY))
);
}
export interface DokumentKurzinfo {
id: number;
title: string;
archive_serial_number: number | null;
created: string;
}
/**
* Für Suche und Verknüpfungsanzeige genügen Kennung, Titel, ASN und Datum.
* Das vollständige Paperless-Dokument enthält u.a. den OCR-Volltext und
* Statusfelder – die sollen über diese Routen nicht abrufbar sein.
*/
export function dokumentKurzinfo(doc: {
id: number;
title: string;
archive_serial_number?: number | null;
created: string;
}): DokumentKurzinfo {
return {
id: doc.id,
title: doc.title,
archive_serial_number: doc.archive_serial_number ?? null,
created: doc.created,
};
}