- agent docs: Linear (ZEE-*) → Plane (MITHOME-*) everywhere (task tracking, commit examples, workflows, env vars) - testing steering: replace the obsolete Gherkin/Linear reporting with the pre-deploy suite and the CMS test scripts - README: rewrite to Next.js 15, local deploy, Plane, CMS, security monitoring - DOCKER/proto docs: correct dev-stack ports (app 8080, mongo 27018) and Next.js 15 - content-editor-recovery: mark the old 'next steps' as done - mark clearly-obsolete Linear/GitHub-era guides as deprecated (banner) — LINEAR-SYNC, GITHUB-CICD/INTEGRATION, TEST-MANAGEMENT/REPORTING, traceability, sync-status analysis, requirements docs
4.7 KiB
Content Editor – strukturális helyreállítás
Cél és hatókör
Ez a dokumentum a MITHOME-30 feltárását és a kezdeti adathelyreállítást rögzíti. A Content Editor a proto/src/content/**/*.json fájlokat írja, ezért a hiba a megjelenő weboldal-tartalmat közvetlenül érinti.
Talált hiba
A böngészős mentési kód minden mező értékét szövegként írta vissza. Mentés előtt kiürítette az összes tömböt, majd a a.b[0].c útvonalat törékeny reguláris kifejezéssel dolgozta fel. Emiatt:
- a tömbök
[]értékre ürültek, az elemek pedig hibás, példáulitems[0]nevű objektumkulcsokba kerültek; - az objektumokat és beágyazott tömböket a felület
"[object Object]"szöveggé alakíthatta; - a számok és logikai értékek szöveggé alakultak;
- egyes kulcsok sérültek (
idhelyetti.$1,descriptionhelyett0.$1escription).
Helyreállítás – 2026-08-17
Az alábbi fájlok strukturálisan helyreálltak:
pages/home.json– a Git-történet utolsó ép változatából, a későbbihttps://mail.mozdit.huwebmail-címet megtartva;pages/about.json– a helyes tömbök és objektumok visszaállításával;pages/services.json– a részletes szolgáltatás-specifikációk beágyazott objektumaival együtt;pages/adatvedelem.jsonéspages/hasznalati-feltetelek.json– a későbbi, üzletileg relevánsSzigetszentmiklósszöveg megtartásával.
Minden src/content/pages/*.json fájl JSON-szintaktikája és a korábbi sérülési mintákra végzett ellenőrzése rendben van. A teljes unit tesztcsomag 55 sikeres teszttel lefutott.
A hiba megelőzése a kliensben
A content-editor.js mentési logikája most karakterenként elemzi az útvonalakat, ezért a HTML-sablon escape-elése nem módosíthatja a parser működését. A felület rekurzívan rendereli az objektumokat és a beágyazott tömböket; a boolean checkboxként, a szám number-inputként szerkeszthető. A mentés ezek típusát megőrzi.
A ténylegesen generált böngésző-kódot ellenőrző regressziós teszt:
node scripts/test-content-editor-serializer.js
A teszt egy beágyazott tömböket és objektumokat, valamint string-, boolean- és numerikus mezőket tartalmazó mintán ellenőrzi a mentési körutazást.
Szerveroldali védelmi réteg
A MITHOME-41 részeként a proto/src/content/schema.js az összes szerkeszthető content-fájl kötelező mezőit, típusait és megengedett kulcsait írja le. A Next.js loader és a Content Editor ezt az egy közös validátort használja.
A mentés csak sikeres validáció után történik. Az Editor legfeljebb 256 KiB-os request body-t fogad; hibás JSON vagy sémahiba 422 választ ad, és az eredeti fájlt érintetlenül hagyja. Érvényes mentéskor:
- az eredeti JSON időbélyeges példánya a
.content-backups/könyvtárba kerül; - az új tartalom egy célfájllal azonos könyvtárban létrehozott ideiglenes fájlba íródik;
- az ideiglenes fájl atomikus átnevezéssel váltja fel a célfájlt.
A backup-könyvtár szándékosan nincs Gitben. A séma- és atomikus mentési tesztek:
node scripts/test-content-schema.js
node scripts/test-content-editor-save.js
Hozzáférésvédelem
A Content Editor csak akkor indul el, ha a környezetben mindkét változó meg van adva:
CMS_USER=<egyedi-felhasználónév>
CMS_PASS=<erős-egyedi-jelszó>
Nincs beégetett alapértelmezett belépési adat. A szerver kizárólag a 127.0.0.1 címen figyel, ezért távoli használathoz Nginx/VPN vagy SSH tunnel szükséges. A böngésző minden módosító kéréshez szerver által kiadott CSRF-tokent küld.
Az ismételt hibás bejelentkezést és a publikálási kéréseket IP-alapú, 15 perces csúszóablakos limit védi. A mentések és publikálások minimális auditbejegyzést írnak a .content-editor-audit.jsonl fájlba (időpont, esemény, felhasználó, célfájl, eredmény); secretet és teljes contentet nem naplóz. Ez a fájl, valamint a backupok nincs Gitben.
A védelmi alapteszt:
node scripts/test-content-editor-security.js
Következő védelmi lépések
Elkészültek (MITHOME-41/42/43, majd az azt követő issue-k): séma-validált atomikus mentés visszaállítható backup-pal, systemd-alapú publikálás/deploy, egyedi hitelesítő adatok, CSRF, audit-log és rate-limit — valamint azóta: login oldal + session, optimista zárolás (409), verziók panel diff-el/restore-ral, logó-feltöltés, gyorsbillentyűk, Safari-kompatibilis auth, deploy-verzió (git SHA) és pre-deploy tesztkészlet. A friss állapotot lásd
docs/felhasznaloi-utmutato.mdés.agent/workflows/cms-feature.md.