Przejdź do głównej zawartości

Interfejsy

Wszystkie interfejsy eksportowane z @ksefnik/shared definiują kontrakty implementacyjne dla adapterów, parserów, storage, passów i pluginów.

import type {
KsefAdapter, FetchInvoicesOpts, SendInvoiceInput, SendInvoiceResult, UpoResult,
BankStatementParser,
Storage, InvoiceQuery, TransactionQuery,
ReconciliationPass, MatchingContext, MatchResult,
KsefPlugin, McpToolDefinition, CliCommand,
} from '@ksefnik/shared'

Kontrakt dla klienta komunikującego się z API KSeF. Więcej w Wzorzec adapter.

interface KsefAdapter {
fetchInvoices(opts: FetchInvoicesOpts): Promise<Invoice[]>
sendInvoice(input: SendInvoiceInput): Promise<SendInvoiceResult>
getUpo(ksefReference: string): Promise<UpoResult>
}
PoleTypWymaganeOpis
fromstringtakData początkowa (YYYY-MM-DD)
tostringtakData końcowa (YYYY-MM-DD)
nipstringnieNIP kontrahenta
pageSizenumbernieRozmiar strony
pageOffsetnumbernieOffset paginacji
PoleTypWymaganeOpis
xmlstringtakXML faktury
nipstringtakNIP wystawcy
PoleTypOpis
ksefReferencestringNumer referencyjny KSeF
timestampstringTimestamp przyjęcia
PoleTypOpis
ksefReferencestringNumer referencyjny KSeF
upoXmlstringUPO w XML
status'confirmed' | 'pending' | 'rejected'Status UPO

Kontrakt dla parsera wyciągów bankowych. Każdy parser obsługuje jeden format.

interface BankStatementParser {
bank: string
canParse(content: string | Buffer): Promise<boolean>
parse(content: string | Buffer): Promise<BankTransaction[]>
}
MetodaOpis
bankIdentyfikator banku (np. 'mbank', 'ing', 'mt940')
canParse()Sprawdza czy content pasuje do formatu tego parsera
parse()Parsuje content na listę transakcji bankowych

Kontrakt dla warstwy persystencji. Wbudowane implementacje: InMemoryStorage, SqliteStorage.

interface Storage {
saveInvoices(invoices: Invoice[]): Promise<void>
getInvoices(query?: InvoiceQuery): Promise<Invoice[]>
saveTransactions(txs: BankTransaction[]): Promise<void>
getTransactions(query?: TransactionQuery): Promise<BankTransaction[]>
saveReport(report: ReconciliationReport): Promise<void>
getReport(id: string): Promise<ReconciliationReport | null>
}
PoleTypOpis
nipstring?Filtruj po NIP
fromstring?Data od (YYYY-MM-DD)
tostring?Data do (YYYY-MM-DD)
invoiceNumberstring?Filtruj po numerze faktury
PoleTypOpis
fromstring?Data od
tostring?Data do
bankstring?Filtruj po banku
minAmountnumber?Minimalna kwota (w groszach)
maxAmountnumber?Maksymalna kwota (w groszach)

Kontrakt dla pojedynczego przebiegu pipeline uzgadniania.

interface ReconciliationPass {
name: string
order: number
run(context: MatchingContext): Promise<MatchResult[]>
}
PoleTypOpis
namestringUnikalna nazwa passa
ordernumberKolejność wykonania (niższy = wcześniej). Core: 100-500, pluginy: 600+
run()functionLogika dopasowania — zwraca nowe dopasowania
PoleTypOpis
invoicesInvoice[]Wszystkie faktury
transactionsBankTransaction[]Wszystkie transakcje
alreadyMatchedMatch[]Dopasowania z wcześniejszych passów
PoleTypOpis
invoiceIdstringID dopasowanej faktury
transactionIdstringID dopasowanej transakcji
transactionIdsstring[]?Wiele transakcji (partial match)
confidencenumberPewność (0-100)
reasonsstring[]Powody dopasowania

Kontrakt dla pluginu. Tylko name i version są wymagane.

interface KsefPlugin {
name: string
version: string
reconciliationPasses?(): ReconciliationPass[]
onReconciliationComplete?(report: ReconciliationReport): Promise<void>
onInvoicesSynced?(invoices: Invoice[]): Promise<void>
mcpTools?(): McpToolDefinition[]
cliCommands?(): CliCommand[]
}
PoleTypOpis
namestringNazwa narzędzia MCP
descriptionstringOpis dla modelu AI
inputSchemaRecord<string, unknown>JSON Schema parametrów
handler(input: unknown) => Promise<unknown>Implementacja
PoleTypOpis
namestringNazwa komendy CLI
descriptionstringOpis komendy
optionsRecord<string, unknown>?Opcje Commander.js
action(...args: unknown[]) => Promise<void>Implementacja