Files
websitedev/docs/content-editor-recovery.md
Do Siki 410b4a2e2f
CI Pipeline with Test Management / 🧪 Run Tests & Generate Reports (push) Waiting to run
CI Pipeline with Test Management / 🐳 Docker Integration Tests (push) Blocked by required conditions
CI Pipeline with Test Management / 🏗️ Build Docker Image (push) Blocked by required conditions
CI Pipeline with Test Management / 📊 Generate Test Summary (push) Blocked by required conditions
Test Reporting & Gherkin Analysis / 🧪 Run Tests & Generate Reports (push) Waiting to run
Test Reporting & Gherkin Analysis / 📊 Analyze Test Coverage (push) Blocked by required conditions
Test Reporting & Gherkin Analysis / 🔄 Sync with Linear (push) Blocked by required conditions
Test Reporting & Gherkin Analysis / ⚡ Performance Monitoring (push) Blocked by required conditions
docs: refresh all documentation to the current state
- 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
2026-08-22 19:41:50 +02:00

83 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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ául `items[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 (`id` helyett `i.$1`, `description` helyett `0.$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őbbi `https://mail.mozdit.hu` webmail-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` és `pages/hasznalati-feltetelek.json` a későbbi, üzletileg releváns `Szigetszentmiklós` szö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:
```sh
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:
1. az eredeti JSON időbélyeges példánya a `.content-backups/` könyvtárba kerül;
2. az új tartalom egy célfájllal azonos könyvtárban létrehozott ideiglenes fájlba íródik;
3. 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:
```sh
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:
```sh
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:
```sh
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`.