cd465e0564
- Add backend/app/mcp_server.py with FastMCP server (hms-cms) - Resources: design-rules, page-structure, sync-status - Tools: trigger_sync, get_sync_log, set_rentman_token, read_file, write_file, create_page, deploy, git_commit, git_status - Bearer token auth via MCP_AUTH_TOKEN env var - Mount MCP at /mcp with streamable HTTP transport - Integrate session manager in FastAPI lifespan - Add Traefik labels for external /mcp route on hms.media-on.de - Add git, docker.io, curl to backend Dockerfile - Mount repo root + docker socket in backend container - Add mcp>=1.0.0 to requirements.txt
103 lines
3.8 KiB
Markdown
103 lines
3.8 KiB
Markdown
# Test Report – 1:1 Prototype Port
|
||
|
||
**Date:** 2026-07-10
|
||
**Task:** 1:1 Prototyp-Portierung zu Nuxt 3
|
||
**Commit:** fix: 1:1 prototype port – exact hms-* CSS, real logo, all components from app.js
|
||
|
||
## Build Verification
|
||
|
||
```
|
||
npm run build
|
||
```
|
||
|
||
**Result:** ✅ Build complete
|
||
**Output size:** 2.47 MB (607 kB gzip)
|
||
**Server:** .output/server/index.mjs generated successfully
|
||
|
||
## Unit Tests
|
||
|
||
```
|
||
npx vitest run --reporter verbose
|
||
```
|
||
|
||
**Result:** ✅ 10 test files, 168 tests passed, 0 failed
|
||
|
||
### Test Files:
|
||
1. `tests/unit/CartStore.test.ts` – Cart store interface and actions ✅
|
||
2. `tests/unit/DesignTokens.test.ts` – CSS tokens, hms-* classes, Tailwind/Nuxt config ✅
|
||
3. `tests/unit/HomePage.test.ts` – Hero, services, speaker grid, CTA ✅
|
||
4. `tests/unit/ReferenzenPage.test.ts` – Gallery, filter chips, loading states ✅
|
||
5. `tests/unit/KontaktPage.test.ts` – Contact form, validation, addresses ✅
|
||
6. `tests/unit/MietkatalogPage.test.ts` – Search, filter, equipment cards ✅
|
||
7. `tests/unit/EquipmentDetailPage.test.ts` – Detail view, specs, related items ✅
|
||
8. `tests/unit/WarenkorbPage.test.ts` – Cart items, request form, validation ✅
|
||
9. `tests/unit/Layout.test.ts` – Header, footer, error page, logo, robots.txt ✅
|
||
10. `tests/unit/useEquipment.test.ts` – API composable, equipment composable ✅
|
||
|
||
## Smoke Test (Dev Server)
|
||
|
||
```
|
||
npx nuxt dev (port 3004)
|
||
curl -s http://localhost:3004/
|
||
```
|
||
|
||
**Result:** ✅ All checks passed
|
||
|
||
| Check | Expected | Actual |
|
||
|-------|----------|--------|
|
||
| `Veranstaltungstechnik` text | ≥1 | 2 ✅ |
|
||
| `hms-hero` class | ≥1 | 1 ✅ |
|
||
| `hms-card` class | ≥1 | 1 ✅ |
|
||
| `hms-btn-primary` class | ≥1 | 1 ✅ |
|
||
| `hms-header` class | ≥1 | 1 ✅ |
|
||
| `hms-speaker-grid` class | ≥1 | 1 ✅ |
|
||
| `hms-logo-svg` class | ≥1 | 1 ✅ |
|
||
| `EC6925` (accent color) | ≥1 | 1 ✅ |
|
||
|
||
## Files Changed
|
||
|
||
### CSS
|
||
- `assets/css/main.css` – Replaced with prototype-style.css content + Tailwind directives
|
||
|
||
### Components (9 ported from app.js)
|
||
- `components/HmsLogo.vue` – SVG logo with #EC6925 border
|
||
- `components/SpeakerIcon.vue` – 6 speaker type SVG icons
|
||
- `components/AppHeader.vue` – hms-header, nav, mobile menu
|
||
- `components/AppFooter.vue` – hms-footer, 4-column grid
|
||
- `components/ServiceCard.vue` – hms-card with icon circle
|
||
- `components/EquipmentCard.vue` – hms-eq-card with badge
|
||
- `components/LoadingSkeleton.vue` – hms-skeleton shimmer
|
||
- `components/EmptyState.vue` – Empty state with action
|
||
- `components/ErrorState.vue` – Error state with retry
|
||
|
||
### Pages (8 ported from app.js)
|
||
- `pages/index.vue` – HomePage with hero, speakers, services, CTA
|
||
- `pages/referenzen.vue` – ReferenzenPage with gallery and filters
|
||
- `pages/kontakt.vue` – KontaktPage with form and contact info
|
||
- `pages/mietkatalog.vue` – MietkatalogPage with 18 equipment items
|
||
- `pages/mietkatalog/[id].vue` – EquipmentDetailPage with specs and related
|
||
- `pages/warenkorb.vue` – WarenkorbPage with cart and request form
|
||
- `pages/admin.vue` – AdminPage with login form
|
||
- `error.vue` – NotFoundPage (404)
|
||
|
||
### Layout
|
||
- `layouts/default.vue` – Updated to match prototype App structure
|
||
|
||
### Tests (10 files updated)
|
||
- All unit tests rewritten to match prototype structure
|
||
- Removed MietanfragePage.test.ts (page not in prototype)
|
||
- Tests check for hms-* classes, prototype templates, exact content
|
||
|
||
### Removed
|
||
- `components/CartDrawer.vue` – Not in prototype
|
||
- `components/Lightbox.vue` – Not in prototype
|
||
- `pages/mietanfrage.vue` – Not in prototype (functionality in warenkorb)
|
||
|
||
### Kept (unchanged)
|
||
- `composables/useApi.ts`, `composables/useEquipment.ts`, `composables/useCart.ts`
|
||
- `stores/cart.ts`
|
||
- `plugins/pinia-persist.client.ts`
|
||
- `components/LegalContentPage.vue` (used by legal pages)
|
||
- `pages/impressum.vue`, `pages/datenschutz.vue`, `pages/agb-vermietung.vue`
|
||
- `nuxt.config.ts`, `tailwind.config.ts`
|