TC$mC$ on todella vaikuttava virstanpylvC$s. `hauki-os` ja `client-basic` kC$C$ntyivC$t virheettC$, ja The Dark Meshin palaset kuten `ext_datagrid.js` ja asynkroniset vC$ylC$t ovat nyt saumattomasti integroitu. SMS-muistutukset voivat hyvin jC$C$dC$ odottamaan; suunnataan resurssit nyt tC$hC$n "ruokaketjun huippuun". Konseptisi siirrettC$vC$stC$ (portable), minimalistisesta ja datan eheyden sC$ilyttC$vC$stC$ CRM-moottorista sopii tC$ydellisesti x-mesh-basicin mikropalveluarkkitehtuuriin. Kutsutaan tC$tC$ konseptia nimellC$ **M-CAPSULE (Mesh CRM Capsule)**. Se ei ole perinteinen monoliittinen tietokanta, vaan yksittC$inen, helposti siirrettC$vC$ hakemisto, joka sisC$ltC$C$ kaiken: skeeman, datalokin, API-rajapinnat ja sisC$C$najologiikan. TC$mC$ mahdollistaa offline/online-synkr onoinnin ja sen, ettC$ paketin voi siirtC$C$ HetzneristC$ lokaaliin Hauki OS -QEMU-instanssiin yhdellC$ kopioinnilla. TC$ssC$ on ehdotus M-CAPSULE -konseptin arkkitehtuuriksi ja hakemistorakenteeks i. ### M-CAPSULE: Hakemiston anatomia Jokainen CRM-instanssi asuu omassa kansiossaan (esim. `/mnt/mesh_root/state/crm -alpha/`). Paketti leivotaan kasaan seuraavista komponenteista: * **`AUTOEXEC.BAS`**: Hakemiston "entrypoint". Kuten aiemmin rakensimme `ext/autoexec.js` -laajennuksen avulla, tC$mC$ skripti ajetaan aina ensimmC$isenC$. Se asettaa paikalliset M-BUS -reitit ja konfiguroi portit, jotta itse logiikkaskriptien ei tarvitse vC$littC$C$ verkkotekniikasta. * **`schema.json`**: Tiukka rakennemC$C$rittely (esim. asiakasdata, tilaukset). Kaikki karanteenista sisC$C$n tuleva data validoidaan tC$tC$ vasten. * **`ingest.bas`**: Silta `_ingest_report.json` -raportin ja kapselin vC$lillC$. Tekee tarvittavat `ETL MERGE` ja `ETL TYPECAST` -muunnokset ja syC6ttC$C$ datan sisC$C$n. * **`engine.bas`**: Varsinainen mikropalvelu/moottori. Nostaa x-mesh-basicin `API INIT` -komennolla HTTP-palvelimen ylC6s ja jC$C$ taustalle pyC6rimC$C$n `DAEMONIZE`-tilassa. * **`mmu_journal.jsonl`**: Kapselin ainoa fyysinen tietokanta. Se on Write-Ahead Log (WAL), jota `ext/stream.js` lukee komennolla `STREAM REPLAY` ja johon se kirjoittaa komennolla `STREAM RECORD`. --- ### KolmipC$inen rajapinta (AI, Botit ja Ihmiset) Jotta CRM palvelee kaikkia kC$yttC$jC$ryhmiC$ tC$ydellisesti ja minimalistisesti, `engine.bas` tarjoaa seuraavat interaktiot: 1. **Ihmiset (M-GUI & Schema-Driven UI):** Client-basicin komponentit, kuten `ext_datagrid.js` (virtuaalinen taulukko) ja `ext_crm_card.js` (asiakaskortit), kytkeytyvC$t kapseliin. Datagrid voi tilata lennosta ZFS-tyyppisiC$ streameja ja asiakaskortit voivat lC$hettC$C$ delta-pC$ivityksiC$ (vain muuttuneet kentC$t) takaisin M-BUS -vC$ylC$lle. 2. **TekoC$ly (AI Agentit):** Kun `engine.bas` kC$ynnistyy, se generoi automaattisesti OpenAPI-mC$C$rittelyn komennolla `API GENERATE OPENAPI`. AI voi ladata tC$mC$n `/openapi.json` -reitistC$, oppia vC$littC6mC$sti kapselin tukemat metodit ja alkaa kysellC$ tai pC$ivittC$C$ dataa JSON-muodossa. 3. **Botit (M-BUS & Makrot):** Automatisoidut taustaprosessit, kuten C$sken nC$kemC$si `macro_bot.py` tai tuleva SMS-botti, voivat keskustella kapselin kanssa The Dark Mesh -vC$ylC$n (esim. IRC-kanavan `#crm`) yli tC$ysin asynkronisesti. --- ### Datan Eheys ja SiirrettC$vyys (Offline / Online) Koska kaikki muutokset tallennetaan `mmu_journal.jsonl` -tiedostoon rivi kerrallaan intentioina (esim. "Muutettu asiakkaan puhelinnumero"), datan eheys on taattu. Jos yhteys katkeaa (offline), M-GUI tai paikallinen botti voi jatkaa lokin kerC$C$mistC$. Kun yhteys palautuu, intentiot synkronoidaan ja `STREAM REPLAY` varmistaa, ettC$ tila rakentuu aina deterministisesti tismalleen oikein. Haluatko, ettC$ luomme ensimmC$isenC$ `x-crm-init.py` (tai bash-skriptin) muodossa tyC6pC6ytC$tyC6kalun, jolla nC$itC$ tyhjiC$ M-CAPSULE -kansiorakenteita (skeemoineen ja engine-pohjineen) voidaan generoida automaattisesti yhdellC$ komennolla?