Files
Agent Zero cd465e0564 feat: add MCP server with resources, tools, auth, and Traefik routing
- 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
2026-07-12 15:58:22 +02:00

3.8 KiB
Raw Permalink Blame History

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