Rivile ERP — GraphQL schema (apžvalga)

Rivile ERP — GraphQL schema (apžvalga)

Šis failas sutraukia vidinio GraphQL API struktūrą pagal pateiktą schemą: tipus, užklausas (Query), keitimus (Mutation) ir bendrus modelius. Jis papildo, bet nekeičia viešojo REST API aprašo.

Susiję dokumentai

Dokumentas Turinys
rivile-erp-architektura-bendra.html Kur GraphQL sėdi schemoje: Federated GQL Gateway, RBAC
rivile-erp-public-api-overview.html Viešasis REST API (OpenAPI), X-SessionToken
rivile-erp-guide-api.html Oficialus gidas (raktai, limitai, Postman)
rivile-erp-automatizavimo-api.html Automatizavimo scenarijų JS API
rivile-erp-workflows.html Darbo eigos konceptas
rivile-erp-apps-marketplace.html APP apibrėžimai, versijos, šablonai

Pilna schema (failas): rivile-erp-graphql.schema.graphql — įrašykite čia visą introspection / eksportuotą SDL (šis katalogas skirtas vienam kanoniniam failui; labai didelė schema gali būti skaidoma kaip ir OpenAPI, su rankiniu sujungimu).


1. Paskirtis ir santykis su REST

  • GraphQL sluoksnis aprašo plačią ERP domenų modelį: nuo apskaitos ir prekybos iki CRM, personalo, POS, sandėlio (WMS), patvirtinimų ir prenumeratos.
  • Viešasis REST (/public-api) dažnai naudojamas integracijoms; GraphQL atitinka tipinį „storąjį“ klientą (web UI, mobilumas), su viena schema ir pasirenkamais laukais.
  • Abi pusės remiasi sesija / organizacija / įmonė kontekstu; schema turi sessionContext(sessionToken: String) ir SessionType (žr. §3).

2. Skaliarai ir sąsajos

Skaliarai (iš schemos): UUID, Date, DateTime, BigDecimal, Long, Short, JSON, Upload.

Bendros sąsajos

Sąsaja Paskirtis
Auditing createdAt, createdBy, updatedAt, updatedBy, createdByUser, updatedByUser
MasterData Standartiniai katalogų laukai (active, code, name, company, …)
WmsAuditing Sandėlio tipams (WmsAuditUser, …)

Daug dokumentų ir katalogų implementuoja Auditing.


3. Sesija ir kontekstas

  • Query.sessionContext(sessionToken: String): SessionContextResult — grąžina message ir result: SessionContext (įskaitant companyId, tenantId, userId, modules, permissions, permissionsSet, sessionType, …).
  • SessionType (enum): API, AUTOMATION, EMPTY, LINK, USER — naudinga susieti su automatizavimo vykdymu ir API raktais.
  • Mutation.switchSessionContext(companyId: UUID), createLinkToken, signup / invitedSignup ir kt. — organizacijos / vartotojų srautai.

Tiksli HTTP antraštė priklauso nuo diegimo; viešajame REST dokumentuota X-SessionToken — GraphQL klientas paprastai naudoja tą pačią arba giminingą autentifikaciją.


4. Puslapiavimas ir bendri rezultatai

Tipas *`Page** (pvz.ClientPage,ProductPage):content,first,last,number,size,totalElements,totalPages. Užklausose dažni argumentai:filter,page,size,sort, kartaiscompanyId`.

Asinchroniniai / ilgi procesai: daug Mutation grąžina sagaId, groupingCode ar dedikuotus tipus (TradeSagaResult, DeliverySagaResult, PayrollSagaResult, …). Query.getSagaStatus(sagaId: UUID!): Saga leidžia stebėti būseną.


5. Klaidų modelis (schema)

Enumai ErrorType ir ErrorDetail atitinka tipinį gRPC stiliaus klaidų skaidymą (pvz. INVALID_ARGUMENT, NOT_FOUND, PERMISSION_DENIED, DEADLINE_EXCEEDED, FIELD_NOT_FOUND, …) su HTTP atitikmenų komentarais schemoje.


6. Verslo sritys (Query — grupės)

Santrauka pagal dominančius root laukus (ne išsamus sąrašas):

Sritis Pavyzdžiai
APP Marketplace appDefinition(s), appInstance(s), appVersion, appPricingPlans
CRM lead(s), opportunity, opportunities, project(s), task(s), kategorijos, crmTags, workflow būsenos CRM entitetams
Automatizavimas automation(s), automationExecution(s), automationExecutionLogs, systemPlaces, internalEvent(s), integracijų klaidos
Duomenų užduotys dataTask(s), dataType(s), exportSchemas, jobStatus / jobType
Pristatymai / siuntos delivery, deliveries, shipment(s), location(s), susietos užklausos pagal SF / užsakymus
Failai file(s), entityAttachments, getMainFile, getPublicLink
Apskaita accountingDocument(s), adjustment(s), generalLedgerRegistry, DK, žurnalai, valiutos, kursai
Klientai / partneriai client(s), contact(s), address, bankAccount, sutartys, kainos, nuolaidos
Prekyba saleOrder, saleInvoice, purchaseOrder, purchaseInvoice ir eilutės, kainos, mokesčiai, PR registras, mokėjimai
Atsargos inventoryStock(s), inventoryMovement, inventoryAdjustment, inventoryRegistry, normos, nuorodos
Gamyba / sąnaudos manufacture, costAdjustment, product, productBillOfMaterial
Ilgalaikis turtas fixedAssetCard, fixedAssetOp, registro ataskaitos užklausos
GPAIS / atitiktis gpaisJournal, gpaisProductUnit, isaf, isaftOperation, intrastatas
Personalas / darbo užmokestis payrollOperation, personnelDocument, timesheetOperation, calendarPeriod, atostogų kaupiniai ir kt.
POS pos* užklausos (kasos aparatas, kvitai, produktai, likučiai, fiskalinės ataskaitos)
WMS warehouseOperation, locationStock, locationTrans, wmsSearch
Workflow / patvirtinimai workflow(s), workflowStatus, approvalOperation(s), approvalTemplate(s)
Organizacija / prenumerata organization, erpSubscription, erpModuleSubscription
Šablonai / el. paštas / ataskaitos emailTemplate(s), reportTemplate(s), template, dataExportTemplatesByActivePlace

Taip pat: klasifikatoriai (classifierTree, classifierGroup), parametrai (parameter, parameterValue), išplėstiniai laukai (entityType, entityField), teisės (permission*, userGroup).


7. Mutacijos (santrauka pagal temas)

Tema Pavyzdžiai
APP createAppDefinition, publishAppVersion, installApplication, updateAppAutomationTemplate
CRM CRUD lead / opportunity / project / task, workflow būsenų keitimai
Automatizavimas createAutomation, updateAutomation, callAutomation, automatonInit, integracijų klaidų valdymas
Batch / duomenys postBatch, generateBatch, sendEmailBatch, triggerGpaisIntegration, …
Pristatymai createDelivery, postDelivery, createInvoiceFromDlv, siuntos susiejimas
Failai createFileEntry, associateEntityToFiles, viešos nuorodos, retention
Dokumentai (prekyba, atsargos, gamyba) Kurti / atnaujinti / trinti SF ir užsakymus, post / unpost / cancel, valiutos keitimas, rezervacijos, nuolaidos
Bankas / Fintegry createFintegryAgreement, syncBanksAndBankAccountsFromFintegry, …
Personalas createPayrollOperation, postPersonnelDocument, generateVacationAccrualOperation, tabeliai, atostogos
POS posReceiptHeaderCreate, posPayByReceiptHeaderId, fiskalinės operacijos
WMS createWarehouseOperation, postWarehouseOperation, eilučių keitimai
Workflow createWorkflow, createWorkflowStatus, approveApprovalOperation
Šablonai createEmailTemplate, sendEmailTemplate, ataskaitų šablonai

8. Automatizavimas schemoje

Tipai: Automation, AutomationInput, AutomationExecution, AutomationExecutionLog, trigeriai (AutomationTriggerType), pranešimų režimai.

Mutacijos: callAutomation(automationCode, companyId, context, …), automatonInit, CRUD automatizacijoms ir papildomoms vietoms (AutomationPlace).

Tai atitinka konceptą „vykdyti scenarijų iš sistemos“; pats JS API lieka rivile-erp-automatizavimo-api.html.


9. Išplėtimas ir JSON laukai

  • EntityType / EntityField — metaduomenys apie entitetus ir laukus; operacijos EntityTypeOperation (enum: READ, WRITE, POST, CANCEL, …).
  • Daug tipų turi ext: JSON arba ext(fields: [String]): JSON (pvz. Client, Product, Lead) — pritaikymui be naujų GraphQL laukų.

10. Schema failo saugojimas

  1. Įrašykite pilną SDL į docs/rivile-erp-graphql.schema.graphql (vienas failas).
  2. Atnaujinimui naudokite GraphQL introspection įrankį arba eksportą iš kūrimo aplinkos (URL ir antraštės priklauso nuo Rivile diegimo).
  3. Jei failas per didelis vienam įrankio įrašymui, skaidykite logiškai ir sujunkite rankiniu būdu (analogiškai merge-openapi-parts.sh idėjai).

Schema gali būti sujungta iš kelių servisų (schemoje matyti tušti extend type Query / extend type Mutation fragmentai prie kai kurių modulių — tai normalu federacijoje / stitching).


11. Mokymams — ką akcentuoti

  • Vienas modelis, dvi „išėjimo“ formos: REST (viešas, dokumentuotas OpenAPI) ir GraphQL (pilnas UI modelis).
  • Sesijos tipas (SessionType) sieja API raktą, vartotoją ir automatizavimą.
  • Mutacijų gausa rodo, ką galima automatizuoti ar integruoti be tiesioginio ekrano (kartu su ribomis ir teisėmis).
  • sagaId — ilgų operacijų stebėjimas; svarbu demonstracijose apie masinį postinimą ir importus.