feat(orion): extend report layout settings to version 1.1

This commit is contained in:
Schubert Ferenc 2026-07-12 14:56:15 +02:00
parent 12e1761a5b
commit 613ffdc8b7
591 changed files with 3601 additions and 999 deletions

View file

@ -7,7 +7,7 @@ from sqlalchemy import engine_from_config, pool
from app.core.config import settings
from app.db.base import Base
from app.models import contact, customer, device, document, equipment, location, program, user, validation
from app.models import contact, customer, device, document, equipment, location, program, report_settings, user, validation
config = context.config
config.set_main_option("sqlalchemy.url", settings.database_url)
@ -45,4 +45,3 @@ if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()

View file

@ -0,0 +1,66 @@
"""orion report settings
Revision ID: 202607120001
Revises: 202607110007
Create Date: 2026-07-12 12:00:00.000000
"""
from __future__ import annotations
from alembic import op
import sqlalchemy as sa
revision = "202607120001"
down_revision = "202607110007"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"orion_report_settings",
sa.Column("scope", sa.String(length=40), nullable=False),
sa.Column("layout_profile", sa.String(length=40), nullable=False),
sa.Column("show_cover_result_text", sa.Boolean(), nullable=False),
sa.Column("signature_mode", sa.String(length=60), nullable=False),
sa.Column("image_size", sa.String(length=40), nullable=False),
sa.Column("page_break_before_main_chapters", sa.Boolean(), nullable=False),
sa.Column("updated_by_user_id", sa.String(), nullable=True),
sa.Column("id", sa.String(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False),
sa.ForeignKeyConstraint(["updated_by_user_id"], ["users.id"], name=op.f("fk_orion_report_settings_updated_by_user_id_users")),
sa.PrimaryKeyConstraint("id", name=op.f("pk_orion_report_settings")),
sa.UniqueConstraint("scope", name=op.f("uq_orion_report_settings_scope")),
)
op.create_index(op.f("ix_orion_report_settings_scope"), "orion_report_settings", ["scope"], unique=True)
op.create_index(op.f("ix_orion_report_settings_updated_by_user_id"), "orion_report_settings", ["updated_by_user_id"], unique=False)
op.execute(
"""
INSERT INTO orion_report_settings (
id,
scope,
layout_profile,
show_cover_result_text,
signature_mode,
image_size,
page_break_before_main_chapters
)
VALUES (
'00000000-0000-4000-8000-000000000001',
'GLOBAL',
'STANDARD',
true,
'TECHNICAL_ONLY',
'MEDIUM',
true
)
"""
)
def downgrade() -> None:
op.drop_index(op.f("ix_orion_report_settings_updated_by_user_id"), table_name="orion_report_settings")
op.drop_index(op.f("ix_orion_report_settings_scope"), table_name="orion_report_settings")
op.drop_table("orion_report_settings")

View file

@ -0,0 +1,59 @@
"""orion report settings v1.1
Revision ID: 202607120002
Revises: 202607120001
Create Date: 2026-07-12 13:00:00.000000
"""
from __future__ import annotations
from alembic import op
import sqlalchemy as sa
revision = "202607120002"
down_revision = "202607120001"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column("orion_report_settings", sa.Column("page_margin", sa.String(length=40), nullable=False, server_default="STANDARD"))
op.add_column("orion_report_settings", sa.Column("section_spacing", sa.String(length=40), nullable=False, server_default="STANDARD"))
op.add_column("orion_report_settings", sa.Column("table_layout", sa.String(length=40), nullable=False, server_default="STANDARD"))
op.add_column("orion_report_settings", sa.Column("table_font_size", sa.String(length=40), nullable=False, server_default="STANDARD"))
op.add_column("orion_report_settings", sa.Column("image_position", sa.String(length=40), nullable=False, server_default="SIDE_BY_SIDE"))
op.add_column("orion_report_settings", sa.Column("max_images_per_page", sa.Integer(), nullable=False, server_default="2"))
op.add_column("orion_report_settings", sa.Column("show_image_captions", sa.Boolean(), nullable=False, server_default=sa.true()))
op.add_column("orion_report_settings", sa.Column("show_header", sa.Boolean(), nullable=False, server_default=sa.true()))
op.add_column("orion_report_settings", sa.Column("show_footer", sa.Boolean(), nullable=False, server_default=sa.true()))
op.add_column("orion_report_settings", sa.Column("logo_size", sa.String(length=40), nullable=False, server_default="MEDIUM"))
op.add_column("orion_report_settings", sa.Column("compact_cover", sa.Boolean(), nullable=False, server_default=sa.false()))
for column in [
"page_margin",
"section_spacing",
"table_layout",
"table_font_size",
"image_position",
"max_images_per_page",
"show_image_captions",
"show_header",
"show_footer",
"logo_size",
"compact_cover",
]:
op.alter_column("orion_report_settings", column, server_default=None)
def downgrade() -> None:
op.drop_column("orion_report_settings", "compact_cover")
op.drop_column("orion_report_settings", "logo_size")
op.drop_column("orion_report_settings", "show_footer")
op.drop_column("orion_report_settings", "show_header")
op.drop_column("orion_report_settings", "show_image_captions")
op.drop_column("orion_report_settings", "max_images_per_page")
op.drop_column("orion_report_settings", "image_position")
op.drop_column("orion_report_settings", "table_font_size")
op.drop_column("orion_report_settings", "table_layout")
op.drop_column("orion_report_settings", "section_spacing")
op.drop_column("orion_report_settings", "page_margin")

View file

@ -56,6 +56,8 @@ from app.schemas.domain import (
QuickStartCreateRequest,
QuickStartCustomerData,
QuickStartValidationSummary,
OrionReportSettingsRead,
OrionReportSettingsUpdate,
UserCreate,
UserRead,
UserUpdate,
@ -63,6 +65,7 @@ from app.schemas.domain import (
)
from app.services.domain_service import CrudService, DomainServices
from app.services.quickstart_service import QuickStartService
from app.services.report_settings import OrionReportSettingsService
from app.services.validation_workflow import ValidationWorkflowService
router = APIRouter(tags=["domain"], dependencies=[Depends(current_user)])
@ -87,6 +90,48 @@ def default_report_checklists(session: Session = Depends(get_session)) -> list[d
]
@router.get("/report-settings", response_model=OrionReportSettingsRead)
def get_report_settings(
session: Session = Depends(get_session),
_: User = Depends(current_admin),
):
return OrionReportSettingsService(session).get_global()
@router.put("/report-settings", response_model=OrionReportSettingsRead)
def update_report_settings(
payload: OrionReportSettingsUpdate,
session: Session = Depends(get_session),
user: User = Depends(current_admin),
):
try:
settings = OrionReportSettingsService(session).update_global(payload, user)
session.commit()
session.refresh(settings)
return settings
except IntegrityError as exc:
session.rollback()
raise HTTPException(status_code=409, detail="Berichtseinstellungen konnten nicht gespeichert werden.") from exc
@router.post("/report-settings/preview")
def preview_report_settings(
payload: OrionReportSettingsUpdate | None = None,
session: Session = Depends(get_session),
_: User = Depends(current_admin),
):
try:
pdf = OrionReportService(session, Path("/app/reports")).render_settings_preview_pdf(payload)
except Exception as exc:
logger.exception("Orion settings preview generation failed")
raise HTTPException(status_code=502, detail="Die PDF-Vorschau konnte nicht erzeugt werden.") from exc
return Response(
content=pdf,
media_type="application/pdf",
headers={"Content-Disposition": 'attachment; filename="orion-layout-preview.pdf"'},
)
@router.get("/dashboard")
def dashboard(session: Session = Depends(get_session)) -> dict[str, int]:
today = func.current_date()

View file

@ -13,6 +13,7 @@ from app.models.report_template import (
ReportTemplate,
TextBlock,
)
from app.models.report_settings import OrionReportSettings
from app.models.user import User
from app.models.validation import Validation
@ -29,6 +30,7 @@ __all__ = [
"MeasurementImportValue",
"ReportSection",
"ReportTemplate",
"OrionReportSettings",
"TextBlock",
"User",
"Validation",

View file

@ -0,0 +1,78 @@
from __future__ import annotations
import enum
from sqlalchemy import Boolean, ForeignKey, Integer, String
from sqlalchemy.orm import Mapped, mapped_column
from app.db.base import Base, TimestampMixin, UUIDMixin
class OrionReportSettingsScope(str, enum.Enum):
global_ = "GLOBAL"
class OrionLayoutProfile(str, enum.Enum):
compact = "COMPACT"
standard = "STANDARD"
class OrionSignatureMode(str, enum.Enum):
technical_only = "TECHNICAL_ONLY"
technical_and_client = "TECHNICAL_AND_CLIENT"
class OrionImageSize(str, enum.Enum):
small = "SMALL"
medium = "MEDIUM"
large = "LARGE"
class OrionPageMargin(str, enum.Enum):
narrow = "NARROW"
standard = "STANDARD"
wide = "WIDE"
class OrionSpacing(str, enum.Enum):
compact = "COMPACT"
standard = "STANDARD"
class OrionTableFontSize(str, enum.Enum):
small = "SMALL"
standard = "STANDARD"
class OrionImagePosition(str, enum.Enum):
stacked = "STACKED"
side_by_side = "SIDE_BY_SIDE"
class OrionLogoSize(str, enum.Enum):
small = "SMALL"
medium = "MEDIUM"
large = "LARGE"
class OrionReportSettings(Base, UUIDMixin, TimestampMixin):
__tablename__ = "orion_report_settings"
scope: Mapped[str] = mapped_column(String(40), nullable=False, unique=True, index=True)
layout_profile: Mapped[str] = mapped_column(String(40), nullable=False, default=OrionLayoutProfile.standard.value)
show_cover_result_text: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True)
signature_mode: Mapped[str] = mapped_column(String(60), nullable=False, default=OrionSignatureMode.technical_only.value)
image_size: Mapped[str] = mapped_column(String(40), nullable=False, default=OrionImageSize.medium.value)
page_break_before_main_chapters: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True)
page_margin: Mapped[str] = mapped_column(String(40), nullable=False, default=OrionPageMargin.standard.value)
section_spacing: Mapped[str] = mapped_column(String(40), nullable=False, default=OrionSpacing.standard.value)
table_layout: Mapped[str] = mapped_column(String(40), nullable=False, default=OrionSpacing.standard.value)
table_font_size: Mapped[str] = mapped_column(String(40), nullable=False, default=OrionTableFontSize.standard.value)
image_position: Mapped[str] = mapped_column(String(40), nullable=False, default=OrionImagePosition.side_by_side.value)
max_images_per_page: Mapped[int] = mapped_column(Integer, nullable=False, default=2)
show_image_captions: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True)
show_header: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True)
show_footer: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True)
logo_size: Mapped[str] = mapped_column(String(40), nullable=False, default=OrionLogoSize.medium.value)
compact_cover: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)
updated_by_user_id: Mapped[str | None] = mapped_column(ForeignKey("users.id"), nullable=True, index=True)

View file

@ -84,15 +84,32 @@ class CoverComponent(ReportComponent):
f'<p class="cover-subtitle">{text(context.customer.name)}</p>'
f"{rows}"
'<div class="cover-closing">'
'<div class="cover-result-text">'
"<h2>Ergebnis der Validierung</h2>"
f"<p>{text(validation_result_cover_sentence(validation.result))}</p>"
"</div>"
'<div class="signature-block"><div class="signature-line"></div><div class="signature-label">Unterschrift technische Validierung</div></div>'
f"{self._cover_result_text(context)}"
f"{self._signature_blocks(context)}"
"</div>"
"</section>"
)
def _cover_result_text(self, context: ReportContext) -> str:
if not context.report_settings.show_cover_result_text:
return ""
return (
'<div class="cover-result-text">'
"<h2>Ergebnis der Validierung</h2>"
f"<p>{text(validation_result_cover_sentence(context.validation.result))}</p>"
"</div>"
)
def _signature_blocks(self, context: ReportContext) -> str:
blocks = [
'<div class="signature-block"><div class="signature-line"></div><div class="signature-label">Unterschrift technische Validierung</div></div>'
]
if context.report_settings.signature_mode == "TECHNICAL_AND_CLIENT":
blocks.append(
'<div class="signature-block"><div class="signature-line"></div><div class="signature-label">Unterschrift Auftraggeber</div></div>'
)
return '<div class="signature-grid">' + "".join(blocks) + "</div>"
class TocComponent(ReportComponent):
anchor = "toc"
@ -502,7 +519,7 @@ class AttachmentComponent(NumberedComponent):
figures.append(
'<figure class="report-figure">'
f'<img class="report-image" src="{text(src)}" alt="{text(caption)}">'
f"<figcaption>Abbildung {index}: {text(caption)}</figcaption>"
f'<figcaption class="image-caption">Abbildung {index}: {text(caption)}</figcaption>'
"</figure>"
)
body = table(["Reihenfolge", "Kategorie", "Datei", "Beschreibung"], rows)

View file

@ -18,6 +18,7 @@ from app.models.report_template import (
ReportSection,
TextBlock,
)
from app.models.report_settings import OrionReportSettings
from app.models.location import Location
from app.models.validation import Validation
from app.modules.orion.template_service import ReportTemplateService
@ -36,6 +37,7 @@ class ReportContext:
text_blocks: dict[str, TextBlock]
checklist_templates: list[ChecklistTemplate]
confirmed_measurements: list[MeasurementImportValue]
report_settings: OrionReportSettings
class OrionContextBuilder:
@ -63,6 +65,9 @@ class OrionContextBuilder:
)
)
template_bundle = ReportTemplateService(self.session).ensure_default_template()
from app.services.report_settings import OrionReportSettingsService
report_settings = OrionReportSettingsService(self.session).get_global()
confirmed_measurements = list(
self.session.scalars(
select(MeasurementImportValue)
@ -87,4 +92,5 @@ class OrionContextBuilder:
text_blocks=template_bundle.text_blocks,
checklist_templates=template_bundle.checklists,
confirmed_measurements=confirmed_measurements,
report_settings=report_settings,
)

View file

@ -2,6 +2,8 @@ from __future__ import annotations
from pathlib import Path
import logging
from datetime import UTC, date, datetime
from types import SimpleNamespace
from sqlalchemy.orm import Session
@ -25,8 +27,17 @@ from app.modules.orion.components import (
TocComponent,
)
from app.modules.orion.context import OrionContextBuilder, ReportContext
from app.modules.orion.html import section, table, text
from app.modules.orion.templates.report import render_document
from app.modules.orion.template_service import REPORT_SECTIONS
from app.models.report_settings import (
OrionImageSize,
OrionLayoutProfile,
OrionReportSettings,
OrionReportSettingsScope,
OrionSignatureMode,
)
from app.schemas.domain import OrionReportSettingsUpdate
logger = logging.getLogger(__name__)
@ -52,10 +63,178 @@ class OrionReportService:
self._append_pdf_attachments(context, output_path)
return output_path
def render_settings_preview_pdf(self, settings_override: OrionReportSettingsUpdate | None = None) -> bytes:
from weasyprint import HTML
context = self._preview_context(settings_override)
preview_section = section(
"layout-preview",
"Vorschau Hauptkapitel",
table(
["Bereich", "Darstellung"],
[
["Layoutprofil", context.report_settings.layout_profile],
["Seitenraender", context.report_settings.page_margin],
["Abschnittsabstaende", context.report_settings.section_spacing],
["Tabellenlayout", context.report_settings.table_layout],
["Tabellenschrift", context.report_settings.table_font_size],
["Bildgroesse", context.report_settings.image_size],
["Bildposition", context.report_settings.image_position],
["Bilder pro Seite", context.report_settings.max_images_per_page],
["Kopfzeile", "Ein" if context.report_settings.show_header else "Aus"],
["Fusszeile", "Ein" if context.report_settings.show_footer else "Aus"],
["Logo", context.report_settings.logo_size],
["Kapitelumbruch", "Ein" if context.report_settings.page_break_before_main_chapters else "Aus"],
],
)
+ (
'<div class="figure-grid">'
+ "".join(
'<figure class="report-figure">'
f'<img class="report-image" src="{text((ORION_ASSET_DIR / "schubamed-logo.svg").resolve().as_uri())}" alt="Beispielbild {index}">'
f'<figcaption class="image-caption">Abbildung {index}: Beispielbild fuer die Layoutvorschau</figcaption>'
"</figure>"
for index in range(1, 5)
)
+ "</div>"
),
"1 Vorschau Hauptkapitel",
)
chapters = [
CoverComponent().render(context),
SummaryComponent().render(context),
TocComponent([{"key": "layout-preview", "number": "1", "title": "Vorschau Hauptkapitel", "toc": True}]).render(context),
CustomerComponent().render(context),
preview_section,
StaticTextComponent("results", "Ergebnisse der Validierung", "Die spaetere Ergebnisbox bleibt Bestandteil des Abschlussbereichs.", number="2").render(context),
]
html = render_document(context, chapters)
return HTML(string=html, base_url=str(ORION_ASSET_DIR)).write_pdf()
def _components(self) -> list[ReportComponent]:
chapters = [self._component_for_section(item) for item in REPORT_SECTIONS]
return [CoverComponent(), SummaryComponent(), TocComponent(REPORT_SECTIONS), CustomerComponent(), *chapters]
def _preview_context(self, settings_override: OrionReportSettingsUpdate | None) -> ReportContext:
if settings_override is None:
report_settings = self._settings_clone()
else:
report_settings = OrionReportSettings(
scope=OrionReportSettingsScope.global_.value,
layout_profile=settings_override.layout_profile.value,
show_cover_result_text=settings_override.show_cover_result_text,
signature_mode=settings_override.signature_mode.value,
image_size=settings_override.image_size.value,
page_break_before_main_chapters=settings_override.page_break_before_main_chapters,
page_margin=settings_override.page_margin.value,
section_spacing=settings_override.section_spacing.value,
table_layout=settings_override.table_layout.value,
table_font_size=settings_override.table_font_size.value,
image_position=settings_override.image_position.value,
max_images_per_page=settings_override.max_images_per_page,
show_image_captions=settings_override.show_image_captions,
show_header=settings_override.show_header,
show_footer=settings_override.show_footer,
logo_size=settings_override.logo_size.value,
compact_cover=settings_override.compact_cover,
)
now = datetime.now(UTC)
validation = SimpleNamespace(
id="preview-validation",
report_number="ORION-LAYOUT-PREVIEW",
validation_type="Layoutvorschau",
project="Administrative Orion-Vorschau",
performed_on=date.today(),
test_location="Schubamed Preview",
examiner_name="Technische Validierung",
status="ENTWURF",
result="BESTANDEN_MIT_AUFLAGEN",
participants="Preview Team",
operator_name="Preview Betreiber",
next_validation_on=date(date.today().year + 2, date.today().month, date.today().day),
version=1,
updated_at=now,
equipment_ids=[],
environment_conditions={},
documentation_checklist=[],
performance_checklist=[],
programs=[],
loading_patterns=[],
measurement_data=[],
drying={},
recommendations=[],
attachments=[],
)
customer = SimpleNamespace(
name="Demo-Praxis Orion",
customer_type=SimpleNamespace(value="practice"),
street="Musterstrasse 12",
postal_code="12345",
city="Berlin",
phone="+49 30 123456",
email="preview@schubamed.de",
hygiene_officer="H. Muster",
quality_manager="Q. Beispiel",
)
location = SimpleNamespace(name="Aufbereitungsraum", street="Musterstrasse 12", postal_code="12345", city="Berlin", room="AEMP")
contact = SimpleNamespace(full_name="Dr. Petra Beispiel", function="Praxisleitung", email="kontakt@example.de", phone="+49 30 123456")
device = SimpleNamespace(
manufacturer="MELAG",
model="Vacuklav 44 B+",
serial_number="PREVIEW-12345",
device_type="Klein-Sterilisator",
year_built=2024,
commissioned_on=date(2024, 5, 15),
chamber_volume_liters=22,
steam_generation="integriert",
water_treatment="VE-Wasser",
documentation="vollstaendig",
supplier="Schubamed",
)
return ReportContext(
validation=validation,
customer=customer,
location=location,
contact=contact,
device=device,
equipment=[],
generated_dir=self.generated_dir,
report_sections=[],
text_blocks={
"summary": SimpleNamespace(
content="Diese Vorschau zeigt die aktuell gewaehlten Orion-Berichtseinstellungen ohne Produktivdaten zu veraendern."
)
},
checklist_templates=[],
confirmed_measurements=[],
report_settings=report_settings,
)
def _settings_clone(self) -> OrionReportSettings:
from app.services.report_settings import OrionReportSettingsService
saved = OrionReportSettingsService(self.session).get_global()
return OrionReportSettings(
scope=saved.scope,
layout_profile=saved.layout_profile,
show_cover_result_text=saved.show_cover_result_text,
signature_mode=saved.signature_mode,
image_size=saved.image_size,
page_break_before_main_chapters=saved.page_break_before_main_chapters,
page_margin=saved.page_margin,
section_spacing=saved.section_spacing,
table_layout=saved.table_layout,
table_font_size=saved.table_font_size,
image_position=saved.image_position,
max_images_per_page=saved.max_images_per_page,
show_image_captions=saved.show_image_captions,
show_header=saved.show_header,
show_footer=saved.show_footer,
logo_size=saved.logo_size,
compact_cover=saved.compact_cover,
updated_by_user_id=saved.updated_by_user_id,
)
def _component_for_section(self, item: dict) -> ReportComponent:
component = item.get("component")
key = str(item["key"])

View file

@ -14,6 +14,30 @@
@bottom-left { content: element(report-footer); }
}
@page cover-narrow {
margin: 16mm 14mm 16mm 14mm;
@top-left { content: ""; }
@bottom-left { content: ""; }
}
@page cover-wide {
margin: 24mm 22mm 24mm 22mm;
@top-left { content: ""; }
@bottom-left { content: ""; }
}
@page report-narrow {
margin: 30mm 14mm 20mm 14mm;
@top-left { content: element(report-header); }
@bottom-left { content: element(report-footer); }
}
@page report-wide {
margin: 38mm 22mm 28mm 22mm;
@top-left { content: element(report-header); }
@bottom-left { content: element(report-footer); }
}
* {
box-sizing: border-box;
}
@ -145,6 +169,22 @@ body {
page: report;
}
.page-margin-narrow .cover-page {
page: cover-narrow;
}
.page-margin-wide .cover-page {
page: cover-wide;
}
.page-margin-narrow .report-content {
page: report-narrow;
}
.page-margin-wide .report-content {
page: report-wide;
}
.cover-top {
align-items: flex-start;
display: grid;
@ -159,6 +199,14 @@ body {
width: auto;
}
.logo-size-small .cover-logo {
height: 12mm;
}
.logo-size-large .cover-logo {
height: 22mm;
}
.company-address {
color: #6B7C85;
font-size: 8.5pt;
@ -198,6 +246,29 @@ h1 {
line-height: 1.25;
}
.cover-compact .cover-top {
margin-bottom: 5mm;
}
.cover-compact h1 {
font-size: 24pt;
margin-bottom: 2mm;
}
.cover-compact .cover-subtitle {
font-size: 11.2pt;
margin-bottom: 2mm;
}
.cover-compact .cover-page .definition-row {
padding: .35mm 0;
}
.cover-compact .cover-page .definition-list {
font-size: 8.8pt;
line-height: 1.18;
}
.cover-closing {
break-inside: avoid;
margin-top: 1.5mm;
@ -299,11 +370,18 @@ h1 {
.signature-block {
break-inside: avoid;
color: #6B7C85;
margin-top: 9mm;
page-break-inside: avoid;
width: 82mm;
}
.signature-grid {
break-inside: avoid;
display: flex;
gap: 14mm;
margin-top: 9mm;
page-break-inside: avoid;
}
.signature-line {
border-top: 1px solid #6B7C85;
height: 0;
@ -320,6 +398,46 @@ h1 {
margin-top: 9mm;
}
.main-chapter-breaks .report-content .chapter {
break-before: page;
}
.main-chapter-breaks .report-content .chapter:first-of-type {
break-before: auto;
}
.main-chapter-flow .report-content .chapter {
break-before: auto;
}
.section-spacing-compact h2 {
margin-bottom: 4mm;
padding-bottom: 2.5mm;
}
.section-spacing-compact h3 {
margin: 5mm 0 2mm 0;
}
.section-spacing-compact p {
margin-top: 2mm;
margin-bottom: 2mm;
}
.section-spacing-compact .chapter,
.section-spacing-compact .chapter + .chapter {
margin-top: 6mm;
}
.section-spacing-compact .data-table {
margin-top: 2.5mm;
}
.section-spacing-compact .figure-grid {
gap: 5mm;
margin-top: 5mm;
}
h2 {
border-bottom: .25mm solid #DCE3E3;
color: #2E3B40;
@ -400,6 +518,19 @@ dd {
font-size: 8.5pt;
}
.table-layout-compact .data-table {
margin-top: 2.5mm;
}
.table-layout-compact .data-table th,
.table-layout-compact .data-table td {
padding: 1.5mm;
}
.table-font-small .data-table {
font-size: 8.4pt;
}
.toc-list {
counter-reset: toc;
list-style: none;
@ -441,6 +572,26 @@ dd {
margin-top: 8mm;
}
.image-position-stacked .figure-grid {
grid-template-columns: 1fr;
}
.image-position-side-by-side .figure-grid {
grid-template-columns: 1fr 1fr;
}
.image-page-max-1 .report-figure {
break-after: page;
}
.image-page-max-2 .report-figure:nth-child(2n) {
break-after: page;
}
.image-page-max-4 .report-figure:nth-child(4n) {
break-after: page;
}
.report-figure {
break-inside: avoid;
margin: 0;
@ -454,6 +605,64 @@ dd {
width: 100%;
}
.image-size-small .report-image {
max-height: 55mm;
}
.image-size-medium .report-image {
max-height: 90mm;
}
.image-size-large .report-image {
max-height: 125mm;
}
.image-captions-off .image-caption {
display: none;
}
.logo-size-small .report-header-brand img {
height: 14mm;
}
.logo-size-large .report-header-brand img {
height: 24mm;
}
.layout-compact html,
.layout-compact {
line-height: 1.32;
}
.layout-compact h2 {
font-size: 18pt;
margin-bottom: 4mm;
padding-bottom: 2.5mm;
}
.layout-compact h3 {
margin: 5mm 0 2mm 0;
}
.layout-compact .chapter,
.layout-compact .chapter + .chapter {
margin-top: 6mm;
}
.layout-compact .definition-row {
padding: 1.4mm 0;
}
.layout-compact .data-table th,
.layout-compact .data-table td {
padding: 1.6mm;
}
.layout-compact .result-box {
margin: 2.5mm 0;
padding: 2.4mm 5mm;
}
figcaption {
color: #6B7C85;
font-size: 8.5pt;

View file

@ -8,10 +8,14 @@ from app.modules.orion.html import text
def render_report_chrome(context: ReportContext, logo_uri: str) -> str:
settings = context.report_settings
report_number = text(context.validation.report_number)
version = text(context.validation.version)
report_date = text(context.validation.updated_at)
return f"""
header = ""
footer = ""
if settings.show_header:
header = f"""
<header class="report-header" aria-label="Berichtskopf">
<div class="report-header-brand">
<img src="{logo_uri}" alt="SCHUBAMED">
@ -26,12 +30,16 @@ def render_report_chrome(context: ReportContext, logo_uri: str) -> str:
<div><dt>Datum</dt><dd>{report_date}</dd></div>
</dl>
</header>
"""
if settings.show_footer:
footer = f"""
<footer class="report-footer" aria-label="Berichtsfuß">
<span>Validation Suite</span>
<span>Seite <span class="page-number"></span> von <span class="page-count"></span></span>
<span>Version {version}</span>
</footer>
"""
return header + footer
def render_document(context: ReportContext, chapters: list[str]) -> str:
@ -40,6 +48,24 @@ def render_document(context: ReportContext, chapters: list[str]) -> str:
title = f"Validierungsbericht {context.validation.report_number}"
cover_markup = chapters[0] if chapters else ""
content_markup = "\n".join(chapters[1:])
settings = context.report_settings
body_classes = " ".join(
[
"orion-report",
f"layout-{settings.layout_profile.lower()}",
f"page-margin-{settings.page_margin.lower()}",
f"section-spacing-{settings.section_spacing.lower()}",
f"table-layout-{settings.table_layout.lower()}",
f"table-font-{settings.table_font_size.lower()}",
f"image-size-{settings.image_size.lower()}",
f"image-position-{settings.image_position.lower().replace('_', '-')}",
f"image-page-max-{settings.max_images_per_page}",
f"logo-size-{settings.logo_size.lower()}",
"image-captions-on" if settings.show_image_captions else "image-captions-off",
"cover-compact" if settings.compact_cover else "cover-standard",
"main-chapter-breaks" if settings.page_break_before_main_chapters else "main-chapter-flow",
]
)
return f"""<!doctype html>
<html lang="de">
<head>
@ -48,7 +74,7 @@ def render_document(context: ReportContext, chapters: list[str]) -> str:
<title>{text(title)}</title>
<style>{css}</style>
</head>
<body>
<body class="{body_classes}">
<article class="report-document">
{cover_markup}
<section class="report-content">

View file

@ -2,12 +2,23 @@ from __future__ import annotations
from datetime import date
from datetime import datetime
from typing import Literal
from uuid import UUID
from pydantic import EmailStr, Field, field_validator
from pydantic import ConfigDict, EmailStr, Field, field_validator
from app.models.customer import CustomerType
from app.models.equipment import EquipmentKind, EquipmentStatus
from app.models.report_settings import (
OrionImagePosition,
OrionImageSize,
OrionLayoutProfile,
OrionLogoSize,
OrionPageMargin,
OrionSignatureMode,
OrionSpacing,
OrionTableFontSize,
)
from app.models.user import UserRole
from app.models.validation import ValidationStatus
from app.schemas.common import EntityRead, ORMModel
@ -91,6 +102,32 @@ class DeviceUpdate(DeviceCreate):
pass
class OrionReportSettingsUpdate(ORMModel):
model_config = ConfigDict(extra="forbid")
layout_profile: OrionLayoutProfile
show_cover_result_text: bool
signature_mode: OrionSignatureMode
image_size: OrionImageSize
page_break_before_main_chapters: bool
page_margin: OrionPageMargin
section_spacing: OrionSpacing
table_layout: OrionSpacing
table_font_size: OrionTableFontSize
image_position: OrionImagePosition
max_images_per_page: Literal[1, 2, 4]
show_image_captions: bool
show_header: bool
show_footer: bool
logo_size: OrionLogoSize
compact_cover: bool
class OrionReportSettingsRead(OrionReportSettingsUpdate, EntityRead):
scope: str
updated_by_user_id: str | None = None
class EquipmentCreate(ORMModel):
kind: EquipmentKind
manufacturer: str | None = None
@ -297,3 +334,10 @@ class QuickStartCreateRequest(ORMModel):
contact_id: UUID | None = None
device_id: UUID | None = None
validation_type: str
@field_validator("location_id", "contact_id", "device_id", mode="before")
@classmethod
def empty_string_to_none(cls, value):
if value == "":
return None
return value

View file

@ -61,6 +61,8 @@ class QuickStartService:
device = self._device(str(payload.device_id)) if payload.device_id else self._single_or_default(devices)
if device is None:
raise ValueError("Kein Gerät verfügbar.")
if device.customer_id != customer.id:
raise ValueError("Gerät gehört nicht zum ausgewählten Kunden.")
locations = list(
self.session.scalars(
select(Location).where(Location.customer_id == customer.id).order_by(Location.name.asc())
@ -73,13 +75,23 @@ class QuickStartService:
)
location = self._location(str(payload.location_id)) if payload.location_id else self._single_or_default(locations)
contact = self._contact(str(payload.contact_id)) if payload.contact_id else self._single_or_default(contacts)
if location is None:
if locations:
raise ValueError("Bitte Standort auswählen.")
raise ValueError("Kein Standort verfügbar.")
if location.customer_id != customer.id:
raise ValueError("Standort gehört nicht zum ausgewählten Kunden.")
if device.location_id and device.location_id != location.id:
raise ValueError("Gerät gehört nicht zum gewählten Standort.")
if contact and contact.customer_id != customer.id:
raise ValueError("Ansprechpartner gehört nicht zum ausgewählten Kunden.")
base = self._base_validation(device.id, payload.validation_type)
bundle = ReportTemplateService(self.session).ensure_default_template()
validation = Validation(
report_number=self._next_report_number(),
customer_id=customer.id,
location_id=location.id if location else (locations[0].id if locations else None),
location_id=location.id,
contact_id=contact.id if contact else None,
device_id=device.id,
validation_type=payload.validation_type,

View file

@ -0,0 +1,77 @@
from __future__ import annotations
from sqlalchemy import select
from sqlalchemy.orm import Session
from app.models.report_settings import (
OrionImagePosition,
OrionImageSize,
OrionLayoutProfile,
OrionLogoSize,
OrionPageMargin,
OrionReportSettings,
OrionReportSettingsScope,
OrionSignatureMode,
OrionSpacing,
OrionTableFontSize,
)
from app.models.user import User
from app.schemas.domain import OrionReportSettingsUpdate
class OrionReportSettingsService:
def __init__(self, session: Session) -> None:
self.session = session
def get_global(self) -> OrionReportSettings:
settings = self.session.scalar(
select(OrionReportSettings).where(
OrionReportSettings.scope == OrionReportSettingsScope.global_.value
)
)
if settings is not None:
return settings
settings = OrionReportSettings(
scope=OrionReportSettingsScope.global_.value,
layout_profile=OrionLayoutProfile.standard.value,
show_cover_result_text=True,
signature_mode=OrionSignatureMode.technical_only.value,
image_size=OrionImageSize.medium.value,
page_break_before_main_chapters=True,
page_margin=OrionPageMargin.standard.value,
section_spacing=OrionSpacing.standard.value,
table_layout=OrionSpacing.standard.value,
table_font_size=OrionTableFontSize.standard.value,
image_position=OrionImagePosition.side_by_side.value,
max_images_per_page=2,
show_image_captions=True,
show_header=True,
show_footer=True,
logo_size=OrionLogoSize.medium.value,
compact_cover=False,
)
self.session.add(settings)
self.session.flush()
return settings
def update_global(self, payload: OrionReportSettingsUpdate, user: User) -> OrionReportSettings:
settings = self.get_global()
settings.layout_profile = payload.layout_profile.value
settings.show_cover_result_text = payload.show_cover_result_text
settings.signature_mode = payload.signature_mode.value
settings.image_size = payload.image_size.value
settings.page_break_before_main_chapters = payload.page_break_before_main_chapters
settings.page_margin = payload.page_margin.value
settings.section_spacing = payload.section_spacing.value
settings.table_layout = payload.table_layout.value
settings.table_font_size = payload.table_font_size.value
settings.image_position = payload.image_position.value
settings.max_images_per_page = payload.max_images_per_page
settings.show_image_captions = payload.show_image_captions
settings.show_header = payload.show_header
settings.show_footer = payload.show_footer
settings.logo_size = payload.logo_size.value
settings.compact_cover = payload.compact_cover
settings.updated_by_user_id = user.id
self.session.flush()
return settings

View file

@ -25,11 +25,13 @@ from app.api.v1.auth import login as auth_login
from app.api.v1 import domain as domain_api
from app.schemas.auth import LoginRequest
from app.schemas.domain import QuickStartCreateRequest, UserCreate, UserUpdate, ValidationCreate
from app.schemas.domain import OrionReportSettingsUpdate
from app.modules.orion.service import OrionReportService
from app.modules.orion.assets import SCHUBAMED_LOGO_PATH, schubamed_logo_uri
from app.modules.orion.result import validation_result_box, validation_result_presentation
from app.modules.orion.template_service import REPORT_SECTIONS, ReportTemplateService
from app.modules.helios.service import HeliosImportService
from app.services.report_settings import OrionReportSettingsService
def session() -> Session:
@ -785,6 +787,120 @@ def test_quickstart_auto_selects_single_customer_masterdata():
assert created.device_id == device.id
def test_quickstart_requires_location_when_customer_has_multiple_locations():
db = session()
customer, location, device = seed(db)
db.add(Location(customer_id=customer.id, name="Zweiter Standort"))
admin = User(
email="multi-location-admin@schubamed.de",
first_name="Quickstart",
last_name="Admin",
role=UserRole.ADMIN.value,
password_hash="hash",
is_active=True,
must_change_password=False,
)
db.add(admin)
db.flush()
with pytest.raises(ValueError, match="Bitte Standort auswählen"):
QuickStartService(db).create_validation(
QuickStartCreateRequest(
customer_id=customer.id,
device_id=device.id,
validation_type="Erstvalidierung",
),
examiner=admin,
)
created = QuickStartService(db).create_validation(
QuickStartCreateRequest(
customer_id=customer.id,
location_id=location.id,
device_id=device.id,
validation_type="Erstvalidierung",
),
examiner=admin,
)
assert created.location_id == location.id
def test_quickstart_rejects_foreign_location_and_contact_ids():
db = session()
customer, location, device = seed(db)
other_customer = Customer(customer_type=CustomerType.practice, name="Andere Praxis")
db.add(other_customer)
db.flush()
other_location = Location(customer_id=other_customer.id, name="Fremder Standort")
other_contact = Contact(customer_id=other_customer.id, full_name="Fremder Kontakt")
admin = User(
email="foreign-masterdata-admin@schubamed.de",
first_name="Quickstart",
last_name="Admin",
role=UserRole.ADMIN.value,
password_hash="hash",
is_active=True,
must_change_password=False,
)
db.add_all([other_location, other_contact, admin])
db.flush()
with pytest.raises(ValueError, match="Standort gehört nicht"):
QuickStartService(db).create_validation(
QuickStartCreateRequest(
customer_id=customer.id,
location_id=other_location.id,
device_id=device.id,
validation_type="Erstvalidierung",
),
examiner=admin,
)
with pytest.raises(ValueError, match="Ansprechpartner gehört nicht"):
QuickStartService(db).create_validation(
QuickStartCreateRequest(
customer_id=customer.id,
location_id=location.id,
contact_id=other_contact.id,
device_id=device.id,
validation_type="Erstvalidierung",
),
examiner=admin,
)
def test_quickstart_allows_multiple_contacts_without_required_selection():
db = session()
customer, location, device = seed(db)
db.add_all([
Contact(customer_id=customer.id, full_name="Kontakt A"),
Contact(customer_id=customer.id, full_name="Kontakt B"),
])
admin = User(
email="optional-contact-admin@schubamed.de",
first_name="Quickstart",
last_name="Admin",
role=UserRole.ADMIN.value,
password_hash="hash",
is_active=True,
must_change_password=False,
)
db.add(admin)
db.flush()
created = QuickStartService(db).create_validation(
QuickStartCreateRequest(
customer_id=customer.id,
location_id=location.id,
device_id=device.id,
validation_type="Erstvalidierung",
),
examiner=admin,
)
assert created.contact_id is None
def test_quickstart_device_last_validation_returns_latest_completed_validation():
db = session()
customer, location, device = seed(db)
@ -1257,3 +1373,194 @@ def test_confirmed_measurements_appear_in_orion_report(tmp_path):
assert "leak_rate" in html
assert "0,2" in html
def seed_admin(db: Session) -> User:
user = User(
email="admin@schubamed.de",
first_name="Admin",
last_name="User",
role=UserRole.ADMIN.value,
password_hash="hash",
is_active=True,
must_change_password=False,
)
db.add(user)
db.flush()
return user
def report_settings_payload(**overrides) -> OrionReportSettingsUpdate:
values = {
"layout_profile": "STANDARD",
"show_cover_result_text": True,
"signature_mode": "TECHNICAL_ONLY",
"image_size": "MEDIUM",
"page_break_before_main_chapters": True,
"page_margin": "STANDARD",
"section_spacing": "STANDARD",
"table_layout": "STANDARD",
"table_font_size": "STANDARD",
"image_position": "SIDE_BY_SIDE",
"max_images_per_page": 2,
"show_image_captions": True,
"show_header": True,
"show_footer": True,
"logo_size": "MEDIUM",
"compact_cover": False,
}
values.update(overrides)
return OrionReportSettingsUpdate(**values)
def test_report_settings_defaults_and_update_persist():
db = session()
admin = seed_admin(db)
settings = OrionReportSettingsService(db).get_global()
assert settings.scope == "GLOBAL"
assert settings.layout_profile == "STANDARD"
assert settings.show_cover_result_text is True
assert settings.signature_mode == "TECHNICAL_ONLY"
assert settings.image_size == "MEDIUM"
assert settings.page_break_before_main_chapters is True
assert settings.page_margin == "STANDARD"
assert settings.section_spacing == "STANDARD"
assert settings.table_layout == "STANDARD"
assert settings.table_font_size == "STANDARD"
assert settings.image_position == "SIDE_BY_SIDE"
assert settings.max_images_per_page == 2
assert settings.show_image_captions is True
assert settings.show_header is True
assert settings.show_footer is True
assert settings.logo_size == "MEDIUM"
assert settings.compact_cover is False
updated = OrionReportSettingsService(db).update_global(
report_settings_payload(
layout_profile="COMPACT",
show_cover_result_text=False,
signature_mode="TECHNICAL_AND_CLIENT",
image_size="LARGE",
page_break_before_main_chapters=False,
page_margin="WIDE",
section_spacing="COMPACT",
table_layout="COMPACT",
table_font_size="SMALL",
image_position="STACKED",
max_images_per_page=4,
show_image_captions=False,
show_header=False,
show_footer=False,
logo_size="LARGE",
compact_cover=True,
),
admin,
)
db.commit()
assert updated.layout_profile == "COMPACT"
assert updated.show_cover_result_text is False
assert updated.signature_mode == "TECHNICAL_AND_CLIENT"
assert updated.image_size == "LARGE"
assert updated.page_break_before_main_chapters is False
assert updated.page_margin == "WIDE"
assert updated.section_spacing == "COMPACT"
assert updated.table_layout == "COMPACT"
assert updated.table_font_size == "SMALL"
assert updated.image_position == "STACKED"
assert updated.max_images_per_page == 4
assert updated.show_image_captions is False
assert updated.show_header is False
assert updated.show_footer is False
assert updated.logo_size == "LARGE"
assert updated.compact_cover is True
assert updated.updated_by_user_id == admin.id
def test_report_settings_invalid_enum_is_rejected():
with pytest.raises(Exception):
report_settings_payload(
layout_profile="WILD",
)
def test_orion_settings_preview_pdf_contains_pdf_bytes(tmp_path):
db = session()
seed_admin(db)
pdf = OrionReportService(db, tmp_path).render_settings_preview_pdf(
report_settings_payload(
layout_profile="COMPACT",
show_cover_result_text=True,
signature_mode="TECHNICAL_AND_CLIENT",
image_size="SMALL",
page_break_before_main_chapters=False,
page_margin="NARROW",
section_spacing="COMPACT",
table_layout="COMPACT",
table_font_size="SMALL",
image_position="STACKED",
max_images_per_page=1,
show_image_captions=False,
show_header=False,
show_footer=False,
logo_size="SMALL",
compact_cover=True,
)
)
assert pdf.startswith(b"%PDF")
assert len(pdf) > 1024
def test_orion_report_settings_affect_html_without_removing_summary_result(tmp_path):
db = session()
customer, location, device = seed(db)
validation = valid_validation(customer, location, device)
validation.result = "BESTANDEN"
db.add(validation)
admin = seed_admin(db)
OrionReportSettingsService(db).update_global(
report_settings_payload(
layout_profile="COMPACT",
show_cover_result_text=False,
signature_mode="TECHNICAL_AND_CLIENT",
image_size="SMALL",
page_break_before_main_chapters=False,
page_margin="NARROW",
section_spacing="COMPACT",
table_layout="COMPACT",
table_font_size="SMALL",
image_position="STACKED",
max_images_per_page=1,
show_image_captions=False,
show_header=False,
show_footer=False,
logo_size="SMALL",
compact_cover=True,
),
admin,
)
db.commit()
html = OrionReportService(db, tmp_path).render_html(validation.id)
assert "layout-compact" in html
assert "page-margin-narrow" in html
assert "section-spacing-compact" in html
assert "table-layout-compact" in html
assert "table-font-small" in html
assert "image-size-small" in html
assert "image-position-stacked" in html
assert "image-page-max-1" in html
assert "image-captions-off" in html
assert "logo-size-small" in html
assert "cover-compact" in html
assert "main-chapter-flow" in html
assert "Ergebnis der Validierung" not in html.split('<section class="report-content">')[0]
assert "Unterschrift Auftraggeber" in html
assert '<header class="report-header"' not in html
assert '<footer class="report-footer"' not in html
assert html.count("result-box") >= 1

View file

@ -1 +1 @@
BOE5aoWcGu1YRVHg2KU3B
T1Sq4P6mWswk2NfmBZrTz

View file

@ -7,6 +7,7 @@
"/(app)/equipment/page": "/equipment",
"/(app)/locations/page": "/locations",
"/(app)/profile/security/page": "/profile/security",
"/(app)/settings/report-layout/page": "/settings/report-layout",
"/(app)/users/page": "/users",
"/(app)/validations/[id]/edit/page": "/validations/[id]/edit",
"/(app)/validations/[id]/preview/page": "/validations/[id]/preview",
@ -19,6 +20,8 @@
"/api/login/route": "/api/login",
"/api/logout/route": "/api/logout",
"/api/me/route": "/api/me",
"/api/report-settings/preview/route": "/api/report-settings/preview",
"/api/report-settings/route": "/api/report-settings",
"/api/v1/[...path]/route": "/api/v1/[...path]",
"/icon.svg/route": "/icon.svg",
"/page": "/"

View file

@ -7,9 +7,9 @@
"static/chunks/0cz1d0mv5g_q7.js"
],
"lowPriorityFiles": [
"static/BOE5aoWcGu1YRVHg2KU3B/_buildManifest.js",
"static/BOE5aoWcGu1YRVHg2KU3B/_ssgManifest.js",
"static/BOE5aoWcGu1YRVHg2KU3B/_clientMiddlewareManifest.js"
"static/T1Sq4P6mWswk2NfmBZrTz/_buildManifest.js",
"static/T1Sq4P6mWswk2NfmBZrTz/_ssgManifest.js",
"static/T1Sq4P6mWswk2NfmBZrTz/_clientMiddlewareManifest.js"
],
"rootMainFiles": [
"static/chunks/2zjueh7t2vecu.js",

File diff suppressed because one or more lines are too long

View file

@ -1,16 +1,16 @@
[
{
"route": "/validations/[id]/edit",
"firstLoadUncompressedJsBytes": 751150,
"firstLoadUncompressedJsBytes": 751890,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/1qhkk_szgh621.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/1_3g0o_0cezme.js",
".next/static/chunks/3ltfzh6dxauii.js",
".next/static/chunks/1wkr5lb8e_yha.js",
".next/static/chunks/2975f5i-zcw63.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
".next/static/chunks/0n-zjr76qg7uq.js",
@ -21,16 +21,16 @@
},
{
"route": "/validations/new",
"firstLoadUncompressedJsBytes": 750982,
"firstLoadUncompressedJsBytes": 751722,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/1crm00tngvg0n.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/1diubaxj1tclp.js",
".next/static/chunks/3ltfzh6dxauii.js",
".next/static/chunks/1wkr5lb8e_yha.js",
".next/static/chunks/2975f5i-zcw63.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
".next/static/chunks/0n-zjr76qg7uq.js",
@ -41,14 +41,14 @@
},
{
"route": "/users",
"firstLoadUncompressedJsBytes": 733541,
"firstLoadUncompressedJsBytes": 734279,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/1cqp122st_-zm.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/30zpouyx32v4r.js",
".next/static/chunks/3ltfzh6dxauii.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
@ -60,14 +60,14 @@
},
{
"route": "/devices",
"firstLoadUncompressedJsBytes": 729065,
"firstLoadUncompressedJsBytes": 729726,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/1m60fm0dtqtgw.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/02io6dnnqj4wa.js",
".next/static/chunks/1ynnqp1y5f44o.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
@ -79,14 +79,14 @@
},
{
"route": "/equipment",
"firstLoadUncompressedJsBytes": 728428,
"firstLoadUncompressedJsBytes": 729089,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/3ssrpy29apyud.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/34frrgl3b8scb.js",
".next/static/chunks/1ynnqp1y5f44o.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
@ -98,14 +98,14 @@
},
{
"route": "/customers",
"firstLoadUncompressedJsBytes": 728211,
"firstLoadUncompressedJsBytes": 728872,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/0mesgq8f7cu36.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/2-nz3xcpe_pw_.js",
".next/static/chunks/1ynnqp1y5f44o.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
@ -117,14 +117,14 @@
},
{
"route": "/contacts",
"firstLoadUncompressedJsBytes": 727876,
"firstLoadUncompressedJsBytes": 728537,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/13lr3p114y1co.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/0-krs176t54dw.js",
".next/static/chunks/1ynnqp1y5f44o.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
@ -136,14 +136,14 @@
},
{
"route": "/locations",
"firstLoadUncompressedJsBytes": 727871,
"firstLoadUncompressedJsBytes": 728532,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/32d7iq3bhw0do.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/1m4and-haqgqz.js",
".next/static/chunks/1ynnqp1y5f44o.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
@ -155,13 +155,13 @@
},
{
"route": "/profile/security",
"firstLoadUncompressedJsBytes": 710610,
"firstLoadUncompressedJsBytes": 711271,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/19-dmj7e3s4r_.js",
".next/static/chunks/3ltfzh6dxauii.js",
".next/static/chunks/2zjueh7t2vecu.js",
@ -174,13 +174,13 @@
},
{
"route": "/validations",
"firstLoadUncompressedJsBytes": 690638,
"firstLoadUncompressedJsBytes": 691299,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/0ti1a2yw9pft4.js",
".next/static/chunks/26jh-4z-ujjfh.js",
".next/static/chunks/2zjueh7t2vecu.js",
@ -211,14 +211,32 @@
},
{
"route": "/validations/quick-start",
"firstLoadUncompressedJsBytes": 633687,
"firstLoadUncompressedJsBytes": 636173,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/0_iiecbkgkdlf.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/0t7m1oc6w_u-y.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
".next/static/chunks/0n-zjr76qg7uq.js",
".next/static/chunks/0iec5q4ack_04.js",
".next/static/chunks/27jktro2p5rq9.js",
".next/static/chunks/turbopack-06glzjf65-whj.js"
]
},
{
"route": "/settings/report-layout",
"firstLoadUncompressedJsBytes": 634119,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/413udcsynwnhe.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
".next/static/chunks/0n-zjr76qg7uq.js",
@ -229,13 +247,13 @@
},
{
"route": "/dashboard",
"firstLoadUncompressedJsBytes": 629850,
"firstLoadUncompressedJsBytes": 630511,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/2toi33zq_ydim.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
@ -247,13 +265,13 @@
},
{
"route": "/validations/[id]/preview",
"firstLoadUncompressedJsBytes": 612185,
"firstLoadUncompressedJsBytes": 612846,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/3bmssrj1g6gvs.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
@ -265,13 +283,13 @@
},
{
"route": "/documents",
"firstLoadUncompressedJsBytes": 608111,
"firstLoadUncompressedJsBytes": 608772,
"firstLoadChunkPaths": [
".next/static/chunks/05-c3ty_6dwfk.js",
".next/static/chunks/14mrh2-p_w84d.js",
".next/static/chunks/34jc288cp41wf.js",
".next/static/chunks/3ehzmerq6j-54.js",
".next/static/chunks/0pq9-2gbhfh06.js",
".next/static/chunks/3_bqwdscuc1c8.js",
".next/static/chunks/2zjueh7t2vecu.js",
".next/static/chunks/30wdrt2uam-rs.js",
".next/static/chunks/0n-zjr76qg7uq.js",

View file

@ -5,9 +5,9 @@
"devFiles": [],
"polyfillFiles": [],
"lowPriorityFiles": [
"static/BOE5aoWcGu1YRVHg2KU3B/_buildManifest.js",
"static/BOE5aoWcGu1YRVHg2KU3B/_ssgManifest.js",
"static/BOE5aoWcGu1YRVHg2KU3B/_clientMiddlewareManifest.js"
"static/T1Sq4P6mWswk2NfmBZrTz/_buildManifest.js",
"static/T1Sq4P6mWswk2NfmBZrTz/_ssgManifest.js",
"static/T1Sq4P6mWswk2NfmBZrTz/_clientMiddlewareManifest.js"
],
"rootMainFiles": []
}

View file

@ -319,6 +319,30 @@
"x-next-revalidate-tag-token"
]
},
"/settings/report-layout": {
"experimentalBypassFor": [
{
"type": "header",
"key": "next-action"
},
{
"type": "header",
"key": "content-type",
"value": "multipart/form-data;.*"
}
],
"initialRevalidateSeconds": false,
"srcRoute": "/settings/report-layout",
"dataRoute": "/settings/report-layout.rsc",
"allowHeader": [
"host",
"x-matched-path",
"x-prerender-revalidate",
"x-prerender-revalidate-if-generated",
"x-next-revalidated-tags",
"x-next-revalidate-tag-token"
]
},
"/users": {
"experimentalBypassFor": [
{

View file

@ -84,6 +84,18 @@
"routeKeys": {},
"namedRegex": "^/api/me(?:/)?$"
},
{
"page": "/api/report-settings",
"regex": "^/api/report\\-settings(?:/)?$",
"routeKeys": {},
"namedRegex": "^/api/report\\-settings(?:/)?$"
},
{
"page": "/api/report-settings/preview",
"regex": "^/api/report\\-settings/preview(?:/)?$",
"routeKeys": {},
"namedRegex": "^/api/report\\-settings/preview(?:/)?$"
},
{
"page": "/contacts",
"regex": "^/contacts(?:/)?$",
@ -144,6 +156,12 @@
"routeKeys": {},
"namedRegex": "^/profile/security(?:/)?$"
},
{
"page": "/settings/report-layout",
"regex": "^/settings/report\\-layout(?:/)?$",
"routeKeys": {},
"namedRegex": "^/settings/report\\-layout(?:/)?$"
},
{
"page": "/users",
"regex": "^/users(?:/)?$",

View file

@ -7,6 +7,7 @@
"/(app)/equipment/page": "app/(app)/equipment/page.js",
"/(app)/locations/page": "app/(app)/locations/page.js",
"/(app)/profile/security/page": "app/(app)/profile/security/page.js",
"/(app)/settings/report-layout/page": "app/(app)/settings/report-layout/page.js",
"/(app)/users/page": "app/(app)/users/page.js",
"/(app)/validations/[id]/edit/page": "app/(app)/validations/[id]/edit/page.js",
"/(app)/validations/[id]/preview/page": "app/(app)/validations/[id]/preview/page.js",
@ -19,6 +20,8 @@
"/api/login/route": "app/api/login/route.js",
"/api/logout/route": "app/api/logout/route.js",
"/api/me/route": "app/api/me/route.js",
"/api/report-settings/preview/route": "app/api/report-settings/preview/route.js",
"/api/report-settings/route": "app/api/report-settings/route.js",
"/api/v1/[...path]/route": "app/api/v1/[...path]/route.js",
"/icon.svg/route": "app/icon.svg/route.js",
"/page": "app/page.js"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,16 @@
var R=require("../../../../chunks/ssr/[turbopack]_runtime.js")("server/app/(app)/settings/report-layout/page.js")
R.c("server/chunks/ssr/[root-of-the-server]__1k-o3m5._.js")
R.c("server/chunks/ssr/node_modules_next_dist_0bw_x_7._.js")
R.c("server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20zv5y1.js")
R.c("server/chunks/ssr/[root-of-the-server]__0_kl8he._.js")
R.c("server/chunks/ssr/[root-of-the-server]__0g84hko._.js")
R.c("server/chunks/ssr/app_layout_tsx_2144vk_._.js")
R.c("server/chunks/ssr/_0um1dzw._.js")
R.c("server/chunks/ssr/_0kezen4._.js")
R.c("server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lh._.js")
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js")
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js")
R.c("server/chunks/ssr/_0b7nppq._.js")
R.c("server/chunks/ssr/_next-internal_server_app_(app)_settings_report-layout_page_actions_0w06-xg.js")
R.m(43401)
module.exports=R.m(43401).exports

View file

@ -0,0 +1,5 @@
{
"version": 3,
"sources": [],
"sections": []
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
{
"/(app)/settings/report-layout/page": "app/(app)/settings/report-layout/page.js"
}

View file

@ -0,0 +1,18 @@
{
"devFiles": [],
"ampDevFiles": [],
"polyfillFiles": [
"static/chunks/0cz1d0mv5g_q7.js"
],
"lowPriorityFiles": [],
"rootMainFiles": [
"static/chunks/2zjueh7t2vecu.js",
"static/chunks/30wdrt2uam-rs.js",
"static/chunks/0n-zjr76qg7uq.js",
"static/chunks/0iec5q4ack_04.js",
"static/chunks/27jktro2p5rq9.js",
"static/chunks/turbopack-06glzjf65-whj.js"
],
"pages": {},
"ampFirstPages": []
}

View file

@ -0,0 +1,6 @@
{
"pages": {},
"app": {},
"appUsingSizeAdjust": false,
"pagesUsingSizeAdjust": false
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -6,7 +6,7 @@
8:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ViewportBoundary"]
a:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
c:I[68027,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default",1]
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldnt load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldnt load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldnt load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldnt load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"T1Sq4P6mWswk2NfmBZrTz"}
d:[]
7:"$Wd"
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]

View file

@ -1,5 +1,5 @@
1:"$Sreact.fragment"
2:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"OutletBoundary"]
3:"$Sreact.suspense"
0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldnt load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldnt load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldnt load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldnt load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}
4:null

View file

@ -6,7 +6,7 @@
8:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ViewportBoundary"]
a:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
c:I[68027,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default",1]
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldnt load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldnt load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldnt load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldnt load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"T1Sq4P6mWswk2NfmBZrTz"}
d:[]
7:"$Wd"
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]

View file

@ -2,4 +2,4 @@
2:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ViewportBoundary"]
3:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
4:"$Sreact.suspense"
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}

View file

@ -2,4 +2,4 @@
2:I[39756,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
3:I[37457,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
4:[]
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"T1Sq4P6mWswk2NfmBZrTz"}

View file

@ -1 +1 @@
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}

File diff suppressed because one or more lines are too long

View file

@ -9,8 +9,8 @@
b:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ViewportBoundary"]
d:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
f:I[68027,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default",1]
:HL["/_next/static/chunks/3jh0370-lxsf_.css","style"]
0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",20],[["$","$L1",null,{"loading":[["$","main","l",{"className":"flex min-h-screen items-center justify-center bg-background","children":["$","div",null,{"className":"rounded-lg border border-border bg-surface p-8 shadow-soft","children":[["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}],["$","div",null,{"className":"mt-6 flex items-center justify-center gap-3 text-text-light","children":[["$","span",null,{"className":"spinner"}],["$","span",null,{"children":"Validation Suite wird geladen."}]]}]]}]}],[],[["$","script","script-0",{"src":"/_next/static/chunks/34jc288cp41wf.js","async":true}]]],"children":["$","$3","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3jh0370-lxsf_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/05-c3ty_6dwfk.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]}],{"children":[["$","$3","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$3","c",{"children":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/3ehzmerq6j-54.js","async":true,"nonce":"$undefined"}]],["$","$L7",null,{"children":["$","$8",null,{"name":"Next.MetadataOutlet","children":"$@9"}]}]]}],{},null,false,null]},null,false,"$@a"]},null,false,null],["$","$3","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$8",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3jh0370-lxsf_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"BOE5aoWcGu1YRVHg2KU3B"}
:HL["/_next/static/chunks/33g7vuk7-89na.css","style"]
0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",20],[["$","$L1",null,{"loading":[["$","main","l",{"className":"flex min-h-screen items-center justify-center bg-background","children":["$","div",null,{"className":"rounded-lg border border-border bg-surface p-8 shadow-soft","children":[["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}],["$","div",null,{"className":"mt-6 flex items-center justify-center gap-3 text-text-light","children":[["$","span",null,{"className":"spinner"}],["$","span",null,{"children":"Validation Suite wird geladen."}]]}]]}]}],[],[["$","script","script-0",{"src":"/_next/static/chunks/34jc288cp41wf.js","async":true}]]],"children":["$","$3","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/33g7vuk7-89na.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/05-c3ty_6dwfk.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]}],{"children":[["$","$3","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$3","c",{"children":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/3ehzmerq6j-54.js","async":true,"nonce":"$undefined"}]],["$","$L7",null,{"children":["$","$8",null,{"name":"Next.MetadataOutlet","children":"$@9"}]}]]}],{},null,false,null]},null,false,"$@a"]},null,false,null],["$","$3","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$8",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/33g7vuk7-89na.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"T1Sq4P6mWswk2NfmBZrTz"}
10:[]
a:"$W10"
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]

View file

@ -9,8 +9,8 @@
b:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ViewportBoundary"]
d:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
f:I[68027,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default",1]
:HL["/_next/static/chunks/3jh0370-lxsf_.css","style"]
0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",20],[["$","$L1",null,{"loading":[["$","main","l",{"className":"flex min-h-screen items-center justify-center bg-background","children":["$","div",null,{"className":"rounded-lg border border-border bg-surface p-8 shadow-soft","children":[["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}],["$","div",null,{"className":"mt-6 flex items-center justify-center gap-3 text-text-light","children":[["$","span",null,{"className":"spinner"}],["$","span",null,{"children":"Validation Suite wird geladen."}]]}]]}]}],[],[["$","script","script-0",{"src":"/_next/static/chunks/34jc288cp41wf.js","async":true}]]],"children":["$","$3","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3jh0370-lxsf_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/05-c3ty_6dwfk.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]}],{"children":[["$","$3","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$3","c",{"children":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/3ehzmerq6j-54.js","async":true,"nonce":"$undefined"}]],["$","$L7",null,{"children":["$","$8",null,{"name":"Next.MetadataOutlet","children":"$@9"}]}]]}],{},null,false,null]},null,false,"$@a"]},null,false,null],["$","$3","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$8",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3jh0370-lxsf_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"BOE5aoWcGu1YRVHg2KU3B"}
:HL["/_next/static/chunks/33g7vuk7-89na.css","style"]
0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",20],[["$","$L1",null,{"loading":[["$","main","l",{"className":"flex min-h-screen items-center justify-center bg-background","children":["$","div",null,{"className":"rounded-lg border border-border bg-surface p-8 shadow-soft","children":[["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}],["$","div",null,{"className":"mt-6 flex items-center justify-center gap-3 text-text-light","children":[["$","span",null,{"className":"spinner"}],["$","span",null,{"children":"Validation Suite wird geladen."}]]}]]}]}],[],[["$","script","script-0",{"src":"/_next/static/chunks/34jc288cp41wf.js","async":true}]]],"children":["$","$3","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/33g7vuk7-89na.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/05-c3ty_6dwfk.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"de","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]}],{"children":[["$","$3","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$3","c",{"children":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/3ehzmerq6j-54.js","async":true,"nonce":"$undefined"}]],["$","$L7",null,{"children":["$","$8",null,{"name":"Next.MetadataOutlet","children":"$@9"}]}]]}],{},null,false,null]},null,false,"$@a"]},null,false,null],["$","$3","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$8",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/33g7vuk7-89na.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"T1Sq4P6mWswk2NfmBZrTz"}
10:[]
a:"$W10"
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]

View file

@ -3,4 +3,4 @@
3:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
4:"$Sreact.suspense"
5:I[27201,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"IconMark"]
0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Validation Suite"}],["$","meta","1",{"name":"description","content":"Professionelle Validierungsplattform fuer medizinische Prozesse"}],["$","link","2",{"rel":"icon","href":"/icon.svg?icon.3qohsuqgxm60_.svg","sizes":"any","type":"image/svg+xml"}],["$","$L5","3",{}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Validation Suite"}],["$","meta","1",{"name":"description","content":"Professionelle Validierungsplattform fuer medizinische Prozesse"}],["$","link","2",{"rel":"icon","href":"/icon.svg?icon.3qohsuqgxm60_.svg","sizes":"any","type":"image/svg+xml"}],["$","$L5","3",{}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}

View file

@ -4,5 +4,5 @@
4:I[39756,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
5:I[37457,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
6:I[22016,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3ehzmerq6j-54.js"],""]
:HL["/_next/static/chunks/3jh0370-lxsf_.css","style"]
0:{"rsc":["$","$L1",null,{"loading":[["$","main","l",{"className":"flex min-h-screen items-center justify-center bg-background","children":["$","div",null,{"className":"rounded-lg border border-border bg-surface p-8 shadow-soft","children":[["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}],["$","div",null,{"className":"mt-6 flex items-center justify-center gap-3 text-text-light","children":[["$","span",null,{"className":"spinner"}],["$","span",null,{"children":"Validation Suite wird geladen."}]]}]]}]}],[],[["$","script","script-0",{"src":"/_next/static/chunks/34jc288cp41wf.js","async":true}]]],"children":["$","$3","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3jh0370-lxsf_.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/05-c3ty_6dwfk.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true}]],["$","html",null,{"lang":"de","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}],"notFound":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[]]}]}]}]]}]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BOE5aoWcGu1YRVHg2KU3B"}
:HL["/_next/static/chunks/33g7vuk7-89na.css","style"]
0:{"rsc":["$","$L1",null,{"loading":[["$","main","l",{"className":"flex min-h-screen items-center justify-center bg-background","children":["$","div",null,{"className":"rounded-lg border border-border bg-surface p-8 shadow-soft","children":[["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}],["$","div",null,{"className":"mt-6 flex items-center justify-center gap-3 text-text-light","children":[["$","span",null,{"className":"spinner"}],["$","span",null,{"children":"Validation Suite wird geladen."}]]}]]}]}],[],[["$","script","script-0",{"src":"/_next/static/chunks/34jc288cp41wf.js","async":true}]]],"children":["$","$3","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/33g7vuk7-89na.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/05-c3ty_6dwfk.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true}]],["$","html",null,{"lang":"de","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}],"notFound":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L6",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[]]}]}]}]]}]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}

View file

@ -2,4 +2,4 @@
2:I[39756,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
3:I[37457,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
4:[]
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"T1Sq4P6mWswk2NfmBZrTz"}

View file

@ -3,5 +3,5 @@
3:I[22016,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3ehzmerq6j-54.js"],""]
4:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"OutletBoundary"]
5:"$Sreact.suspense"
0:{"rsc":["$","$1","c",{"children":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L3",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/3ehzmerq6j-54.js","async":true}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"rsc":["$","$1","c",{"children":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L2",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L3",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/3ehzmerq6j-54.js","async":true}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}
6:null

View file

@ -1,2 +1,2 @@
:HL["/_next/static/chunks/3jh0370-lxsf_.css","style"]
0:{"tree":{"name":"","param":null,"prefetchHints":20,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"BOE5aoWcGu1YRVHg2KU3B"}
:HL["/_next/static/chunks/33g7vuk7-89na.css","style"]
0:{"tree":{"name":"","param":null,"prefetchHints":20,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}

View file

@ -0,0 +1,7 @@
var R=require("../../../../chunks/[turbopack]_runtime.js")("server/app/api/report-settings/preview/route.js")
R.c("server/chunks/[root-of-the-server]__07c83wk._.js")
R.c("server/chunks/[root-of-the-server]__0domq1v._.js")
R.c("server/chunks/_14ra4y5._.js")
R.c("server/chunks/_next-internal_server_app_api_report-settings_preview_route_actions_1gurfmc.js")
R.m(59764)
module.exports=R.m(59764).exports

View file

@ -0,0 +1,5 @@
{
"version": 3,
"sources": [],
"sections": []
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
{
"/api/report-settings/preview/route": "app/api/report-settings/preview/route.js"
}

View file

@ -0,0 +1,9 @@
{
"devFiles": [],
"ampDevFiles": [],
"polyfillFiles": [],
"lowPriorityFiles": [],
"rootMainFiles": [],
"pages": {},
"ampFirstPages": []
}

View file

@ -0,0 +1,3 @@
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
globalThis.__RSC_MANIFEST["/api/report-settings/preview/route"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"rscModuleMapping":{},"edgeRscModuleMapping":{},"entryCSSFiles":{},"entryJSFiles":{}};

View file

@ -0,0 +1,7 @@
var R=require("../../../chunks/[turbopack]_runtime.js")("server/app/api/report-settings/route.js")
R.c("server/chunks/[root-of-the-server]__0666r5q._.js")
R.c("server/chunks/[root-of-the-server]__0domq1v._.js")
R.c("server/chunks/_14ra4y5._.js")
R.c("server/chunks/_next-internal_server_app_api_report-settings_route_actions_0_v5jwk.js")
R.m(61348)
module.exports=R.m(61348).exports

View file

@ -0,0 +1,5 @@
{
"version": 3,
"sources": [],
"sections": []
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
{
"/api/report-settings/route": "app/api/report-settings/route.js"
}

View file

@ -0,0 +1,9 @@
{
"devFiles": [],
"ampDevFiles": [],
"polyfillFiles": [],
"lowPriorityFiles": [],
"rootMainFiles": [],
"pages": {},
"ampFirstPages": []
}

View file

@ -0,0 +1,3 @@
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
globalThis.__RSC_MANIFEST["/api/report-settings/route"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"rscModuleMapping":{},"edgeRscModuleMapping":{},"entryCSSFiles":{},"entryJSFiles":{}};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,9 +1,9 @@
1:"$Sreact.fragment"
2:I[28779,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/0pq9-2gbhfh06.js"],"AuthProvider"]
3:I[24487,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/0pq9-2gbhfh06.js"],"QueryProvider"]
4:I[48026,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/0pq9-2gbhfh06.js"],"AppShell"]
2:I[28779,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3_bqwdscuc1c8.js"],"AuthProvider"]
3:I[24487,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3_bqwdscuc1c8.js"],"QueryProvider"]
4:I[48026,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3_bqwdscuc1c8.js"],"AppShell"]
5:I[39756,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
6:I[37457,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
7:I[5500,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3ehzmerq6j-54.js"],"Image"]
8:I[22016,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3ehzmerq6j-54.js"],""]
0:{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/_next/static/chunks/0pq9-2gbhfh06.js","async":true}]],["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L7",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L8",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[]]}]}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BOE5aoWcGu1YRVHg2KU3B"}
0:{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/_next/static/chunks/3_bqwdscuc1c8.js","async":true}]],["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[["$","main",null,{"className":"flex min-h-screen items-center justify-center bg-background px-4","children":["$","section",null,{"className":"w-full max-w-lg rounded-lg border border-border bg-surface p-8 text-center shadow-soft","children":[["$","div",null,{"className":"flex justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":["$","$L7",null,{"src":"/schubamed-logo.svg","alt":"SCHUBAMED Validation Suite","width":240,"height":64,"priority":true}]}]}],["$","h1",null,{"className":"mt-8 text-3xl font-semibold","children":"Seite nicht gefunden"}],["$","p",null,{"className":"mt-3 text-text-light","children":"Die angeforderte Seite ist nicht vorhanden oder wurde verschoben."}],["$","$L8",null,{"href":"/dashboard","className":"btn btn-primary mt-6","children":"Zum Dashboard"}]]}]}],[]]}]}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}

Some files were not shown because too many files have changed in this diff Show more