Download Game! Currently 85 players and visitors. Last logged in:LysanderDrizzinMahjongValkrist

Blitzer's Blog >> 71651

Back to blogs index
Posted: 04 Aug 2026 11:17 [ permalink ]
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?