Compare commits
3
Commits
1bf32dd076
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d699bf4787 | ||
|
|
758ee2cfed | ||
|
|
3573d2accb |
+8
-3
@@ -80,10 +80,15 @@ sync: update Plane issues + TODO [leírás]
|
|||||||
websitedev/
|
websitedev/
|
||||||
├── proto/ # Fő Next.js alkalmazás (itt futtatsd a parancsokat!)
|
├── proto/ # Fő Next.js alkalmazás (itt futtatsd a parancsokat!)
|
||||||
│ ├── src/
|
│ ├── src/
|
||||||
│ │ ├── app/ # Next.js App Router (pages és API routes)
|
│ │ ├── app/
|
||||||
|
│ │ │ ├── (frontend)/ # Publikus oldalak: [locale]/[slug] catch-all
|
||||||
|
│ │ │ └── (payload)/ # Payload admin (/admin) + REST/GraphQL API
|
||||||
│ │ ├── components/ # React komponensek (Header, Footer, ThemeProvider)
|
│ │ ├── components/ # React komponensek (Header, Footer, ThemeProvider)
|
||||||
│ │ ├── content/ # JSON tartalom-kezelő rendszer
|
│ │ ├── globals/ # Payload Globals (Home, About, Services, Contact, Common)
|
||||||
│ │ ├── lib/ # Utility könyvtárak (MongoDB, Logger, Site Config)
|
│ │ ├── collections/ # Payload Collections (LegalPages, Partners, Media, ContactSubmissions, Users)
|
||||||
|
│ │ ├── payload.config.ts # Payload CMS konfiguráció
|
||||||
|
│ │ ├── content/ # RÉGI JSON rendszer — csak migrációs seed + teszt-fixture (MITHOME-91/93/96)
|
||||||
|
│ │ ├── lib/ # payload-content.ts (Local API adapter), MongoDB health-check, Logger
|
||||||
│ │ ├── config/ # Statikus site konfiguráció
|
│ │ ├── config/ # Statikus site konfiguráció
|
||||||
│ │ └── types/ # TypeScript típusdefiníciók
|
│ │ └── types/ # TypeScript típusdefiníciók
|
||||||
│ └── public/ # Statikus fájlok
|
│ └── public/ # Statikus fájlok
|
||||||
|
|||||||
@@ -8,11 +8,12 @@ Ez a fájl minden interakcióban automatikusan betöltődik az AI számára a pr
|
|||||||
|
|
||||||
## Rendszer áttekintés
|
## Rendszer áttekintés
|
||||||
|
|
||||||
A projekt egy **Next.js 15 alapú marketing weboldal** a mozdIT Bt. számára, App Router architektúrával, TypeScript-tel és Tailwind CSS 4-gyel.
|
A projekt egy **Next.js 15 alapú marketing weboldal** a mozdIT Bt. számára, App Router architektúrával, TypeScript-tel és Tailwind CSS 4-gyel, **Payload CMS**-sel (self-hosted, `/admin`) mint tartalomkezelő réteggel (MITHOME-85 epic).
|
||||||
|
|
||||||
- **Frontend**: Next.js 15 App Router (SSR/SSG), React 19, Tailwind CSS 4
|
- **Frontend**: Next.js 15 App Router (dinamikus renderelés — lásd MITHOME-97 WHY: SSG helyett, hogy egy admin publikálás azonnal látszódjon), React 19, Tailwind CSS 4
|
||||||
- **Backend**: Next.js API Routes (`/api/*`)
|
- **CMS**: Payload CMS — Globals (Home/About/Services/Contact/Common) + Collections (LegalPages/Partners/Media/ContactSubmissions/Users), hu/en lokalizáció, draft/publish + verziózás
|
||||||
- **Adatbázis**: MongoDB (Mongoose ODM) — site config és contact form logok
|
- **Backend**: Next.js API Routes (`/api/*`), Payload REST/GraphQL API + Local API
|
||||||
|
- **Adatbázis**: MongoDB — Payload-collection-önként (mongooseAdapter), plusz egy vékony natív `mongodb` driveres réteg (`proto/src/lib/mongodb.ts`) csak az `/api/health` connectivity-ellenőrzéséhez
|
||||||
- **Logging**: Winston + Loki (strukturált naplózás)
|
- **Logging**: Winston + Loki (strukturált naplózás)
|
||||||
- **Infrastructure**: Docker + Docker Compose, natív deploy (`deploy.sh`)
|
- **Infrastructure**: Docker + Docker Compose, natív deploy (`deploy.sh`)
|
||||||
|
|
||||||
@@ -24,13 +25,13 @@ A projekt egy **Next.js 15 alapú marketing weboldal** a mozdIT Bt. számára, A
|
|||||||
| **Component** | Újrahasználható UI elemek | `proto/src/components/` |
|
| **Component** | Újrahasználható UI elemek | `proto/src/components/` |
|
||||||
| **API Route** | Route handling, validáció | `proto/src/app/api/` |
|
| **API Route** | Route handling, validáció | `proto/src/app/api/` |
|
||||||
| **Service/Lib** | Üzleti logika, DB kapcsolat | `proto/src/lib/` |
|
| **Service/Lib** | Üzleti logika, DB kapcsolat | `proto/src/lib/` |
|
||||||
| **Content** | JSON alapú tartalom | `proto/src/content/` |
|
| **Content** | Payload CMS Globals/Collections (admin: `/admin`), Local API adapter | `proto/src/globals/`, `proto/src/collections/`, `proto/src/lib/payload-content.ts` |
|
||||||
| **Config** | Statikus site konfiguráció | `proto/src/config/` |
|
| **Config** | Statikus site konfiguráció | `proto/src/config/` |
|
||||||
| **Agent / Tools** | AI ügynökök eszközei | `.agent/` |
|
| **Agent / Tools** | AI ügynökök eszközei | `.agent/` |
|
||||||
|
|
||||||
## Fontos Architektúra Szabályok
|
## Fontos Architektúra Szabályok
|
||||||
|
|
||||||
1. **Tartalom JSON-ban**: SOHA ne égess be szöveget közvetlenül komponensbe — használd a `src/content/` rendszert.
|
1. **Tartalom Payload-ban**: SOHA ne égess be szöveget közvetlenül komponensbe — a tartalom Payload Global/Collection mezőkben él, az ügyfél a `/admin` felületen szerkeszti, a frontend a `src/lib/payload-content.ts` adapteren (Payload Local API) keresztül olvassa. (Kivétel: `proto/src/content/*.json` még mindig létezik, de csak a `migrate-content-to-payload.ts` seed-script forrásaként és néhány komponens-teszt fixture-jeként — élő oldal nem olvassa közvetlenül, lásd MITHOME-91/93/96.)
|
||||||
2. **Stateless API**: A backend API teljesen stateless — session-t a kliens kezel.
|
2. **Stateless API**: A backend API teljesen stateless — session-t a kliens kezel.
|
||||||
3. **Observability**: Minden hiba legyen logolva Winstonnal. API válaszok egységes formátumban: `{ success, data, error }`.
|
3. **Observability**: Minden hiba legyen logolva Winstonnal. API válaszok egységes formátumban: `{ success, data, error }`.
|
||||||
4. **Security-by-design**: Input validáció minden API route-on, secrets csak env változókból.
|
4. **Security-by-design**: Input validáció minden API route-on, secrets csak env változókból.
|
||||||
@@ -55,14 +56,21 @@ A projekt egy **Next.js 15 alapú marketing weboldal** a mozdIT Bt. számára, A
|
|||||||
## Content Management
|
## Content Management
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
// Helyes: content rendszer használata
|
// Helyes: Payload Local API adapter használata (Server Component-ben)
|
||||||
import { content, getPageContent } from '@/content'
|
import { getAboutContent } from '@/lib/payload-content'
|
||||||
const pageData = content.pages.about
|
const about = await getAboutContent(locale) // locale: 'hu' | 'en'
|
||||||
|
|
||||||
// TILOS: közvetlen szöveg komponensben
|
// TILOS: közvetlen szöveg komponensben
|
||||||
<h1>Rólunk</h1>
|
<h1>Rólunk</h1>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Az ügyfél a tartalmat a Payload admin felületen (`/admin`) szerkeszti —
|
||||||
|
Global (pl. Home, About) vagy Collection (pl. LegalPages, Partners) dokumentum
|
||||||
|
formájában, "Save Draft"/"Publish changes" munkafolyamattal (MITHOME-92). Új
|
||||||
|
mező felvételekor a megfelelő `proto/src/globals/*.ts` vagy
|
||||||
|
`proto/src/collections/*.ts` fájlt bővítsd, majd generáld újra a típusokat
|
||||||
|
(`payload generate:types`).
|
||||||
|
|
||||||
## Dependency szabályok
|
## Dependency szabályok
|
||||||
|
|
||||||
- Új NPM package bevezetéséhez **jóváhagyás szükséges**
|
- Új NPM package bevezetéséhez **jóváhagyás szükséges**
|
||||||
|
|||||||
@@ -142,8 +142,9 @@ const rateLimitStore = new Map<string, number[]>();
|
|||||||
// DECISION: fire-and-forget MongoDB write — ne várakozzon a válasz a cache írásra
|
// DECISION: fire-and-forget MongoDB write — ne várakozzon a válasz a cache írásra
|
||||||
dbClient.logContact(data).catch(() => null);
|
dbClient.logContact(data).catch(() => null);
|
||||||
|
|
||||||
// TRADEOFF: JSON content management vs CMS — könnyebb deploy, de nem non-tech szerkeszthető
|
// TRADEOFF: Payload Local API vs statikus JSON import — élő, adminból
|
||||||
const content = await import('@/content/pages/home.json');
|
// szerkeszthető tartalom, cserébe minden kérésnél DB-olvasás kell (MITHOME-97)
|
||||||
|
const content = await getHomeContent(locale);
|
||||||
```
|
```
|
||||||
|
|
||||||
## Pre-modification kockázatbecslés
|
## Pre-modification kockázatbecslés
|
||||||
|
|||||||
@@ -55,8 +55,12 @@ git checkout -b feature/[leíró-feature-neve]
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 3. Content frissítés (ha szöveges tartalom kell)
|
### 3. Content frissítés (ha szöveges tartalom kell)
|
||||||
- Módosítsd a megfelelő `proto/src/content/pages/*.json` fájlt
|
- Új mező esetén bővítsd a megfelelő `proto/src/globals/*.ts` vagy
|
||||||
- Frissítsd a `types.ts`-t ha új content struktúra kell
|
`proto/src/collections/*.ts` Payload config fájlt, majd generáld újra a
|
||||||
|
típusokat (`payload generate:types`)
|
||||||
|
- Meglévő mező szövegét az ügyfél a Payload admin felületen (`/admin`)
|
||||||
|
szerkeszti — ne írj bele közvetlenül `proto/src/content/*.json`-ba (az már
|
||||||
|
csak a migrációs seed-script forrása, élő oldal nem olvassa, MITHOME-91/93)
|
||||||
|
|
||||||
### 4. UI / Komponens implementáció (ha szükséges)
|
### 4. UI / Komponens implementáció (ha szükséges)
|
||||||
- Server Component alapértelmezetten — csak indokolt esetben `"use client"`
|
- Server Component alapértelmezetten — csak indokolt esetben `"use client"`
|
||||||
|
|||||||
@@ -74,7 +74,8 @@ description: Kód review checklist — PR előtt és review során
|
|||||||
|
|
||||||
✅ JÓ:
|
✅ JÓ:
|
||||||
[BLOCK] Ez hardcoded szöveget tartalmaz a komponensben.
|
[BLOCK] Ez hardcoded szöveget tartalmaz a komponensben.
|
||||||
Át kell tenni: proto/src/content/pages/home.json → content.pages.home.*
|
Át kell tenni Payload mezőbe (proto/src/globals/*.ts vagy collections/*.ts),
|
||||||
|
és a payload-content.ts adapteren keresztül kell beolvasni.
|
||||||
|
|
||||||
[SUGGEST] Ezt a logikát érdemes egy helper funkcióba kiszervezni,
|
[SUGGEST] Ezt a logikát érdemes egy helper funkcióba kiszervezni,
|
||||||
ha több helyen is szükség lesz rá.
|
ha több helyen is szükség lesz rá.
|
||||||
|
|||||||
@@ -10,14 +10,14 @@
|
|||||||
|
|
||||||
- **Projekt**: mozdIT Bt. weboldal (websitedev)
|
- **Projekt**: mozdIT Bt. weboldal (websitedev)
|
||||||
- **Plane workspace**: `developments` — `pm.llmdev.mozdit.hu`
|
- **Plane workspace**: `developments` — `pm.llmdev.mozdit.hu`
|
||||||
- **Stack**: Next.js 15, React 19, TypeScript, Tailwind CSS 4, MongoDB, Winston
|
- **Stack**: Next.js 15, React 19, TypeScript, Tailwind CSS 4, Payload CMS (self-hosted, `/admin`), MongoDB, Winston
|
||||||
- **Fő könyvtár**: `proto/` — **minden parancsot innen futtatunk**
|
- **Fő könyvtár**: `proto/` — **minden parancsot innen futtatunk**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Gyors referencia — Alapszabályok
|
## Gyors referencia — Alapszabályok
|
||||||
|
|
||||||
1. **Szöveg sosem kerülhet közvetlenül komponensbe** → `proto/src/content/pages/*.json`
|
1. **Szöveg sosem kerülhet közvetlenül komponensbe** → Payload CMS Global/Collection mező (admin: `/admin`), a frontend `proto/src/lib/payload-content.ts`-en át olvassa. (`proto/src/content/pages/*.json` már csak a migrációs seed-script forrása + teszt-fixture, élő oldal nem használja — MITHOME-91/93/96.)
|
||||||
2. **Feladatok**: `TODO.md` (Plane tükörképe), szinkron: `node plane-sync.js`
|
2. **Feladatok**: `TODO.md` (Plane tükörképe), szinkron: `node plane-sync.js`
|
||||||
3. **Tesztek**: minden feature-höz kötelező; commit előtt `npm test` zöld
|
3. **Tesztek**: minden feature-höz kötelező; commit előtt `npm test` zöld
|
||||||
4. **Commit**: Conventional Commits (`feat:`, `fix:`, `docs:`, `chore:`)
|
4. **Commit**: Conventional Commits (`feat:`, `fix:`, `docs:`, `chore:`)
|
||||||
@@ -47,12 +47,17 @@ node plane-sync.js # Plane szinkronizáció
|
|||||||
websitedev/
|
websitedev/
|
||||||
├── proto/ # Fő Next.js alkalmazás
|
├── proto/ # Fő Next.js alkalmazás
|
||||||
│ └── src/
|
│ └── src/
|
||||||
│ ├── app/ # App Router: oldalak és API route-ok
|
│ ├── app/
|
||||||
|
│ │ ├── (frontend)/ # Publikus oldalak: [locale]/[slug] catch-all
|
||||||
|
│ │ └── (payload)/ # Payload admin (/admin) + REST/GraphQL API
|
||||||
│ ├── components/ # React komponensek (PascalCase.tsx)
|
│ ├── components/ # React komponensek (PascalCase.tsx)
|
||||||
│ ├── content/ # JSON tartalom-kezelő rendszer
|
│ ├── globals/ # Payload Globals (Home, About, Services, Contact, Common)
|
||||||
│ │ ├── common.json # Közös szövegek
|
│ ├── collections/ # Payload Collections (LegalPages, Partners, Media, ContactSubmissions, Users)
|
||||||
│ │ └── pages/ # Oldal-specifikus JSONok
|
│ ├── payload.config.ts # Payload CMS konfiguráció
|
||||||
│ ├── lib/ # MongoDB, Logger, Site Config
|
│ ├── content/ # RÉGI JSON rendszer — csak migrációs seed + teszt-fixture (MITHOME-91/93/96)
|
||||||
|
│ │ ├── common.json
|
||||||
|
│ │ └── pages/
|
||||||
|
│ ├── lib/ # payload-content.ts (Local API adapter), MongoDB health-check, Logger
|
||||||
│ ├── config/ # Statikus site konfiguráció
|
│ ├── config/ # Statikus site konfiguráció
|
||||||
│ └── types/ # TypeScript típusok
|
│ └── types/ # TypeScript típusok
|
||||||
├── docs/ # Projekt dokumentáció (Magyar)
|
├── docs/ # Projekt dokumentáció (Magyar)
|
||||||
@@ -77,6 +82,7 @@ Szükséges változók (`.env` és `proto/.env.local`):
|
|||||||
- `NEXT_PUBLIC_CONTACT_EMAIL` — Kapcsolati email cím
|
- `NEXT_PUBLIC_CONTACT_EMAIL` — Kapcsolati email cím
|
||||||
- `PLANE_API_KEY` — Plane szinkronizációhoz (a `.mcp.json`-ban is lehet)
|
- `PLANE_API_KEY` — Plane szinkronizációhoz (a `.mcp.json`-ban is lehet)
|
||||||
- `PAYLOAD_SECRET` — Payload CMS JWT/session aláíráshoz (MITHOME-86); környezetenként egyedi, erős érték
|
- `PAYLOAD_SECRET` — Payload CMS JWT/session aláíráshoz (MITHOME-86); környezetenként egyedi, erős érték
|
||||||
|
- `ADMIN_EMAIL` / `ADMIN_PASSWORD` — staging/production: `deploy.sh` ezekkel hoz létre egy ismert admin usert egy vadonatúj adatbázison (MITHOME-97 follow-up), csak akkor, ha a `users` collection még üres
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -39,32 +39,33 @@ scripts/pre-deploy-tests.sh
|
|||||||
./deploy.sh production # éles (szerveren, staging ellenőrzése után)
|
./deploy.sh production # éles (szerveren, staging ellenőrzése után)
|
||||||
```
|
```
|
||||||
|
|
||||||
A CMS „Publikálás" gombja szintén commitol + pushol + deployol (csak a beállított környezetre). Részletek: `.agent/workflows/deploy.md`, `docs/helyi-staging-deploy.md`.
|
A Payload admin (`/admin`) draft/publish + verziózás munkafolyamata (MITHOME-92) nem jár git commit-tal vagy automatikus deployjal — a tartalom közvetlenül a MongoDB-be íródik. Kódváltozás (Globals/Collections séma, frontend) továbbra is a fenti git-alapú deploy folyamaton megy át. Részletek: `.agent/workflows/deploy.md`.
|
||||||
|
|
||||||
## Tartalomkezelés
|
## Tartalomkezelés
|
||||||
|
|
||||||
A weboldal szövegei és a CMS a `proto/src/content/` JSON-fájljaiból jönnek:
|
A weboldal szövegei Payload CMS Globals/Collections mezőkben élnek, az ügyfél a `/admin` felületen szerkeszti őket:
|
||||||
|
|
||||||
```
|
```
|
||||||
proto/src/content/
|
proto/src/globals/ # Home, About, Services, Contact, Common
|
||||||
├── schema.js # közös séma-validátor (Next + CMS)
|
proto/src/collections/ # LegalPages, Partners, Media, ContactSubmissions, Users
|
||||||
├── types.ts # TypeScript típusok
|
proto/src/payload.config.ts
|
||||||
├── index.ts # tartalom-betöltő
|
|
||||||
├── common.json # közös szövegek (gombok, lábléc, a11y)
|
|
||||||
└── pages/ # oldalankénti tartalom (home, about, services, …)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Használat:
|
Használat Server Component-ből (a Payload Local API-n keresztül):
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import { content, getPageContent } from '@/content'
|
import { getAboutContent } from '@/lib/payload-content'
|
||||||
const about = content.pages.about
|
const about = await getAboutContent(locale) // locale: 'hu' | 'en'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
A régi, JSON-alapú content rendszer (`proto/src/content/`) már csak a
|
||||||
|
`migrate-content-to-payload.ts` seed-script forrásaként és néhány
|
||||||
|
komponens-teszt fixture-jeként él tovább — élő oldal nem olvassa (MITHOME-91/93).
|
||||||
|
|
||||||
## Dokumentáció
|
## Dokumentáció
|
||||||
|
|
||||||
- **Agent-szabályok**: `.agent/AGENTS.md`, `.agent/steering/`, `.agent/workflows/`
|
- **Agent-szabályok**: `.agent/AGENTS.md`, `.agent/steering/`, `.agent/workflows/`
|
||||||
- **CMS felhasználói útmutató**: `docs/felhasznaloi-utmutato.md` (a CMS-ben a ❓ Súgó is ezt rendereli)
|
- **nginx vhost-ok**: `docs/nginx-vhosts.md`
|
||||||
- **Plane szinkron**: `PLANE-SYNC-GUIDE.md`
|
- **Plane szinkron**: `PLANE-SYNC-GUIDE.md`
|
||||||
- **Staging deploy**: `docs/helyi-staging-deploy.md`
|
- **Staging deploy**: `docs/helyi-staging-deploy.md`
|
||||||
- **Gitea runner**: `docs/gitea-runner-telepites.md`
|
- **Gitea runner**: `docs/gitea-runner-telepites.md`
|
||||||
|
|||||||
@@ -115,8 +115,8 @@ Cél: az ügyfél önállóan, admin felületen szerkeszthesse a tartalmat — a
|
|||||||
| MITHOME-92 | Draft/preview és verziózás bekapcsolása (Verziók panel utódja) | ✅ |
|
| MITHOME-92 | Draft/preview és verziózás bekapcsolása (Verziók panel utódja) | ✅ |
|
||||||
| MITHOME-93 | Régi egyedi CMS (content-editor.js) leépítése | ✅ |
|
| MITHOME-93 | Régi egyedi CMS (content-editor.js) leépítése | ✅ |
|
||||||
| MITHOME-94 | Opcionális: ContactSubmissions collection a Mongoose modell helyett | ✅ |
|
| MITHOME-94 | Opcionális: ContactSubmissions collection a Mongoose modell helyett | ✅ |
|
||||||
| MITHOME-95 | .agent/ és CLAUDE.md dokumentáció frissítése Payload architektúrára | 📋 |
|
| MITHOME-95 | .agent/ és CLAUDE.md dokumentáció frissítése Payload architektúrára | ✅ |
|
||||||
| MITHOME-96 | Tesztek migrálása: content schema tesztek helyett Payload collection/global tesztek | 📋 |
|
| MITHOME-96 | Tesztek migrálása: content schema tesztek helyett Payload collection/global tesztek | ✅ |
|
||||||
| MITHOME-97 | Deploy/Docker frissítés: PAYLOAD_SECRET, admin bundle, Dockerfile/deploy.sh | ✅ |
|
| MITHOME-97 | Deploy/Docker frissítés: PAYLOAD_SECRET, admin bundle, Dockerfile/deploy.sh | ✅ |
|
||||||
| MITHOME-117 | Vizuális design-védelem: színek/design tokenek változatlansága (MITHOME-91/93 elfogadási kritériuma) | 📋 |
|
| MITHOME-117 | Vizuális design-védelem: színek/design tokenek változatlansága (MITHOME-91/93 elfogadási kritériuma) | 📋 |
|
||||||
| MITHOME-102 | ContactSubmissions afterChange hook: PLATFM-2-kompatibilis esemény-emisszió (függ: MITHOME-94) | 📋 |
|
| MITHOME-102 | ContactSubmissions afterChange hook: PLATFM-2-kompatibilis esemény-emisszió (függ: MITHOME-94) | 📋 |
|
||||||
@@ -208,6 +208,9 @@ docker-compose -f docker-compose.dev.yml down
|
|||||||
---
|
---
|
||||||
|
|
||||||
## Frissítési Napló
|
## Frissítési Napló
|
||||||
|
- **2026-09-13**: MITHOME-95 (dokumentáció frissítése) kész — `.agent/steering/architecture.md` és `CLAUDE.md` már a Payload Global/Collection + `/admin` + `payload-content.ts` Local API adaptert írja le a régi JSON rendszer helyett (rendszer-áttekintés, Content sor/szabály, kódpélda, projekt-struktúra fa). Emellett javítva több, ugyanebbe a dokumentációs adósságba tartozó, de a ticketben nem nevesített hely is: `.agent/AGENTS.md` projekt-fája, `new-feature.md`/`review.md` workflow-ok, `development-rules.md` TRADEOFF példakódja, és a `README.md` teljes "Tartalomkezelés" szekciója + egy halott link a MITHOME-93-ban törölt CMS-útmutatóra. Tisztán dokumentáció-változtatás.
|
||||||
|
- **2026-09-12**: Felhasználói kérésre a főoldal "Partnereink" szekciója flex-wrap helyett CSS grid-re váltott (max 3 oszlop, `grid-cols-1 sm:grid-cols-2 md:grid-cols-3`, `w-fit mx-auto` a középre igazításhoz kevesebb partnernél is) — élőben ellenőrizve 5 teszt-partnerrel (3+2-es elrendezés, középre igazítva).
|
||||||
|
- **2026-09-12**: MITHOME-96 (tesztek migrálása) kész — `src/payload-config.test.ts` (gyors, DB nélküli config-tesztek, két regresszió-őrrel a MITHOME-121-es hibákra) + `scripts/test-payload-local-api.ts`/`npm run test:payload` (élő MongoDB elleni Local API teszt, sima node script Jest helyett — a Payload csomag ESM-only, Jest alapból nem fordítja). Emellett javítva a régi, Docker-stack-hez kötött `integration.test.ts`/`e2e-docker.test.ts` eddig észrevétlen elavulása (unprefixelt útvonalak, `site_config`/`contact_submissions` nyers Mongo collection-ök a valódi Payload collection-ök helyett). Gate zöld (63 unit teszt), `test:payload` külön lefuttatva élőben (8/8).
|
||||||
- **2026-09-12**: MITHOME-94 (ContactSubmissions collection) kész — a `/api/contact` a nyers, Payload-on kívüli Mongo collection helyett most a Payload Local API-n keresztül egy `ContactSubmissions` collection-be ír (name/email/subject/message/gdprConsent/status), amit az ügyfél az adminban lát. Rate limiting/validáció/spam-szűrés változatlanul a route-on maradt. Nincs egyedi access-blokk — a Payload alapértelmezése (csak bejelentkezett usernek REST-en) pont a kívánt, a route saját írása a Local API-n (`overrideAccess: true`) nem ütközik ezzel. Talált és dokumentált teszt-gotcha: a next/jest SWC transform lecseréli a `@payload-config` alias-t valódi relatív útvonalra, ezért a mockot is a feloldott útvonalra kell tenni (`jest.mock('../../../payload.config', ...)`), nem az alias-ra. Élesben ellenőrizve mindkét helyen (helyi dev valódi űrlap-küldéssel + staging curl-lal).
|
- **2026-09-12**: MITHOME-94 (ContactSubmissions collection) kész — a `/api/contact` a nyers, Payload-on kívüli Mongo collection helyett most a Payload Local API-n keresztül egy `ContactSubmissions` collection-be ír (name/email/subject/message/gdprConsent/status), amit az ügyfél az adminban lát. Rate limiting/validáció/spam-szűrés változatlanul a route-on maradt. Nincs egyedi access-blokk — a Payload alapértelmezése (csak bejelentkezett usernek REST-en) pont a kívánt, a route saját írása a Local API-n (`overrideAccess: true`) nem ütközik ezzel. Talált és dokumentált teszt-gotcha: a next/jest SWC transform lecseréli a `@payload-config` alias-t valódi relatív útvonalra, ezért a mockot is a feloldott útvonalra kell tenni (`jest.mock('../../../payload.config', ...)`), nem az alias-ra. Élesben ellenőrizve mindkét helyen (helyi dev valódi űrlap-küldéssel + staging curl-lal).
|
||||||
- **2026-09-12**: MITHOME-97 follow-up #3 — a felhasználó kérdésére ("el lehet jutni a honlapra az admin oldalról?") kiderült, hogy nem: az admin navigációban csak belső linkek voltak. Hozzáadva egy "🌐 Honlap megnyitása" link a keresősáv mellé (`QuickSearch.tsx`), ami `NEXT_PUBLIC_SITE_URL`-re mutat — környezetenként automatikusan helyes cím. Élesben ellenőrizve, staging-re deployolva.
|
- **2026-09-12**: MITHOME-97 follow-up #3 — a felhasználó kérdésére ("el lehet jutni a honlapra az admin oldalról?") kiderült, hogy nem: az admin navigációban csak belső linkek voltak. Hozzáadva egy "🌐 Honlap megnyitása" link a keresősáv mellé (`QuickSearch.tsx`), ami `NEXT_PUBLIC_SITE_URL`-re mutat — környezetenként automatikusan helyes cím. Élesben ellenőrizve, staging-re deployolva.
|
||||||
- **2026-09-12**: MITHOME-121 kész — a felhasználó kérésére a Partners `logo` mezője opcionálissá vált (`required: true` törölve; a frontend már eleve kiszűrte a logó nélküli partnereket). Eközben egy valódi, MITHOME-89 óta jelen lévő hiba is előkerült: a `Media` collection sosem kapott explicit `access.read`-et, így a Payload alapértelmezett "csak bejelentkezett user" szabálya miatt a `/api/media/file/*` route mindig 403-at adott — a Next.js image-optimizer emiatt sosem tudta betölteni a partner logókat a publikus oldalon (törött kép ikon, senki nem vette észre). Javítva: `access: { read: () => true }`. Staging-en emellett egy második, kapcsolódó hibát is találtam: a médiafájl fizikai byte-jai elvesztek egy korábbi (a `media_data_staging` volume bevezetése előtti) konténer-újraépítéskor — az árva Media rekord törlésével és a migráció volume-mountolt konténerből való újrafuttatásával helyreállítva. Élesben ellenőrizve mindkét helyen (helyi dev + staging).
|
- **2026-09-12**: MITHOME-121 kész — a felhasználó kérésére a Partners `logo` mezője opcionálissá vált (`required: true` törölve; a frontend már eleve kiszűrte a logó nélküli partnereket). Eközben egy valódi, MITHOME-89 óta jelen lévő hiba is előkerült: a `Media` collection sosem kapott explicit `access.read`-et, így a Payload alapértelmezett "csak bejelentkezett user" szabálya miatt a `/api/media/file/*` route mindig 403-at adott — a Next.js image-optimizer emiatt sosem tudta betölteni a partner logókat a publikus oldalon (törött kép ikon, senki nem vette észre). Javítva: `access: { read: () => true }`. Staging-en emellett egy második, kapcsolódó hibát is találtam: a médiafájl fizikai byte-jai elvesztek egy korábbi (a `media_data_staging` volume bevezetése előtti) konténer-újraépítéskor — az árva Media rekord törlésével és a migráció volume-mountolt konténerből való újrafuttatásával helyreállítva. Élesben ellenőrizve mindkét helyen (helyi dev + staging).
|
||||||
|
|||||||
Reference in New Issue
Block a user