„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>
88 lines
2.8 KiB
TypeScript
88 lines
2.8 KiB
TypeScript
import api from './client';
|
|
|
|
export type BelegnummerStatus = 'frei' | 'eindeutig' | 'mehrdeutig';
|
|
|
|
export interface BelegnummerPruefung {
|
|
status: BelegnummerStatus;
|
|
/** Stammdokument für eine neue Version (nur bei „eindeutig“) */
|
|
documentId: number | null;
|
|
kandidaten: number[];
|
|
}
|
|
|
|
/** Kennzahlen eines Belegs; `null` = nicht ermittelbar. */
|
|
export interface Kennzahlen {
|
|
seiten: number | null;
|
|
woerter: number | null;
|
|
}
|
|
|
|
export interface VergleichKennzahlen {
|
|
vorhanden: Kennzahlen;
|
|
neu: Kennzahlen;
|
|
}
|
|
|
|
export interface PaperlessTag {
|
|
id: number;
|
|
slug: string;
|
|
name: string;
|
|
color: string;
|
|
text_color: string;
|
|
match: string;
|
|
matching_algorithm: number;
|
|
is_insensitive: boolean;
|
|
is_inbox_tag: boolean;
|
|
document_count: number;
|
|
}
|
|
|
|
export interface PaperlessDocType {
|
|
id: number;
|
|
slug: string;
|
|
name: string;
|
|
match: string;
|
|
matching_algorithm: number;
|
|
is_insensitive: boolean;
|
|
document_count: number;
|
|
}
|
|
|
|
export interface PaperlessCustomField {
|
|
id: number;
|
|
name: string;
|
|
data_type: string;
|
|
extra_data?: any;
|
|
}
|
|
|
|
export interface PaperlessCorrespondent {
|
|
id: number;
|
|
slug: string;
|
|
name: string;
|
|
match: string;
|
|
matching_algorithm: number;
|
|
is_insensitive: boolean;
|
|
document_count: number;
|
|
}
|
|
|
|
export interface PaperlessUser {
|
|
id: number;
|
|
username: string;
|
|
first_name?: string;
|
|
last_name?: string;
|
|
}
|
|
|
|
export const paperlessApi = {
|
|
getTags: () => api.get<PaperlessTag[]>('/api/paperless/tags').then(r => r.data),
|
|
getSteuertagIds: () => api.get<{ ids: number[] }>('/api/paperless/steuertags').then(r => r.data.ids),
|
|
getDocumentTypes: () => api.get<PaperlessDocType[]>('/api/paperless/document-types').then(r => r.data),
|
|
getCustomFields: () => api.get<PaperlessCustomField[]>('/api/paperless/custom-fields').then(r => r.data),
|
|
getCorrespondents: (search?: string) => api.get<PaperlessCorrespondent[]>('/api/paperless/correspondents', { params: { search } }).then(r => r.data),
|
|
getCorrespondent: (id: number) => api.get<PaperlessCorrespondent>(`/api/paperless/correspondents/${id}`).then(r => r.data),
|
|
getUsers: () => api.get<PaperlessUser[]>('/api/paperless/users').then(r => r.data),
|
|
searchDocuments: (params: { search?: string, page?: number, pageSize?: number }) =>
|
|
api.get<{ results: any[], count: number }>('/api/paperless/documents', { params }).then(r => r.data),
|
|
getDocument: (id: number) => api.get<any>(`/api/paperless/documents/${id}`).then(r => r.data),
|
|
checksumExists: (checksum: string) =>
|
|
api.post<{ exists: boolean }>('/api/paperless/checksum', { checksum }).then(r => r.data.exists),
|
|
getDocumentPdfBlob: (id: number) =>
|
|
api.get<Blob>(`/api/paperless/documents/${id}/pdf`, { responseType: 'blob' }).then(r => r.data),
|
|
pruefeBelegnummer: (belegnummer: string) =>
|
|
api.get<BelegnummerPruefung>('/api/paperless/belegnummer-pruefung', { params: { belegnummer } }).then(r => r.data),
|
|
};
|