Fooodo / Dokumentacija

Fooodo architektūra

Kaip sukurtas Fooodo — dviejų paslaugų padalijimas į meniu programą ir mokėjimo paslaugą, įmonės/restorano/stalo kelių nuomininkų modelis, POS-agnostinė jungties sutartis ir kur yra UVS.

Auto-translated · pending native review. The English version is canonical.

Fooodo veikia kaip dvi bendradarbiaujančios paslaugos ir išorinis POS, pasiekiamas per POS-agnostinę jungties sutartį. Šis puslapis yra sistemos žemėlapis: kaip dalys jungiasi, kodėl jos atskirtos ir kaip veikia kelių nuomininkų modelis.

Dvi paslaugos

Menu apporders · admin · POS sync
Payment serviceMollie · tips · donations
Molliepayment provider
R-KeeperPOS · system of record
Service topology
  • Meniu programa. Kliento srautas (QR → naršymas → užsakymas), operatoriaus administravimo skydelis ir visas POS jungties srautas.
  • Mokėjimo paslauga. Atskira paslauga su prieiga per žetonais autentifikuotą API. Valdo Mollie integraciją, webhook maršrutizavimą, aukų maršrutizavimą ir arbatpinigių maršrutizavimą. Turi savo vidinį administravimą.
  • POS jungtis. Bet kuris POS, kurį naudoja restoranas. Fooodo laiko jį meniu įrašų šaltiniu ir virtuvės tiesos šaltiniu užsakymams. R-Keeper šiandien yra veikianti etaloninė jungtis; kitos POS jungtys apimamos kiekvienam klientui atskirai — pati jungties sutartis yra POS-agnostinė.

Dvi Fooodo paslaugos bendrauja per autentifikuotą HTTP API; nėra bendros duomenų bazės, bendros eilės ir bendro diegimo. Jas galima diegti nepriklausomai.

Kodėl mokėjimo paslauga atskirta

Trys priežastys:

  1. Atitikties apimtis išlieka maža. Kortelių duomenys liečia tik mokėjimo paslaugą; meniu programa gauna atsiskaitymo URL ir atgalinį iškvietimą. PCI apimtis apribota viena kodo baze.
  2. Mokėjimo paslauga yra daugkartinio naudojimo. Ji buvo sukurta aptarnauti kelias Fooodo aplinkas laikui bėgant, o ne tik dabartinę meniu programą. Nauji produktai ją naudoja neįgyvendindami mokėjimo infrastruktūros iš naujo.
  3. Gedimų izoliacija. Jei Mollie patiria regioninę avariją, meniu programa veikia toliau; užsakymai laukia būsenoje „paruošta apmokėti" ir suderinami, kai mokėjimo paslauga atsigauna.

Kelių nuomininkų modelis

Kiekvienas įrašas meniu programoje yra apribotas šia hierarchija:

  1. Company
    tenant boundary · brand · billing
  2. Restaurant
    POS config · hours · default flow
  3. Table
    QR code · per-table flow override
  4. Order
    items · payments · tips · donations
Multi-tenancy hierarchy
  • Įmonė yra nuomininko riba. Šiuo metu gamyboje veikia viena aktyvi įmonė (Čili Pizza), tačiau nuomininkų atskyrimas yra užtikrinamas visur — norint pridėti antrą tinklą, nereikia atskiro diegimo.
  • Restoranų administratoriai gali valdyti tik savo restoraną — vaidmenų sistema tai užtikrina politikos lygmeniu.
  • Kiekvienas QR kodas nukreipia į konkretų stalą konkrečiame restorane. Nėra bendro „nuskenuok ir užsakyk" kodo; Fooodo visada žino, kuriai vietai skirtas užsakymas. Tai leidžia naudoti mokėjimą vėliau, sąskaitos padalijimą prie stalo ir analitiką pagal vietą.

Kur yra UVS

UVS yra užsakymų ir operacijų branduolys meniu programoje — centrinis įvykių srautas, kuris fiksuoja viską, ką platforma įrašo (užsakymus, mokėjimus, stalo būseną, virtuvės bilietus) prieš perduodant vartotojams (aktyviai POS junčiai, mokėjimo paslaugai, būsimiems moduliams).

Integruotojams tai turi konkrečią reikšmę: moduliai tiesiogiai tarpusavyje nekomunikuoja, o sutartis yra POS-agnostinė. Naujo POS jungtis neliečia virtuvės srauto ar mokėjimo paslaugos — ji kalba UVS sutartimi ir nemokamai gauna mokėjimus, kelių nuomininkų modelį ir ataskaitų teikimą. R-Keeper yra vienas tos sutarties įgyvendinimas; pati sutartis yra sistema. Sutartis dokumentuota integracijos saugykloje, kurią partneriai gauna įtraukimo metu.

Trumpa apžvalga

KomponentasForma
Meniu programaPHP backend, React frontend, PostgreSQL, Redis pagrindu veikianti užduočių eilė
Mokėjimo paslaugaNepriklausoma PHP paslauga su sava duomenų baze ir administravimu
Mokėjimo teikėjasMollie (kortelė, Apple Pay, Google Pay)
POS jungtisR-Keeper (veikianti); kitos POS jungtys apimamos kiekvienam klientui atskirai
Rinkodaros svetainėNext.js + next-intl + Fumadocs (ši svetainė)

Konkretūs karkasų versijų numeriai tyčia praleisti šiame viešame paviršiuje — partneriai, kuriantys POS jungtis, gauna versijų prisegimą įtraukimo metu kartu su integracijos saugykla.

Kas kur yra

  • Meniu valdymas, užsakymai, stalai, kliento srautas → meniu programa.
  • Kortelių duomenys, grąžinimai, mokėjimo metodai, arbatpinigiai, aukos → mokėjimo paslauga.
  • Meniu tiesos šaltinis, virtuvės bilietai, ataskaitos → jūsų POS (šiandien R-Keeper, kitos jungtys, kai bus pristatytos).
  • Rinkodaros turinys, vieši dokumentai, AI asistentas, MCP serveris → ši svetainė.

Jei integruojatės su Fooodo, jus dominantis API paviršius yra meniu programos išorinis API. Mokėjimo paslauga yra vidinė — meniu programa perduoda užklausas jai.

Šiame puslapyje