> [!info] Apie šį failą
> Tai gyvas projekto žinių žemėlapis. Kiekvieną sesiją Claude automatiškai atnaujina šį failą.
> Skaityti prieš rašant bet kokį kodą. Žr. [[anatomy]] failų struktūrai.
Paskutinis atnaujinimas: 2026-06-19
---
VM (buvęs TMA MES) — gamybos valdymo sistema Daily Spoon (DS) maisto gamybai.
pakuotes_tipas)| Vertė | UI pavadinimas | Fizinis tipas | Gamybos būdas | |
'plevele' | Paketeliai | Sachet — plokščia maža pakuotė | Plėvelė ritinyje → staklinė formuoja ir užpildo | |
'pouch' | Pauchai | Pouch — didelė stovinčio maiši pakuotė | Mišinys pilamas į jau pagamintą maišą iš tiekėjo | |
'stick' | Stickai | Stick — pailga siaura pakuotė | Plėvelė ritinyje → staklinė formuoja stick formą | |
> Esminis skirtumas:
> - plevele + stick → pakuotė formuojama iš plėvelės rulono staklinėje (LOT/EXP ant rulono)
> - pouch → pakuotė jau pagaminta tiekėjo, gaunama gatava — mišinys tik įpilamas (LOT/EXP ant maišo)
---
'plevele'Mašinos:
x2 = vieno kanalo (1 eilutė), x4 = dviejų kanalų (2 eilutės vienu metu)LOT sistema:
[Raidė][DDMMYY] → pvz. A260617, B260617Gamybos eiga:
1. Plėvelė registruojama gavimo dieną → LOT priskiriamas automatiškai
2. Staklinė gamina → paketeliai krenta į dėžes → dėžės į paletę → pakavimas
3. Palaidi variantas: dalis arba visas kiekis — transportinės dėžės (be retail dėžučių)
4. Svoris tikrinamas pasirinktinai gamyboje, brokas atrenkami pakavime
Pakavimo info: recepto lygmenyje (kiek vnt. į dėžutę, dėžučių į kartoną ir pan.)
---
'stick'Mašinos: Kinų gamybos staklinės (ne Turpack)
LOT sistema: Tokia pati kaip paketelių ([Raidė][DDMMYY])
Gamybos eiga: Analogiška paketelių — gali eiti į retail dėžutes arba palaidi transportinėse
Šiuo metu: nėra specifinių gamybos sunkumų
---
'pouch'Pildymas:
LOT/EXP: Nurodo užsakovas (serija + galiojimas). Šiuo metu stampuojama ant kiekvieno poucho. Ateityje — gali ateiti jau su data iš tiekėjo.
Gamybos kortelė: Užsakovas pasako kiekį + seriją + galiojimą → įvedama ranka sistemoje. Ateityje — failo importas.
Kokybė: Šiuo metu kiekvienas pouchas pasveramas.
Pakavimas: Tik transportinės dėžės (didelė gramai → retail dėžučių nėra). Ant dėžių klijuojamos atspausdintos etiketės.
DS specifika: Užsakovo serija netaikoma — tik EXP data ir kiekis.
Pouch gamybos kortelės UI pertvarka (Session 4):
allDone = card.stakles_baigtos (vietoj abiejų staklių ir pakavimo baigimo tikrinimo).Kortelių vizualinis stilius UI:
✓.display:grid maketą.---
`` Backend: Node.js + Express (server.js, --watch hot-reload) Frontend: Vanilla HTML/CSS/JS (BEZ TailwindCSS, BEZ frameworks) DB: SQLite pb_data/data.db (node:sqlite, DatabaseSync, ES module) Alt DB: PocketBase :8090 (kai kurioms kolekcijoms) Serveris: localhost:3000
`
> [!warning] Svarbu
> pb_data/data.db — VIENINTELIS DB šaltinis šiame kompiuteryje.
> S:\ serveris — NELIESTI be aiškaus vartotojo leidimo.
---
— pagrindinė lentelė`sql
id TEXT PRIMARY KEY
receptas_id TEXT -- FK → receptai.id
recepto_pavadinimas TEXT -- denormalizuotas pavadinimas
lot TEXT -- LOT numeris
exp TEXT -- Galiojimo data (YYYY-MM-DD)
pleveles_statusas TEXT -- 'Gauta' | 'Laukiama' | NULL
planuojamas_kiekis INTEGER -- Pouchams: kiek maišų; plėvelei: kiek kg/vnt
sumaisytas_kiekis REAL -- Kiek kg mišinio jau sumaišyta
pagaminta_viso REAL -- Kiek iš viso pagaminta
pakuotes_tipas TEXT -- 'plevele' | 'pouch' | 'stick'
kliento_serija TEXT -- gamintojo serija etiketėms
gamyba_pradeta INTEGER -- 0=planavimas, 1=aktyvi gamyba
busena TEXT -- 'vykdoma' | 'baigta' | 'archyvuota'
created TEXT, updated TEXT
`receptai — receptūros`sql
id TEXT PRIMARY KEY
pavadinimas TEXT
pakuotes_tipas TEXT
svoris REAL -- Pakuotės svoris (g)
pak_dezuteje INTEGER -- vnt. dėžutėje
dez_dezeje INTEGER -- dėžučių dėžėje
pak_dezeje INTEGER -- viso vnt. dėžėje (computed)
klientas TEXT -- kliento kodas
palaidi INTEGER -- 1 = palaidi (be retail dėžučių)
korteles_tipas TEXT -- gamybos kortelės tipas
combo_dalybos TEXT -- JSON: dalinimo koeficientai
pastabos TEXT -- pirkimo pastabos
uzsakovo_zaliavos INTEGER -- 1 = naudoja kliento žaliavas
stakliu_rekomendacija TEXT -- rekomenduojama staklinė *(pridėta 2026-06-17)*
gamybos_pastabos TEXT -- laisvas gamybos komentaras *(pridėta 2026-06-17)*
-- ⚠️ receptai NETURI 'kodas' kolonos!
`pakuociu_sandelis — pouch sandėlis *(pridėta 2026-06-17)*`sql
id TEXT PRIMARY KEY
receptas_id TEXT NOT NULL -- FK → receptai.id (pouch tipo)
kiekis INTEGER NOT NULL -- kiek vienetų gauta
data TEXT -- gavimo data (YYYY-MM-DD)
pastabos TEXT -- pvz. "DN92197 — Alpi Eesti"
created TEXT, updated TEXT
`gamybos_zurnalas — žurnalas`sql
id TEXT PRIMARY KEY
data TEXT NOT NULL
pavadinimas TEXT
veiksmas TEXT
kiekis REAL
batch TEXT
created TEXT, updated TEXT
`darbo_laikas — darbuotojų darbo laiko apskaita`sql
id TEXT PRIMARY KEY
data TEXT NOT NULL -- darbo diena (YYYY-MM-DD)
vardas TEXT NOT NULL -- darbuotojo vardas
virsvalandziai TEXT NOT NULL -- valandų skaičius (tekstu)
tipas TEXT -- DARBAS / ATOSTOGOS / TEVADIENIS
created TEXT, updated TEXT
`gamybos_dosje — kortelių istorinis archyvas / dosje`sql
id TEXT PRIMARY KEY
uzsakymo_id TEXT NOT NULL -- susijusio užsakymo ID
produkto_id TEXT NOT NULL -- produkto/recepto ID
pavadinimas TEXT NOT NULL -- produkto pavadinimas
lot TEXT NOT NULL -- gamybos LOT
galiojimas TEXT NOT NULL -- EXP data
planas REAL NOT NULL -- planuotas gamybos kiekis
plevele REAL NOT NULL -- sunaudota plėvelė (kg)
dezutes REAL NOT NULL -- sunaudotos dėžutės (vnt)
pradeta TEXT NOT NULL -- gamybos pradžios laikas
baigta TEXT NOT NULL -- gamybos pabaigos laikas
stakles REAL NOT NULL -- staklių pagamintas kiekis
supakuota REAL NOT NULL -- supakuotas kiekis
isvezta REAL NOT NULL -- išvežtas kiekis
archyvuota TEXT NOT NULL -- archyvavimo požymis/laikas
pakuotes_tipas TEXT NOT NULL -- pakuotės tipas
dosje TEXT NOT NULL -- pilnas dosje tekstas / ataskaita
html_kortele TEXT NOT NULL -- sugeneruotas kortelės HTML
created TEXT, updated TEXT
`ingredientai — recepto sudėtis (žaliavos)`sql
id TEXT PRIMARY KEY
receptas_id TEXT NOT NULL -- FK → receptai.id
zaliava_id TEXT NOT NULL -- FK → zaliavos.id
kiekis_vienai_porcijai REAL NOT NULL -- žaliavos svoris kg vienam maišymui
created TEXT, updated TEXT
`isvezimai — prekių išvežimo pagal važtaraščius registras`sql
id TEXT PRIMARY KEY
vaztarascio_id TEXT NOT NULL -- FK → vaztarasciai.id
korteles_id TEXT NOT NULL -- FK → gamybos_korteles.id
kiekis REAL NOT NULL -- išvežtas prekių kiekis (vnt)
prekes_pavadinimas TEXT NOT NULL
lot TEXT NOT NULL
created TEXT, updated TEXT
`klientai — partneriai / klientai`sql
id TEXT PRIMARY KEY
kodas TEXT NOT NULL -- unikalus kliento kodas (pvz. EV, BENU)
pavadinimas TEXT NOT NULL -- pilnas pavadinimas
adresas TEXT NOT NULL
email TEXT NOT NULL
phone TEXT NOT NULL
papildomi TEXT NOT NULL -- papildoma info (JSON / tekstas)
created TEXT, updated TEXT
`korteles_regionai — gamybos kortelės paskirstymas regionams (combo)`sql
id TEXT PRIMARY KEY
kortele_id TEXT NOT NULL -- FK → gamybos_korteles.id
regionas TEXT NOT NULL -- regiono kodas/pavadinimas
dezutes_kiekis INTEGER -- planuojamas dėžučių kiekis
dezutes_exp TEXT -- regiono galiojimo data
dezutes_gauta TEXT
pak_dezeje INTEGER -- paketų dėžėje
pak_dezuteje INTEGER -- paketų dėžutėje
dez_dezeje INTEGER -- dėžučių transportinėje dėžėje
supakuota_kiekis REAL -- supakuotas kiekis tam regionui
isvezta_kiekis REAL -- išvežtas kiekis tam regionui
statusas TEXT -- regiono būsena
eilutes_nr INTEGER -- rikiavimo eilės numeris
created TEXT, updated TEXT
`nurasymai — gamybos metu nurašytų žaliavų registras`sql
id TEXT PRIMARY KEY
korteles_id TEXT NOT NULL -- FK → gamybos_korteles.id
zaliava_id TEXT NOT NULL -- FK → zaliavos.id
panaudotas_kiekis REAL NOT NULL -- nurašytas kiekis (kg)
created TEXT, updated TEXT
`recepto_sudetis — recepto sudėties lentelė (gali dubliuoti/pakeisti ingredientai)`sql
id TEXT PRIMARY KEY
receptas_id TEXT NOT NULL -- FK → receptai.id
zaliava_id TEXT NOT NULL -- FK → zaliavos.id
kiekis_vienai_porcijai REAL NOT NULL
created TEXT, updated TEXT
`vaztarasciai — prekių išvežimo važtaraščiai`sql
id TEXT PRIMARY KEY
numeris TEXT NOT NULL -- važtaraščio numeris
kliento_pavadinimas TEXT NOT NULL
data TEXT NOT NULL -- išrašymo data
siuntejas TEXT NOT NULL -- atsakingas asmuo / siuntėjas
palečių_kiekis INTEGER NOT NULL -- palečių skaičius
viso_vnt INTEGER NOT NULL -- bendras prekių vnt kiekis
viso_deziu INTEGER NOT NULL -- bendras dėžių kiekis
payload TEXT NOT NULL -- papildomi išvežimo duomenys (JSON)
statusas TEXT NOT NULL -- važtaraščio būsena
created TEXT, updated TEXT
`zaliavos — žaliavų sandėlio likučiai`sql
id TEXT PRIMARY KEY
pavadinimas TEXT NOT NULL -- žaliavos pavadinimas
likutis REAL NOT NULL -- esamas likutis kg
vienetas TEXT NOT NULL -- matavimo vienetas (dažniausiai 'kg')
klientas_id TEXT -- FK → klientai.id (jei žaliava nuosava)
created TEXT, updated TEXT
`zaliavu_gavimai — žaliavų gavimo iš tiekėjų žurnalas`sql
id TEXT PRIMARY KEY
data TEXT NOT NULL -- gavimo data
siuntejas TEXT NOT NULL -- tiekėjas / siuntėjas
zaliava_id TEXT NOT NULL -- FK → zaliavos.id
zaliava_pavadinimas_raw TEXT NOT NULL -- žaliavos pavadinimas iš dokumentų
serijos_nr TEXT NOT NULL -- tiekėjo LOT / serija
galiojimas TEXT NOT NULL -- tiekėjo EXP data
kiekis REAL NOT NULL -- gautas kiekis (kg)
busena TEXT NOT NULL -- gavimo būsena
created TEXT, updated TEXT
`---
4. GAMYBOS CIKLAS
`
1. PLANAVIMAS gamyba_pradeta=0 → Gamybos langas
2. AKTYVI GAMYBA gamyba_pradeta=1 → Pagrindinis langas
3. BAIGTA busena='baigta' → Istorija
4. ARCHYVUOTA busena='archyvuota' → Archyvas
`Pouchų workflow
`
Gavimas iš tiekėjo → pakuociu_sandelis
↓
Sandėlio kortelė: gauta / rezervuota / laisva
↓
Vartotojas įveda LOT + EXP + kiekį
↓
Sukuriama gamybos_kortele (pleveles_statusas='Gauta' auto)
↓
Gamybos langas → Maisomi tab
`---
5. API ENDPOINT'AI
🕸️ Sistemos žemėlapis (Wolf)
GET /wolf — projekto žemėlapis naršyklėje (tekstinė versija)
GET /wolf/graph — interaktyvus D3.js tinklo grafas📋 Gamybos kortelės (Planavimas ir gamybos eiga)
GET /api/gamybos-korteles — gauti visas korteles (aktyvias, planuojamas)
POST /api/gamybos-korteles — sukurti naują gamybos kortelę
PATCH /api/gamybos-korteles/:id — atnaujinti kortelės duomenis
DELETE /api/gamybos-korteles/:id — ištrinti gamybos kortelę
POST /api/gamybos-korteles/:id/toggle-pill — įjungti/išjungti gamybos statuso mygtuką
POST /api/gamybos-korteles/:id/update-status — pakeisti kortelės būseną
POST /api/gamybos-korteles/:id/pradeti-gamyba — pradėti aktyvią gamybą (perkelti iš planavimo)
POST /api/gamybos-korteles/:id/registruoti-maisyma — užregistruoti atliktą maišymą (kg)
POST /api/gamybos-korteles/:id/registruoti-gamyba — užregistruoti staklių gamybą
POST /api/gamybos-korteles/:id/registruoti-supakavima — užregistruoti supakuotą kiekį dėžutėmis
POST /api/gamybos-korteles/:id/registruoti-pouch — užregistruoti užpildytus pouch maišelius
POST /api/gamybos-korteles/:id/registruoti-pagaminta — tiesiogiai užfiksuoti pagamintą kiekį
POST /api/gamybos-korteles/:id/baigti-stakles — pažymėti, kad gamyba staklėmis baigta
POST /api/gamybos-korteles/:id/baigti-pakavima — pažymėti, kad pakavimas baigtas
POST /api/gamybos-korteles/:id/archyvuoti — perkelti baigtą kortelę į archyvą
GET /api/gamybos-korteles/skaidres — gauti duomenis skaidrių / monitoriaus režimui
GET /api/gamybos-korteles/:id/atsekamumas — gauti LOT/EXP atsekamumo duomenis
GET /api/gamybos-korteles/:id/patikrinti-atsargas — patikrinti, ar pakanka žaliavų sandėlyje
GET /api/gamybos-korteles/:id/kortele-html — gauti kortelės spausdinimo HTML ataskaitą
GET /api/gamybos-korteles/:id/dosje-html — gauti gražiai suformatuotą A4 portrait formato Gamybos dosjė HTML spausdinimui
GET /api/istorija — gauti įvykdytų (baigtų) kortelių sąrašą
GET /api/dosje/:id — gauti istorinės kortelės dosje informaciją
GET /api/debug/korteles-count — gauti bendrą kortelių kiekį (debug)🥣 Receptūros ir sudėtis
GET /api/receptai — gauti visus receptus
GET /api/receptai-list — gauti supaprastintą receptų sąrašą
GET /api/receptai-detalus — gauti receptus su papildomais staklių/komentarų laukais
GET /api/receptai-gamybai — gauti receptus, paruoštus kortelių kūrimui
POST /api/receptai — sukurti naują receptą
PUT /api/receptai/:id — atnaujinti recepto pagrindinius/papildomus laukus
DELETE /api/receptai/:id — ištrinti receptą
POST /api/recepto-sudetis — pridėti žaliavą į recepto sudėtį
PUT /api/recepto-sudetis/:id — koreguoti žaliavos kiekį recepto sudėtyje
DELETE /api/recepto-sudetis/:id — pašalinti žaliavą iš recepto sudėties🧪 Žaliavų sandėlis (Likučiai ir nurašymai)
GET /api/zaliavos — gauti žaliavų sąrašą su esamais likučiais
POST /api/zaliavos — pridėti naują žaliavą į sistemą
PUT /api/zaliavos/:id — atnaujinti žaliavos kortelę
DELETE /api/zaliavos/:id — ištrinti žaliavą
GET /api/zaliavos/:id/panaudojimas — gauti žaliavos nurašymų/panaudojimo istoriją
GET /api/zaliavos/:id/gavimai — gauti šios žaliavos gavimų žurnalą
GET /api/nurasymai — gauti visų žaliavų nurašymų sąrašą
POST /api/papildyti-zaliava/:id — koreguoti žaliavos sandėlio likutį (+/- kg)🎞️ Medžiagų ir žaliavų gavimai (Pajamavimas)
GET /api/gavimai — gauti visus gavimo įrašus
PUT /api/gavimai/:id — redaguoti gavimo įrašą
DELETE /api/gavimai/:id — pašalinti gavimo įrašą
POST /api/registruoti-gavima — užregistruoti žaliavos gavimą iš tiekėjo
POST /api/gavimai/bulk — plėvelių rulonų priėmimas (auto-generuoja LOT kodus)
POST /api/priimti-medziagas — užregistruoti pakuotės medžiagų sunaudojimą gamybos kortelei
GET /api/pakuociu-gavimai — gauti plėvelių ir dėžučių gavimo suvestinę raw formatu🛍️ Pakuočių sandėlis (Pouch)
GET /api/pakuociu-sandelis — gauti pouch pakuočių sandėlio likučius
POST /api/pakuociu-sandelis — įvesti naują pouch gavimą iš tiekėjo
DELETE /api/pakuociu-sandelis/:id — ištrinti pouch sandėlio gavimo įrašą
GET /api/pouch-sandelys — gauti bendrą pakuočių ataskaitą📦 Važtaraščiai ir išvežimai
GET /api/vaztarasciai — gauti visus važtaraščius
GET /api/vaztarasciai/:id/html — sugeneruoti važtaraščio HTML peržiūrą
DELETE /api/vaztarasciai/:id — ištrinti važtaraštį
GET /api/vaztarastis-duomenys — pagalbiniai duomenys naujo važtaraščio kūrimui
GET /api/next-vaztarascio-numeris — sugeneruoti sekantį važtaraščio numerį
POST /api/greitas-issiuntimas — tiesioginis prekių išsiuntimas nenaudojant gamybos kortelės
POST /api/nurasyti-vaztarasti — užfiksuoti žaliavų nurašymą pagal išsiųstas prekes
GET /api/isvezimai — gauti prekių išvežimo įrašus pagal važtaraščius
GET /api/kpi-isvezta — gauti išvežtos produkcijos KPI ataskaitą🗺️ Multi-region (Kortelės regionai)
GET /api/gamybos-korteles/:id/regionai — gauti kortelės combo regionų paskirstymus
POST /api/gamybos-korteles/:id/regionai — pridėti naują regioną kortelei
PUT /api/gamybos-korteles/:id/regionai/:rid — koreguoti regiono pakavimo/EXP duomenis
DELETE /api/gamybos-korteles/:id/regionai/:rid — pašalinti regioną iš kortelės
POST /api/gamybos-korteles/:id/regionai/:rid/registruoti-supakavima — užregistruoti supakuotą kiekį konkrečiam regionui⏱️ Darbo laikas ir darbuotojai
GET /api/darbuotojai — gauti darbuotojų sąrašą
POST /api/darbuotojai — pridėti naują darbuotoją į sąrašą
GET /api/darbo-laikas — gauti darbo laiko žurnalą
POST /api/darbo-laikas — užregistruoti dirbtą laiką / viršvalandžius / atostogas / tėvadienį
PUT /api/darbo-laikas/:id — redaguoti darbo laiko įrašą
DELETE /api/darbo-laikas/:id — pašalinti darbo laiko įrašą📖 Gamybos žurnalas
GET /api/gamybos-zurnalas — gauti žurnalo įrašus
POST /api/gamybos-zurnalas — sukurti rankinį žurnalo įrašą
PUT /api/gamybos-zurnalas/:id — redaguoti žurnalo įrašą
DELETE /api/gamybos-zurnalas/:id — pašalinti žurnalo įrašą👥 Klientai
GET /api/klientai — gauti klientų sąrašą
POST /api/klientai — sukurti naują klientą
PUT /api/klientai/:id — redaguoti kliento kortelę
DELETE /api/klientai/:id — pašalinti klientą🖨️ Spausdinimas ir PDF generavimas
GET /api/debug/printeriai — gauti sistemoje įdiegtų spausdintuvų sąrašą (Zebra)
POST /api/spausdinti-hydraw — išsiųsti ZPL etiketės kodą į Zebra spausdintuvą
POST /api/generuoti-pdf — sugeneruoti PDF dokumentą iš HTML šablono📱 Mobilioji sąsaja
GET /mobile — mobiliosios aplikacijos nukreipimas
POST /api/mobilus/priimti — priimti ir apdoroti duomenis iš mobiliojo įrenginio⚙️ Administravimas, importas ir DB priežiūra
GET /api/sync-cloud — sinchronizuoti duomenis su debesimi (PocketBase)
GET /api/recalc-stats — perskaičiuoti gamybos kortelių rodiklius ir KPI
GET /api/dedup-journal — išvalyti besidubliuojančius žurnalo įrašus
GET /api/debug/indexes — gauti DB indeksų sąrašą (debug)
GET /api/restart-terminal — paleisti iš naujo mobiliojo terminalo tarybą
POST /api/admin/restart-pb — perkrauti PocketBase procesą
POST /api/admin/sukurti-atsargine-kopija — sukurti atsarginę DB kopiją
GET /api/admin/atsargines-kopijos — gauti atsarginių kopijų sąrašą
POST /api/admin/db-recovery — atstatyti duomenų bazę iš atsarginės kopijos
POST /api/admin/sinchronizuoti-isvezimus — sinchronizuoti išvežimus su išorine sistema
POST /api/importuoti-istorija — importuoti istorinius gamybos įrašus
POST /api/admin/importuoti-istorija-archyvas — importuoti archyvinius įrašus
POST /api/admin/importuoti-vaztarasciai — importuoti važtaraščius iš XLSX failo
POST /api/admin/importuoti-gavimus — importuoti gavimus iš XLSX failo
POST /api/admin/importuoti-nurasymus — importuoti nurašymus iš XLSX failo
POST /api/admin/importuoti-receptu-sudetis — importuoti receptų sudėtis iš XLSX failo
POST /api/admin/importuoti-hf-20mb — importuoti didelį žaliavų failą (HF 20MB)
POST /api/admin/migruoti-istorija-xlsx — konvertuoti ir migruoti istoriją
POST /api/admin/deduplikuoti-nurasymus — išvalyti pasikartojančius žaliavų nurašymus
POST /api/admin/trinti-zurnalas-dublikatus — išvalyti besidubliuojančius žurnalo įrašus
POST /api/admin/sukurti-gavima — administratoriaus teise sukurti gavimą
POST /api/admin/zurnalas-irasas — sukurti naują žurnalo įrašą iš admin pulto
PATCH /api/admin/zurnalas-irasas/:id — redaguoti žurnalo įrašą admin pulte
DELETE /api/admin/nurasymas/:id — pašalinti nurašymą admin pulte
DELETE /api/admin/ingredientai-receptas/:receptas_id — išvalyti recepto sudėtį
POST /api/admin/susieti-kortele-receptu — susieti gamybos korteles su atitinkamu receptu
POST /api/admin/susieti-receptus — automatiškai susieti receptus
POST /api/admin/fix-recepto-sudetis-schema — pataisyti sugadintą recepto sudėties schemą
POST /api/admin/repair-recepto-sudetis — pataisyti sugadintus recepto sudėties duomenis
GET /api/ataskaita/biofarmacija — gauti Biofarmacijos klientų ataskaitą---
6. UI STRUKTŪRA
Pagrindiniai tabs (
activeSidebarTab)
`
'gaminama' → Pagrindinis langas (aktyvi gamyba, gamyba_pradeta=1)
'gamyba' → Gamybos langas (planavimas, gamyba_pradeta=0)
'vaztarastis'→ Važtaraščiai
'klientai' → Klientai
'zaliavos' → Žaliavų sandėlis
'receptai' → Receptūros
'kpi' → KPI Ataskaitos (pakeitė seną žurnalo tab)
'istorija' → Istorija (baigtos kortelės)
`Gamybos lango sub-tabs (
_gamybaLangasTab)
`
'maisomi' ← DEFAULT — kortelės su sumaisytas_kiekis > 0
'paketeliai' — plevele tipo
'pauchai' — pakuočių sandėlio vaizdas
'stickai' — stick tipo
'gavimai' — plėvelių ir dėžučių gavimų suvestinė viena bendra eilute pagal produktą
`Svarbūs state kintamieji
`javascript
let _gamybaLangasTab = 'maisomi'; // default tab
let _pakuociuSandelisData = null; // null = reload, {} = cache
let _gamybaCardId = null; // aktyvi kortelė
let allZurnalasLogs = []; // žurnalo cache
let activeSidebarTab = 'gaminama'; // aktyvus pagrindinis tab
`---
7. ŽINOMOS SUBTILYBĖS / SPĄSTAI
> [!danger] Kritinės klaidos
> -
receptai lentelė NETURI kodas kolonos
> - DB failas:
C:\VM\pb_data\data.db (NE vm-darbas.db — senas pavadinimas)
> - Naudoti
node:sqlite ES module (NE better-sqlite3)
> - NIEKADA TailwindCSS — tik vanilla CSS
Žinomos klaidos ir sprendimai
Klaida Sprendimas |
|--------|-----------|
r.kodas column not found receptai neturi kodas kolonos — pašalinti iš SQL |
Pouchai kaip tuščios kortelės Neteisingas workflow. Naudoti pakuociu_sandelis |
---
8. PASKUTINIAI PAKEITIMAI
2026-06-17 — sesija 1 (rytas)
✅ pakuociu_sandelis lentelė sukurta
✅ /api/pakuociu-sandelis GET/POST/DELETE
✅ Pauchai tab → sandėlio vaizdas
✅ Maisomi tab — naujas DEFAULT tab Gamybos lange
✅ Pagrindinis langas — ⚗ badge clickable pouchams
✅ DN92197 gavimas užregistruotas (5 produktai, Alpi Eesti) 2026-06-17 — sesija 2 (vakaras)
✅ OpenWolf sistema sukurta — .wolf/ direktorija su 8 failais
✅ /wolf route — projekto žemėlapis naršyklėje (tekstas su tabs)
✅ /wolf/graph route — interaktyvus D3.js tinklo grafas (8 mazgai, 22 ryšiai)
✅ Viršvalandžių ekrane → 🕸 Grafas + 🐺 Tekstas mygtukai
✅ self-improving-agent hook aktyvuotas (.claude/settings.json)
✅ Obsidian instaliuotas ( C:\Users\justa\AppData\Local\Programs\obsidian\)
✅ Desktop shortcut sukurtas ( VM Wolf.lnk) — atidaroma su vault'u
✅ readdirSync pridėtas prie server.js importų
✅ CLAUDE.md atnaujintas — sesijos pabaigos rutina + teisingas DB pavadinimas
✅ agy-uzduotis.md atnaujintas — sesijos pradžios rutina Agy agentui
✅ Obsidian vault failai: HOME, db-schema, workflow, pakuotes, klaidos 2026-06-17 — sesija 3 (vėlyvas vakaras)
✅ Antigravity Awesome Skills įdiegti ir aktyvuoti: nodejs-backend-patterns, nodejs-best-practices, sql-optimization-patterns.
✅ POST /api/gavimai/bulk endpoint'as sukurtas plėvelių rulonų priėmimui su auto-generuojamu LOT kodu [Raidė][YYMMDD].
✅ Desktop UI pajamavimo modalo išplėtimas — sukurtas „Multi-plėvelės” tab'as su dinamišku eilučių pridėjimu/pašalinimu bei LOT peržiūra.
✅ Mobile UI pajamavimo modalo išplėtimas — sukurtas „Bulk Plėv.” tipas su supaprastinta multi-entry forma rulonų registravimui.
✅ Dokumentacija — atnaujinta API schema [cerebrum.md](file:///C:/VM/.wolf/cerebrum.md) ir [agy-uzduotis.md](file:///C:/VM/agy-uzduotis.md) užduočių registras. 2026-06-18 — sesija 7 (Agy)
✅ Gamybos Dosjė patobulinimai ( server.js): atnaujintas dosje_tekstas generavimas archyvavimo metu, pridedant išsamų žaliavų LOT/EXP atsekamumą su nurašymų ir gavimų lentelių palyginimu, maišymų suvestinę iš gamybos žurnalo, kliento informaciją su kliento serija etiketėms ir bendro sumaišyto kiekio rodymą.
✅ A4 portrait spausdinimo endpoint'as ( GET /api/gamybos-korteles/:id/dosje-html): sukurtas naujas endpoint'as, kuris grąžina profesionalų, A4 portrait formatui ir spausdinimui pritaikytą HTML su Daily Spoon logotipu, suvestinėmis ir parašo laukais.
✅ UI patobulinimai ( public/index.html): pridėti „🖨 Dosje“ mygtukai istorijos kortelės valdyme bei modaliniame lange, atidarantys naująjį spausdinimo puslapį naujame lange.2026-06-18 — sesija 6 (Agy)
✅ Portuotas pilnas Telegram botas ( telegram-bot.js) – 100% atstatytas visų funkcijų veikimas (monitorius, maišymai, trūkstamų žaliavų planavimas, UUID-saugus žurnalo ir HR įrašų redagavimas/trynimas, priėmimas, naujų narių admin patvirtinimai).
✅ Sintaksės klaidų ištaisymas – pašalinta dubliuota userStates deklaracija ir suderinta SQLite su Express /api/priimti-medziagas API.
✅ Dokumentacijos atnaujinimas – Wolf vault schema, workflow ir pakuotės pritaikytos naujiems laukams bei maršrutams. 2026-06-18 — sesija 5
✅ Naujas klientas AC (UAB Aconitum) — receptas, žaliavos, LOT/EXP, gamybos kortelės
✅ Pouch kortelės UI — SUPAKUOTA → DĖŽĖS blokas (auto-skaičiuojamas)
✅ Maišymo progresas — mini violetinis baras su % po pavadinimo
✅ Kortelių stilius — mėlynas fonas, izoliuoti info barai, paryškintos spalvos
✅ kliento_serija — naujas laukas, etiketėse gamintojo serija, važtaraščiuose mūsų LOT
✅ IŠSIŲSTA baras — rodo sandėlio likutį (supakuota - išsiųsta)
✅ Gamybos langas — užsakovo filtras, Maisomi rodo pradėtas korteles
✅ Maišymo kortelė — landscape spausdinimas, pataisyta 1 maišymui formulė
✅ OpenWolf — Agy atliko pilną projekto analizę, atnaujino visus .wolf/ failus
✅ Auto-maišymo logika — receptas su ≤1 ingredientu automatiškai praleidžia maišymo etapą
✅ kliento_serija kolona gamybos_korteles — etiketėse gamintojo serija, važtaraščiuose mūsų LOT2026-06-17 — sesija 4 (naktis)
✅ Recepto tabs — 3 tab'ai recepto detalių panelėje: 📋 Sudėtis | ⚙️ Staklinė | 📝 Pastabos
✅ _saveReceptasExtra(id) — saugo stakliu_rekomendacija + gamybos_pastabos per PUT
✅ Gamybos kortelių pertvarka — gamyba-row iš grid → viena flex eilutė su:
-
gr-name-stack (180px): pavadinimas / LOT / EXP stacked vertikaliai
-
gr-mix-mini (88px): mini maišymo progress baras su ⚗ etikete ir procentu
- 3×
progress-block (flex:1 kiekvienas): PAGAMINTA / SUPAKUOTA / IŠSIŲSTA — originalaus dydžio
- 🗑 mygtukas dešinėje + žalias „Arch.” kai
allDone
✅ Pašalinti ! statusas ir 🔍 atsekamumas mygtukai iš kortelės (per daug triukšmo)
✅ Modal toggles — „⚙ Gamyba baigta” checkbox gamybos registracijos modale; „▣ Pakavimas baigtas” supakavimo modale
✅ Baigtos būsenos — PAGAMINTA blokas tampa žalias + „BAIGTA ✓” kai stakles_baigtos; SUPAKUOTA lygiai taip pat kai pakavimas_baigtas
✅ Multi-region kortele — gauna display:grid per inline style (nesulaužyta)
✅ Agy kintamųjų pavadinimų klaidos prevencija — taisyklės instructions.md, agy-uzduotis.md, klaidos.md#### ⚠️ Rytojui: Pouch kortelės tobulinimas
Pouch lange nereikalingas pakavimo baras (staklinė tiesiogiai pila į pakelius → dėžės)
Rodyti: pagamintas kiekis dėžėmis + likusių paketų skaičius
Išsiuntimas: tik dėžėmis 2026-06-18 — sesija 1 (rytas - Agy)
✅ Cerebrum.md atnaujinimas — pilnai dokumentuotos visos 15+ SQLite lentelių schemos ir visi 114 API endpoint'ų sugrupuoti pagal sritis.
✅ Mobile UI plėvelių pajamavimas („Bulk Plėv.”) — atlikti patobulinimai:
- Receptų dropdown'e filtruojami tik plėvelės/stick tipai (paslėpti
pouch receptai).
- Pridėtas sėkmingo pajamavimo suvestinės konteineris (
mBulkResultNotice), rodantis sugeneruotus LOT ir papildomus duomenis.
- Perkelta inicializavimo logika į
renderGavimas pabaigą, išsprendžiant tuščio vaizdo bug'ą perpiešiant (renderView()).
- Sutvarkyta, kad formos laukai išsivalytų po sėkmingo išsaugojimo.
✅ Dokumentacija — atnaujintas bendras agentų užduočių sąrašas [agent-tasks.md](file:///C:/VM/agent-tasks.md) ir užduočių žurnalas [agy-uzduotis.md](file:///C:/VM/agy-uzduotis.md). 2026-06-19 — sesija 1 (Agy)
✅ Telegram bot isvezta_kiekis pataisymas (telegram-bot.js) — išspręsta klaida, kai botas naudojo neegzistuojančią c.isvezta_kiekis koloną iš gamybos_korteles. Sukurtas getIsvezta(lot, recPav) helperis dinamiškai sumuoti išsiuntimus iš gamybos_zurnalas.---
9. TOOLS / SKILLS
Aktyvūs
/si:remember — išsaugoti žinojimą į atmintį
/si:review — atminties sveikatos patikrinimas
/wolf — projekto žemėlapis naršyklėje (http://localhost:3000/wolf)
Obsidian — šis failas kaip vault ( C:\VM\.wolf\)
Telegram Botas — integracinis botas ( telegram-bot.js), startuojamas kartu su Express serveriu.Atmintis
~/.claude/projects/C--VM/memory/MEMORY.md — automatinė Claude atmintis
.wolf/cerebrum.md` — rankinis žinių žemėlapis (šis failas)
> [!info] Naudojimas
> Šis failas — failų žemėlapis. Patikrink prieš atidarant bet kokį failą.
> Pilna projekto logika → [[cerebrum]]
Atnaujinta: 2026-06-19
---
C:\VM\``
C:\VM\
├── server.js ← PAGRINDINIS BACKEND (Express, SQLite, visos API)
├── CLAUDE.md ← Claude instrukcijos (OpenWolf + projekto taisyklės)
├── agy-uzduotis.md ← Agy ↔ Claude komunikacijos kanalas
├── agent-tasks.md ← Bendrų agentų užduočių sąrašas
├── .env.example ← Aplinkos kintamųjų šablonas
├── start-background.ps1 ← Windows auto-start skriptas
├── terminal-server.js ← Web terminalas (port 3001) — mobiliems
├── gamybos_ciklas.js ← Gamybos ciklo logikos modulis
├── gamybos_langas.js ← Gamybos lango UI logikos modulis
├── faktinis_sunaudojimas.js ← Faktinio sunaudojimo skaičiavimai
├── telegram-bot.js ← Telegram botas (integruotas ir valdomas iš server.js)
├── darbuotojai.json ← Darbuotojų sąrašas (vietinis registras)
│
├── public/
│ ├── index.html ← DESKTOP UI (~15k eilučių)
│ └── mobile.html ← MOBILE UI (pajamavimas iš telefono)
│
├── pb_data/
│ └── data.db ← VIENINTELIS DB ŠALTINIS (SQLite)
│
├── .wolf/ ← OpenWolf sistema
│ ├── OPENWOLF.md ← Sistemos taisyklės
│ ├── cerebrum.md ← Projekto smegenys [[cerebrum]]
│ ├── anatomy.md ← Šis failas
│ ├── HOME.md ← Obsidian pradinis puslapis
│ ├── db-schema.md ← DB lentelės detaliai
│ ├── workflow.md ← Gamybos ciklas žingsnis po žingsnio
│ ├── pakuotes.md ← Pakuočių tipai ir sandėlis
│ ├── klaidos.md ← Žinomos klaidos ir sprendimai
│ ├── Atidaryti-Obsidian.bat ← Greitas Obsidian paleidimas
│ └── .obsidian/ ← Obsidian konfigūracija
│
├── .claude/
│ ├── settings.json ← self-improving-agent hook
│ └── settings.local.json← Vietiniai leidimai
│
├── failai/ ← Įkelti failai (Excel, PDF importui)
├── logs/ ← Serverio žurnalai
└── node_modules/ ← NPM pakuotės (neredaguoti)
`---
Svarbiausi failai pagal darbą
🔧 API keitimas
→
server.js🖥️ Desktop UI keitimas
→
public/index.html (~15k eilučių — labai didelis, naudoti Grep prieš Read)📱 Mobile UI keitimas
→
public/mobile.html🗄️ DB schema tikrinimas
→
pb_data/data.db + server.js migracijų sekcija viršuje⚙️ Gamybos ciklo logika
→
gamybos_ciklas.js + gamybos_langas.js📨 Agy agento užduotys
→
agy-uzduotis.md🧠 Projekto kontekstas
→
.wolf/cerebrum.md` ([[cerebrum]])