TEHNILINE ÜLEVAADE · INSENERIDELE

CartSome
kapoti all.

CartSome on terve e-pood – vitriin, kassa, tarne ja halduskeskkond. Juhid seda sellesama tehisaruga, mida juba kasutad. Selle on ehitanud inimesed, kes ehitavad panku, ja see on kiire, sest me mõõdame seda. Pinna all: rakk, mis teenindab poode, juhttasand, mis käitab platvormi, raudne piir nende vahel, igal poel oma skeem ja rakud, millest igaühes elab paarsada poodi. Siit loed, kuidas see kokku käib, mida tehisaru tohib puudutada ja kuidas pood sisse kolib. Ükski moesõna ei saanud viga.

Lühidalt
  • Pankade ehitajate tehtud
  • Poed ja platvorm eri core'idel
  • Igal poel skeem ja kaks kasutajat
  • Umbes 300 poodi raku kohta
  • 314 poetoimingut MCP kaudu, tagasivõtmisega
01 DNA

Ehitanud need,
kes ehitavad panku.

Kiirus on meie DNA-s. Nagu ka see, et sinu raha ei kao. CartSome'i ehitavad inimesed, kes ehitavad panku, ja see paistab välja seal, kuhu keegi ei vaata: rahal ja laoseisul on üks kirjutaja, iga tegu jätab jälje, iga suurema kirjutuse ees on eelvaade ja iga väite taga on number.

  • Kõigepealt õige, siis kiireRahal ja laoseisul on üks kirjutaja: shop-core. Makseid kontrollib server – brauseri sõna peale neid kunagi ei usaldata – ja brauser arvutab täissentides.
  • Kõik jätab jäljeIga ligipääsu andmine või äravõtmine kirjutatakse üles samas tehingus kui tegu ise, iga operaatori tegu aga platvormi auditilogisse.
  • Meelega igavPostgreSQL, Java, puhas SQL ja Terraform: tööriistad, mis on alles ka kümne aasta pärast, ja mitte ühtegi nutikat kihti, mida kell 3 öösel siluda.
  • Mõõdetud, mitte arvatudIga muudatust selles, kuidas vitriin andmeid loeb, võrdlustestitakse enne avaldamist 500 000 tootega kataloogil. Kõhutundest võrdlustest algab, kõhutundega see ei lõpe.

Kiire ja väravatega kiireks hoitud

Tooteloend250 ms

on vahemäluta tooteloendilehe ajaeelarve p95 juures, 500 000 tootega kataloogis. Filter, kerimine või otsing saab 150.

Lighthouse, mobiil0

paigutuse nihet autotools.ee avalehel ja tootelehtedel ning alla 30 ms blokeerimisaega. Mõõdetud 29. oktoobril 2026.

Lehe kaal1 KiB

raskem kui main-harus – sellest piisab, et leht kiirusväravas läbi kukuks.

  • Serveris renderdatud, servas vahemälusLehed saabuvad HTML-ina ostja keeles ning shop-core hoiab tooteloendid ja tootelehed Valkeys soojas.
  • Baidieelarve CI-sVitriini sisenemispunkt, kest ja iga marsruudi tükk peavad igal muudatusel eelarvesse mahtuma ning eelarve liigub ainult allapoole. Iga keel on omaette tükis, nii et ostja laadib alla ainult oma keele.
  • Kiirusvärav enne väljalasetSee ehitab main-haru ja muudatuse kõrvuti ning lükkab tagasi lehe, mis läheb raskemaks või Lighthouse'is aeglasemaks, olgu laadimise, paigutuse nihke või blokeerimisaja poolest.
  • Halvima juhu väravIga teemavalik kõige raskemal kujul, kõik sektsioonitüübid korraga – ja pood ei tohi ikkagi aeglaseks minna. Teemad on CSS-muutujad, nii et teema ei too kaasa grammigi JavaScripti.
  • Kerged pildidIga tootepilt skaleeritakse AVIF-variantideks ja staatilised failid saadetakse välja brotliga eelpakituna.
Kiire ka omanikule. Kiirus pole ainult lehtede laadimine. Üks lause sinu tehisarule asendab terve pärastlõuna brauseri vahekaarte: „võta sel nädalavahetusel talvehoolduse toodetelt 15% maha“ on üks eelvaade ja üks „jah“, mitte kaksteist vormi.
02 ÜLESEHITUS

Kaks poolt.
Raudne piir.

Enamik platvorme kasvatab igale funktsioonile oma teenuse. Meie tõmbasime piiri täpselt ühte kohta: poed ühel pool, platvorm teisel. Kummalgi poolel on oma rakendus, oma core, oma andmebaasi kasutaja ja oma pool võtmest. Ja vana reegel kehtib mõlemal pool: kirjutab ainult core.

  • shop-core – rakk, Java 25 ja Spring BootAinus, kes kirjutab poodide andmeid PostgreSQL-i, Valkeysse ja S3-sse. Iga muudatus halduskeskkonnas, iga import, makse ja poe taustatöö käib selle kaudu. See pole avalikust internetist ligipääsetav, kontrollib iga makse-webhooki ja allkirja ise ning avab poodide pitseeritud saladused.
  • platform-core – juhttasandSama koodibaas, ehitatud teise rakendusena oma konteineritõmmisega: konsooli taustasüsteem, arveldus, organisatsioonid ja uute poodide loomine, platvormi enda e-post ja juhttasandi taustatööd. Selle andmebaasi kasutaja ei ulatu ühegi poe skeemini ja see ei käivita ühtegi migratsiooni.
  • Raku API nende vahelKaks core'i räägivad omavahel kahe sisemise ukse kaudu, üks kummaski suunas, kummalgi oma saladus. Iga uks hoiab ainult selle saladuse SHA-256 räsi, mida ta vastu võtab, nii et kummalgi core'il pole midagi, mis tema enda ukse avaks. Ükski ostja päring ei oota juhttasandi järel.
  • shop web – TanStack Start, React, serveris renderdatudRenderdab iga vitriini ostja keeles, poe halduskeskkonna, admin MCP ja Trade API ukse. Loeb Valkeyd ja PostgreSQL-i poe enda lugemiskasutajaga ega kirjuta midagi peale sisselogimisseansside; kõik muud kirjutused lähevad shop-core'ile.
  • Konsool – omaette rakendusEraldi rakendus ja konteineritõmmis, mis teenindab admin.cartsome.com-i, operaatori MCP-d, cartsome.com-i vorme ja Stripe'i webhooki. Sellel pole andmebaasidraiverit ega ühegi poe saladusi ja see räägib ainult platform-core'iga.
  • Serv – CloudFront ja WAFLehed on servas vahemälus ja pildid tulevad otse S3-st. Selle taga olev koormusjaotur vastab ainult CloudFrontile, saadab iga aadressi rakendusele, mis seda teenindab, ning ühele poele suunatud päringutulv peatatakse juba servas, poe aadressi kaupa.
  • Aurora PostgreSQL 18, puhas SQLORM-i pole kusagil. Ka täistekstiotsing käib PostgreSQL-i enda sees, ostja keeles ja kirjavigu andestades. Pole eraldi otsinguklastrit, mida lapsehoidjana valvata.
  • Valkey ja S3Valkey hoiab lehti, mille shop-core ostjate jaoks ette soojendab. S3 hoiab tootepilte (AVIF-variandid), teemade fonte, iga keele tootevoogu ja lahkuva poe eksporti.
  • Konteinerid ARM-ilNeli teenust jooksevad ECS Fargate'il, Gravitonil, igaüks oma konteineritõmmisest, ja pilditöötlejad Lambdal, samuti ARM-il. Kõik on Terraformis kirjeldatud ja midagi ei klõpsita konsoolis kokku.

Pildid järjekorras

Sissekoliv pood toob kaasa tuhandeid pilte ja uus pood ei tohiks kellegi kassat aeglustada, kuni neid töödeldakse. Seepärast shop-core neid ise ei töötle.

  • Core ainult paneb järjekordaShop-core paneb iga pilditöö SQS-i järjekorda ja kirjutab vastused üles, kui need tagasi tulevad, partiidena, üks tehing poe kohta. Töötlejatel pole üldse andmebaasi kasutajat.
  • Igal poel õiglane järjekordIga pood on SQS-i õiglastes järjekordades oma grupp: interaktiivne rada pildile, mille haldur üles laadib, hulgirada importidele ja kummaski poe kohta ülempiir. Ühe poe suur import ei seisa kunagi teise poe ainsa foto ees.
  • Sama kodeerija, rohkem käsiLambda-töötlejad teevad sama libvipsi kodeeringu, mida core, nii et pilt näeb välja ühesugune, ükskõik kes selle valmis tegi. Allalaadimised on lähteserveri kaupa doseeritud, nii et tarnija serverit üle ei ujutata.
  • Tehtud üks kord, kasutatud kõikjalPilti tuntakse selle baitide räsi järgi. Kui mõni raku pood on sama lähtepildi juba töödelnud, kasutavad töötlejad selle faile uuesti, selle asemel et uuesti kodeerida.
  • Ehitatud tormijooksuksTöötlejate parv kasvab, kui palju poode korraga sisse kolib, ega maksa jõude seistes midagi, ning halduskeskkond näitab iga käiku reaalajas: tehtud, taaskasutatud, ebaõnnestunud, ootel ja koht järjekorras.
Impordid on külalised, mitte peremehed. Iga tabel kuulub ühte klassi: core, kanal, tuletatud või audit. Tarnija voog või import on kanal: see kirjutab samade operatsioonide kaudu nagu haldur ja selle eemaldamisel jääb kataloog terveks ja korrektseks. Andmed tähendavad sama, ükskõik kes need sisestas.
03 KAART

Kogu süsteem
ühel lehel.

Kes kellega räägib, ostja telefonist kuni ketasteni. Pidevjooned kannavad päringuid ja kirjutusi, katkendjooned ainult loevad.

CartSome'i infrastruktuur Operaatorid, ostjad, teiste ettevõtete süsteemid, tehisaru rakendused ja poe haldurid jõuavad CloudFronti ja WAF-i servani. Rakus 1 Stockholmis saadab koormusjaotur konsooli aadressid konsoolile ja iga poe aadressi shop webile. Konsool räägib platform-core'iga, mis on juhttasand. Shop web loeb PostgreSQL-i ja Valkeyd ning annab iga kirjutuse shop-core'ile, mis on rakk. Kaks core'i räägivad omavahel raku API kaudu, kummaski suunas oma saladusega. Shop-core kirjutab Aurora PostgreSQL-i, Valkeysse ja S3-sse ning paneb pilditööd järjekorda töötlejatele, kes kirjutavad S3-sse; platform-core kirjutab platvormi skeemi oma kasutajaga. Rakk 2 avatakse vajaduse korral mis tahes AWS-i piirkonnas. Skeemi all olev loend ütleb sama sõnadega. OperaatoridCARTSOME'I MEESKONDKONSOOL · MCP OstjadINIMESED JATEHISARUAGENDID ÄrikliendidTEISTE ETTEVÕTETESÜSTEEMID, VÕTMEGA Sinu tehisaruCLAUDE · CHATGPTCURSOR · GEMINI Poe halduridHALDUSKESKKONDBRAUSERIS Serv – CloudFront + WAFLEHTEDE VAHEMÄLU · TLS: *.CARTSOME.COM JA OMA DOMEENID · PIIRANG POE AADRESSI KAUPA RAKK 1 · STOCKHOLM (EU-NORTH-1) · TÖÖS KoormusjaoturVASTAB AINULT CLOUDFRONTILE · SUUNAB AADRESSI JÄRGI konsoolADMIN.CARTSOME.COMOPERAATORI MCP · SAIDI APIPOODIDE SALADUSTETA shop webTANSTACK START · SSR · IGA VITRIINPOE HALDUS · ADMIN MCP · OSTU-MCPTRADE API UKS platform-coreJUHTTASANDKONSOOL · ARVELDUS · LIITUMINEPLATVORMI E-POST · OMA KASUTAJA shop-core – rakk, ainus kirjutajaJAVA 25 · SPRING BOOT · KONTROLLIB IGA WEBHOOKIAVAB POODIDE KMS-IGA PITSEERITUD SEIFIIGAL POEL OMA KASUTAJA · PANEB PILDITÖÖD JÄRJEKORDA RAKU APISALADUSIGAS SUUNAS PilditöötlejadÕIGLASED SQS-JÄRJEKORRAD, POE KAUPALAMBDA · LIBVIPS · KORDUSTETA Aurora PostgreSQLPLATVORMI SKEEM, OMA KASUTAJAGAIGAL POEL SKEEM JA KAKS KASUTAJAT ValkeySOOJAD LEHED,POE KAUPA S3PILDID · FONDID · TOOTEVOODPOODIDE EKSPORDID RAKK 2 · VAJADUSEL · MIS TAHES AWS-I PIIRKONNASSamad moodulid, uus pinu: avatakse, kui rakk 1 hakkab täituma, või ühe suure poe jaoks. PÄRINGUD JA KIRJUTUSEDAINULT LUGEMINEVEEL EHITAMATA
Lai skeem · telefonis keri küljele

Kaart sõnadega

  1. Kes koputab. Ostjad (inimesed ja tehisaru ostuagendid), teiste ettevõtete süsteemid Trade API kaudu, poe omaniku tehisaru, poe haldurid ja CartSome'i operaatorid jõuavad kõik sisse serva kaudu.
  2. Serv. CloudFront hoiab lehti vahemälus, serveerib pilte otse S3-st, hoiab sertifikaate iga *.cartsome.com aadressi ja iga poe oma domeeni jaoks ning selle WAF piirab iga poe aadressi eraldi.
  3. Koormusjaotur vastab ainult CloudFrontile. Iga poe aadressi saadab see shop webile, admin.cartsome.com-i ja cartsome.com-i API konsoolile.
  4. Shop web renderdab vitriini, halduskeskkonna ja admin MCP, lisaks avaliku MCP ostuagentidele, mille iga pood ise sisse lülitab, ja Trade API ukse. See loeb PostgreSQL-i ja Valkeyd ning annab iga kirjutuse shop-core'ile.
  5. Konsool teenindab admin.cartsome.com-i, operaatori MCP-d, cartsome.com-i vorme ja Stripe'i webhooki ning räägib ainult platform-core'iga.
  6. Shop-core on rakk: ainus, kes kirjutab poodide andmeid PostgreSQL-i, Valkeysse ja S3-sse. See kontrollib webhooke, avab poodide seifi ja paneb pilditööd järjekordadesse.
  7. Platform-core on juhttasand: organisatsioonid, uute poodide loomine, arveldus, platvormi e-post ja selle taustatööd, oma andmebaasi kasutajaga. Rakuni ulatub see ainult raku API kaudu, kummaski suunas oma saladusega.
  8. Pilditöötlejad võtavad ülesandeid SQS-i õiglastest järjekordadest, igal poel oma grupp, kodeerivad need Lambdal ja kirjutavad failid S3-sse.
  9. Andmed: Aurora PostgreSQL platvormi skeemi ja iga poe oma skeemiga, Valkey iga poe soojade lehtedega ning S3 piltide, fontide, voogude ja eksportide jaoks.
  10. Rakk 1 käitab seda kõike täna Stockholmis. Rakk 2 on sama pinu veel kord; see avatakse siis, kui seda vaja läheb, selles AWS-i piirkonnas, mida tema poed vajavad.

Päringu elukäik

1

Aadress valib poe

Serv annab edasi poe tegeliku aadressi. Shop web seob selle ühe poega ja hoiab seda poodi kogu päringu vältel.

2

Lugemine jääb lähedale

Soe leht tuleb Valkeyst; kõik muu loetakse poe enda ainult lugemisõigusega kasutajaga.

3

Kirjutused lähevad shop-core'ile

Web saadab kirjutuse edasi koos poe nimega. Shop-core kontrollib jagatud saladust ja kirjutab siis poe enda kasutajaga.

4

Vahemälu jõuab järele

Shop-core eemaldab vahemälust selle poe mõjutatud lehed, nii et järgmine ostja näeb juba uut hinda.

04 IGALE POELE SKEEM

Sinu pood.
Sinu skeem.

Palju poode, üks andmebaasiklaster, null jagatud poetabelit. Iga pood saab oma PostgreSQL-i skeemi ja naabreid hoiab eemal andmebaas ise.

  • Skeem ja kaks kasutajatPood n elab oma skeemis, mis on loodud ühe ja sama baasskeemi järgi. Shop web logib sisse poe lugemiskasutajaga, shop-core selle kirjutuskasutajaga, ja kumbki ei ulatu ühegi teise poeni. Platform-core'i kasutaja ei ulatu ühegi poeni.
  • Pole poe veergu, mida unustadaTabelid säilitavad skeemi sees oma kuju: igal real pole poe ID-d ega filtrit, mille päring võiks välja jätta. Välisvõtmed ei välju skeemist kunagi.
  • SQL-laused ei nimeta kunagi skeemiPoe valib kasutaja, kellena ühendus sisse logib, ja ühendus teenindab kogu oma eluea jooksul ühte poodi. Staatiline kontroll kukutab ehituse läbi, kui päringus on skeemi nimi.
  • Ühenduskogumid avanevad vajaduse järgiIga pood saab oma väikesed ühenduskogumid, mis avatakse selle esimesel päringul ja suletakse, kui pood vaikseks jääb, nii et andmebaasi ühenduste eelarve piirab seda, mitu poodi on korraga hõivatud, mitte seda, mitu poodi üldse on. Igal poel on ka oma päringueelarve ja pood, mis selle ületab, saab palve hiljem uuesti proovida – tema üksi.
  • Vahemälu ja lingid teavad oma poodiIga vahemälukirje võtmes on pood. Seansid, tellimuse lingid, kinkekaardi lingid ja uudiskirjast loobumise tõendid allkirjastatakse poe enda võtmetega, nii et ühe poe linki teine pood vastu ei võta.
  • Lekketestid, mis katsuvad kõiki uksiNeed külvavad kahele poele rea igasse poepõhisesse tabelisse ja loevad kumbagi teise poe nimel, nii shop-core'i kui ka shop webi ühendustel, ning kutsuvad seejärel välja iga core'i otspunkti, mis võtab ID. Need jooksevad igal muudatusel.
Miks mitte reataseme turvalisus? Mõõtsime seda 500 000 tootega kataloogil. Seansi seadistusele toetuv poliitika ei lasknud täisteksti-, trigrammi- ja normaliseeritud tootekoodi otsingutel enam indekseid kasutada: need muutusid keskmiselt 4,5 kuni 7,6 korda aeglasemaks. Igale poele oma skeem ei vaja ühtegi predikaati, nii et otsing püsib kiire.
05 RAKUD

Rakud, mitte
üks suur kamakas.

Skaleerime rakkude kaupa. Rakk on terviklik pinu: oma Aurora klaster, oma shop-core ja shop web, tema poodide skeemid, oma pildijärjekorrad ja -töötlejad. Kui üks täitub, avame järgmise. Juhttasand on eraldi ja räägib rakuga ainult raku API kaudu. Platvorm kasvab, ükski üksik rakk ei pea kasvama.

Tihedus~300

poodi jagatud rakus. Mõõdetud, mitte arvatud: 1 000 poe testrakul sai mälu kaks korda otsa.

Täna1

rakk: rakk 1, AWS-i Stockholmi piirkonnas. Seal elab Autotools ja praegu ka iga uus pood.

Edasin

rakku veel, ehitatud samadest Terraformi moodulitest ja avatud vastavalt vajadusele selles AWS-i piirkonnas, mida nende poed vajavad.

Mida tähendab „täis“

Rakk ei võta uut poodi vastu, kui mõni neist signaalidest jõuab oma piirini. Kui mõni signaal jõuab 80 protsendini piirist, planeerime järgmise raku; konsooli rakulehel on näha täituvus reaalajas ja see, milline signaal piirile läheneb.

Signaalid, et rakk on täis
SignaalTäis, kui
Poedrakus on umbes 300 poodi
Andmebaasi võimsusAurora töötab minuteid järjest oma lae lähedal
Ühendusedühenduste eelarve ületaks klastri lubatud piiri
Poodide ühenduskogumidpoodidele keeldutakse ühendusest, kuigi andmebaasil on veel varu
Vahemälu mahtValkey läheneb oma mälu laele
Migratsioonidmigratsioonilaine üle raku skeemide ebaõnnestub või jääb seisma
  • Suur pood saab oma rakuPood, mis jagatud rakust välja kasvab, saab raku endale. Autotools jääb rakku 1.
  • Ehituselt teisaldatavKõik, mis poele kuulub, kannab poe nime: tema skeem oma võtmete ja jadadega, tema organisatsiooni külge pitseeritud seifiread, tema vahemäluvõtmed, tema voofailid. Miski ei seo teda rakuga, kus ta sündis.
  • Aus märkusPoe kolimine rakkude vahel pole veel üks nupuvajutus. See tuleb koos teise rakuga ja teel pole ühtki jagatud osa, mis takistaks.
06 TURVALISUS

Vaikimisi lukus.
Meelega igav.

Poe põnev osa peaksid olema tooted. Siin on igav osa – nii põhjalikult, kui seda hea meelega avalikult kirja paneme.

  • Eraldatus andmebaasisPoepõhised skeemid ja kasutajad, mida jõustavad PostgreSQL-i õigused, mitte kood, mis peab filtrit meeles pidama. Juhttasandil on oma kasutaja ja shop-core'i kasutajal pole juhttasandi tabelitele ühtegi õigust.
  • Igal organisatsioonil pitseeritud seifMakse-, kulleri- ja e-posti võtmed on seifis. Iga võti on pitseeritud AES-256-GCM-iga värske andmevõtme abil, mille väljastab KMS-võti, mida saavad kasutada ainult kaks core'i, ning seotud oma organisatsiooni ja nimega. Kopeeritud rida ei avane kusagil. Saladused ei ela kunagi koodis.
  • Kummalgi core'il pool võtitShop-core avab poodide saladused ja platform-core platvormi enda omad, näiteks Stripe'i ja raamatupidamise võtmed. Võtme poliitika ei anna kummalegi teise poolt.
  • Kaks ust, kaks saladustCore'id kutsuvad teineteist kummaski suunas eri saladusega ja iga uks hoiab ainult selle saladuse SHA-256 räsi, mida ta vastu võtab, nii et kummalgi core'il pole seda, mis tema enda ukse avab.
  • Pääsuvõtmed neile, kes platvormi käitavadOperaatorid logivad sisse pääsuvõtmega ja kinnitavad iga platvormimuudatuse uuesti pääsuvõtmega. Ligipääsu andmine pole kunagi tööriist: ükski tõend ega tehisaru ei saa operaatorit lisada.
  • Tehisaru kirjutused, mida näed ja tagasi võtadHulgi- ja väljapoole suunatud kirjutused käivad kõigepealt eelvaatena ja rakenduvad kinnitusega, mis on seotud sellega, mida nägid; kui pood vahepeal muutus, lükatakse kirjutus tagasi. Ja iga kirjutuse vastuses on kaasas, kuidas see tagasi võtta.
  • Tõendid kõige väiksema võtmekimbugaIgal admin MCP tõendil või ühendusel on õigused ja see näeb ainult neid tööriistu, mida need õigused lubavad. Tagasimaksed, saladused ja haldurid vajavad igaüks eraldi õigust.
  • Kliendid jäävad vestlusest väljaTööriista vastus liigub tehisaru pakkujani, seega jätavad vastused välja ostjate nimed, e-posti aadressid, telefoninumbrid, aadressid ja maksunumbrid. Vähesed sõnaselgelt nimetatud erandid, näiteks tellimuse kommentaari tekst, on reeglites kirjas.
  • Iga operaatori teol on jälgIga muudatus, mille operaator teeb, ja iga mitut poodi hõlmav lugemine jõuab platvormi auditilogisse.
07 AJU

314 toimingut.
Null vormi.

Admin MCP annab tehisarule 314 poetoimingut ja igaüks neist on olemas ka veebi halduskeskkonnas. Ühenda Claude, ChatGPT, Cursor, Gemini või mõni muu MCP-klient sisselogimise või kleebitud tõendiga. Lüliti on väljas, kuni haldur selle sisse lülitab.

01 / KATALOOG

Kataloog ja hinnad.

Tooted, tooteperekonnad, sildid, menüüd, atribuudid, impordid, hinnareeglid, allahindlused, komplektid ja kupongid. tag_products, manage_family, explain_price.

02 / TELLIMUSED

Tellimused ja laoseis.

Leia tellimus, vii see järgmisse etappi, kommenteeri, telli saatesildid; laod, laoseisud, tarnijatellimused ja ärikontod. Tagasimaksed vajavad eraldi õigust.

03 / VITRIIN

Sisu ja vitriin.

Avalehe paigutused, lehed, blogi, KKK, teema, teadaanded, otsingusõnad ja see, mida otsingumootorid ja tehisaru abilised loevad.

04 / TURUNDUS

Turundus ja e-post.

Liitumisvorm, kampaaniad, tervituskirjade sari, automaatsed töövood ja sõnumimallid. Kampaania ajastatakse alles pärast selle eelvaadet.

05 / SEADED

Seaded ja seadistamine.

Keeled, turud, tarne, kassa, sisselogimine, rakendused ja avamiseelne kontrollnimekiri. manage_languages, set_shop_open.

06 / PILDID

Pildistuudio.

Joonistab pilte toodetele, kategooriatele, slaididele ja e-kirjade bänneritele, võttes eeskujuks sinu enda fotod, ning näitab joonistatut tehisarule enne, kui see kuhugi jõuab.

Turvamudel

1

Lugemine

Tehisaru loeb poodi sellisena, nagu see on. Igal kirjutusel on lugemine, mis näitab ID-sid, mida kirjutus vajab.

2

Eelvaade

Hulgi- või väljapoole suunatud kirjutus vastab kõigepealt, mida see muudaks – arvu ja näidise –, ega muuda midagi.

3

Kinnitus

Sina ütled „jah“. Rakendamine kontrollib poodi uuesti ja keeldub eelvaatest, mis enam poe seisule ei vasta.

4

Tagasivõtmine

Vastuses on kaasas tagasivõtmine, kirja pandud tööriistakutsena, mis kõik endisele kohale paneb. Vähesed, mida tagasi võtta ei saa, ütlevad, miks: saadetud e-kiri, tagastatud raha, vahetatud võti.

Õigused kujundavad pinna

Tõend näeb ainult neid tööriistu, mida tema õigused lubavad, nii et kitsas tõend tähendab nii väikest pinda kui ka väikest võimu. Sildid ja menüüd on eraldi õigused, sest avaldatud menüü muudab kohe seda, mida ostjad näevad. Postituse mustand ja selle avaldamine on kaks eri õigust. Tehisaru ei saa ühtki raamatupidamiskannet kinnitada; seda teeb inimene halduskeskkonnas.

Näited

Sina küsid

„Näita poes uut Boschi valikut.“

list_products set_shown_in_shop

Tulemus: eelvaade peidetud toodetest kaubamärgi kaupa, siis üks kutse, mis toob nähtavale kogu valiku, ja ID-d, millega selle uuesti peita.

Sina küsid

„Koli mu vana veebilehe aadressid üle nii, et Google leiaks endiselt iga toote üles.“

check_redirects import_redirects

Tulemus: sinu vana eksport rida-realt kontrollitud, ahelad üheks hüppeks kokku volditud, sobitamata read sulle välja toodud ja enne salvestamist proovijooks.

Sina küsid

„Joonista talvine bänner ja pane kampaania reedeks valmis.“

generate_image draft_campaign schedule_campaign

Tulemus: bänner vestluses näha, kampaania mustand valmis ja ajastus alles pärast seda, kui oled eelvaadet näinud.

↑ Näidispäringud · nimetatud tööriistad on päris

Veel kaks MCP-d. Operaatorid juhivad platvormi konsooli enda MCP kaudu, milleni ükski poe tõend ei ulatu. Ja iga pood saab sisse lülitada avaliku MCP tehisaru ostuagentidele, et need saaksid lugeda kataloogi ja täita ostukorvi.
08 POEST POODI

Poest poodi.
Vahendajata.

Iga pood saab avada oma ärikliendidele Trade API: neutraalse, versioonitud HTTP API, mille kaudu nende enda süsteemid loevad kataloogi nende hindadega ja esitavad tellimusi. Ja iga pood saab osta igast teisest poest, mis seda räägib, nagu veel ühelt tarnijalt.

  • Protokoll, mitte kaubamärkAvastamine aadressil /.well-known/trade-api, API ise /trade/v1 all, OpenAPI 3.1 dokument ja mitte kusagil ühegi platvormi nime. Müüja, kes seda räägib, on lihtsalt müüja, ükskõik mis teda käitab.
  • Võtmed teeb klient iseHaldur kinnitab ettevõtte ärikontoks, määrab hinnataseme, millega see ostab, ja lubab API kasutamise. Klient loob ja tühistab oma võtmed ise oma konto lehel; pood hoiab ainult räsi ja ükski haldur ei näe kunagi ühtki võtit.
  • Nende hinnad, päris laoseisIga toode on hinnastatud täpselt nii, nagu vitriin selle sisse loginud kliendi jaoks hinnastab, ja kõrval on vitriini müüdav laoseis, ülempiiriga.
  • Tellimused, mis ei kahekordistuIgal tellimusel on idempotentsusvõti: sama võti ja sisu tagastavad esimese tellimuse, erineva sisuga päring lükatakse tagasi. Edasi on see poe tavaline tellimus, millele tehakse arve ja mis pakitakse ja saadetakse välja nagu ikka.
  • Osta ükskõik millisest poestÜldotstarbeline tarnijaliides teeb Trade API-t rääkivast müüjast veel ühe tarnija: selle laoseisu ja hindu loetakse graafiku järgi, tellimused lähevad välja idempotentsusvõtmega ning kinnitused ja tarned loetakse tagasi. See kutsub müüja avalikku aadressi nagu iga võõras, mitte kunagi otseteed mööda raku sees.
  • Lühike rihmPäringute ja tellimuste piirangud võtme kaupa, ülempiir tasumata tellimustele ning ühe poe võti on teises poes võõras. Iga konto, ligipääsu ja võtmega seotud tegu jõuab poe auditilogisse ja klient saab teada igast uuest võtmest.
  • Aus märkusWebhooke veel pole: ostja peab muudatusi ise perioodiliselt küsima. Tellimused tasutakse praegu ettemaksuarvega; maksetähtajaga arve tuleb hiljem.
Mõlemad uksed, nagu alati. Trade API seaded, ärikontod ja ligipääsud on halduskeskkonnas ja admin MCP kaudu, igaüks oma õiguse all.
09 UUS POOD

Pood minutitega.
Ava, kui oled valmis.

Pole paigaldusprogrammi ega serverit, mida valida. Lisame sinu organisatsiooni platvormi konsoolis, pood ehitab end ise üles ja sealt edasi juhid sina.

1

Organisatsioon ja pood

Sinu ettevõte, poe nimi ja põhikeel. Oma domeeni võib lisada kohe või hiljem.

2

Pood ehitab end ise

Skeem, kasutajad, allkirjavõtmed ja voo asukoht luuakse päringust eraldi, taustal. Alguses on pood avalikkusele suletud.

3

Aadress kohe

sinupood.cartsome.com vastab hetkest, mil pood on aktiivne: üks metamärgiga sertifikaat, DNS-i samme pole.

4

Võti ja esimene haldur

Ühekordne liitumisvõti, mis antakse üle isiklikult või telefonitsi, mitte kunagi e-postiga. Sinu esimene haldur avab /setup lehe ja loob pääsuvõtme.

5

Enne avamist

Maksed Montonio kaudu, tarnehinnad, keeled, poe andmed, toode, mida osta. Iga samm on üks leht ja üks MCP-tööriist.

6

Ava, siis domeen

Ava, kui kontrollnimekiri on tehtud. Suuna oma domeen ühe DNS-kirjega ja me lisame selle serva; kui see vastab, saab sellest põhiaadress.

Keeled lülitiga. Uus pood alustab oma põhikeele ja eesti keelega. Lülita sisse ükskõik milline 8 keelest, kui selle tõlked on valmis, menüüs Seaded › Keeled või manage_languages abil. Toode jääb igas keeles samale aadressile.

10 KOLIMINE

Too oma pood.
Google jääb alles.

Autotools kolis Shopifyst ja müüb täna CartSome'il 25 000+ toodet. Samad tööriistad, millega see kolimine tehti, saad ka sina.

  • Tooted: teisendab tehisaru, kontrollib inimeneSinu tehisaru loeb impordivormingut, poe sõnavara ja tarnija andmeid ning kirjutab faili, mille poe enda valideerija läbi laseb. See peatub ja nimetab iga lünga, selle asemel et kategooriat välja mõelda. Inimene vaatab üle, mis sobitus ja mis on uus, ning rakendub ainult see import, mille ta ise nimetab, ja seda eelvaate kinnitamisega, mille ta on läbi lugenud.
  • Peidus, kuni ütled „näita“Uued tooted saabuvad peidetuna. Üks eelvaatega kutse toob nähtavale terve kuni 5 000 tootega valiku.
  • Vanad aadressid, ümber suunatudAnna üle Shopify ümbersuunamiste eksport või mis tahes kaheveeruline loend. Iga rida sobitatakse samamoodi, nagu vitriin aadresse otsib, ahelad volditakse üheks püsivaks ümbersuunamiseks ja iga sihtkohta kontrollitakse poe enda lehtede vastu.
  • Shopifyst kolimise tööriistakastMeie üleminekutööriistad teevad vanast saidist hetktõmmise, koostavad vana ja uue aadressi vastavustabeli koos aruandega selle kohta, mis on veel katmata, ning küsivad siis uuelt poelt iga rea kohta järele, nõudes ühte 301-suunamist lehele, mis päriselt vastab. Autotools tõi nii üle 12 598 vana aadressi.
  • Uudiskirja nõusolekud, kolitud üks kordTurundusnimekiri kolib poe nõusolekuregistrisse koos iga inimese antud vastusega. Kolimise käigus ei saadeta midagi.
  • Mis jääb mahaVarasemad tellimused jäävad vanale platvormile. Hoia selle eksport raamatupidamise jaoks alles.

Näidiskolimine

Esimene nädal

Avalöök

Ligipääs vanale poele ja kokkulepe, mis üle tuleb.

Esimene nädal

Ületoomine

Kataloog, pildid ja kliendid uude poodi selle cartsome.com aadressil.

Teine nädal

Sinu ülevaatus

Vana pood uue vastu, leht lehe haaval, ja proovitellimus. Parandame, mis sa leiad.

Teine nädal

Ümberlülitus

Ümbersuunamised kontrollitud, siis üks DNS-kirje. Vana pood müüb kuni selle hetkeni.

↑ Näide · tempo sõltub sinu kataloogi suurusest

Kuidas kolimine käib
11 KÜSIMUSED

Insenerid küsivad.
Meie vastame.

Milline see tehnoloogiapinu täpselt on?

Kahes core'is Java 25 ja Spring Boot, shop webis ja konsoolis TanStack Start ja React 19, Aurora PostgreSQL 18, Valkey 9, S3 ja CloudFront ning pilditöötlejatele SQS ja Lambda. Teenused jooksevad ECS Fargate'il ARM-il, kõik Terraformis kirjeldatud. Igal pool puhas SQL: ORM-i pole.

Kui kiire see päriselt on?

Käivita Lighthouse autotools.ee peal ise. 29. oktoobril 2026 oli telefoniprofiilis avalehe ja tootelehtede paigutuse nihe null, blokeerimisaeg alla 30 ms ning ligipääsetavuse, parimate tavade ja SEO skoor 100; cartsome.com sai kõigis neljas kategoorias 100. Selle taga: baidieelarve CI-s, kiirusvärav ja halvima juhu värav enne väljalaset ning tooteloendite eelarve 250 ms p95 juures 500 000 tootega kataloogis.

Miks jagada core kaheks?

Et poe liiklus ja platvormi äri ei jagaks kunagi protsessi ega andmebaasi kasutajat ja kumbki pool ei saaks avada teise saladusi. Shop-core teenindab poode ega saa avada platvormi saladusi; platform-core juhib konsooli ja arveldust ega saa ühtki poodi lugeda. Kui juhttasand on maas, müüvad poed edasi.

Kas poed jagavad platvormi ja kui hästi on üks pood eraldatud?

Jah. Igal poel on oma PostgreSQL-i skeem ja kaks oma kasutajat, nii et eraldatus on andmebaasi töö, mitte filter koodis. Vahemälu, seansid ja allkirjastatud lingid on poega seotud ning lekketestid loevad igal muudatusel iga poepõhist tabelit teise poe nimel.

Mis juhtub, kui rakk saab täis?

See lõpetab uute poodide vastuvõtmise ja avatakse järgmine rakk. Planeerime selle, kui mõni signaal (poed, andmebaasi võimsus, ühendused, vahemälu maht, migratsioonid) jõuab 80 protsendini oma piirist, nii et rakk lõpetab poodide vastuvõtmise enne, kui see täis saab.

Kus mu andmed asuvad?

Täna Amazon Web Servicesi Stockholmi piirkonnas (eu-north-1). Sinu poe read on sinu poe enda skeemis ja võtmed sinu organisatsiooni pitseeritud seifis.

Kas saan oma andmed kätte?

Jah. Kui pood lahkub, eksporditakse kogu selle skeem pg_dump-iga ja pg_restore loeb selle faili mis tahes PostgreSQL 18 andmebaasi.

Kas mu ärikliendid saavad tellida oma süsteemidest?

Jah, kui sa selle lubad. Kinnita nad ärikontoks ja nad loovad ise oma Trade API võtmed, loevad su kataloogi oma hindadega ja esitavad tellimusi, igaüks idempotentsusvõtmega, nii et kordus ei telli kunagi kaks korda.

Kas kliendiandmed jõuavad minu tehisaru pakkujani?

Ei – nii on see ehitatud. Tööriistade vastused jätavad välja ostjate nimed, e-posti aadressid, telefoninumbrid, aadressid ja maksunumbrid ning testid kukuvad läbi, kui mõni neist sisse lipsab. Sõnaselgelt nimetatud erandid on tellimuse tegevuslogi, kommentaari tekst ja töötajate nimed kommentaaride juures.

Kas tehisaru saab tellimuse eest raha tagastada või maksevõtit muuta?

Ainult tõendiga, mille oled välja andnud täpselt selle õigusega. Tagasimaksed on omaette õigus; saladused ja haldurid tulevad ainult kleebitud tõendiga, mille haldur on teadlikult välja andnud, mitte kunagi ühe klõpsuga rakenduse ühendamise kaudu.

Millised tehisaru rakendused töötavad?

Iga MCP-d rääkiv klient: nende hulgas Claude, ChatGPT, Cursor ja Gemini. Need ühenduvad sisselogimise või kleebitud tõendiga ja näevad ainult neid tööriistu, mida nende õigused lubavad.

Kuidas otsing ilma otsinguklastrita töötab?

PostgreSQL-i täistekstiotsing ostja keeles, trigrammide sobitamisega kirjavigade ja detailinumbrite jaoks. Üks süsteem vähem, mida käitada, ja enne muudatuste avaldamist võrdlustestitakse seda 500 000 tootega kataloogil.

Kas seda saab laiendada?

Jah. Paigalda rakenduste turult üle vaadatud rakendus või ehita oma tehisaruga ise. Iga rakendus töötab oma liivakastis ja paigaldub väljalülitatuna.

OLEME VALMIS, KUI SINA OLED

Teeme
kaubanduse põnevaks.

Räägi meile oma poest. Kolime selle sinu eest üle ja suhtled otse inseneridega, kes CartSome'i ehitavad.

Räägime