feat(customers): add controlled CSV and XLSX customer import
This commit is contained in:
parent
613ffdc8b7
commit
82e03877b3
566 changed files with 2752 additions and 991 deletions
|
|
@ -0,0 +1,38 @@
|
|||
"""customer external reference
|
||||
|
||||
Revision ID: 202607120003
|
||||
Revises: 202607120002
|
||||
Create Date: 2026-07-12 14:00:00.000000
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
revision = "202607120003"
|
||||
down_revision = "202607120002"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.add_column("customers", sa.Column("source_system", sa.String(length=80), nullable=True))
|
||||
op.add_column("customers", sa.Column("external_id", sa.String(length=120), nullable=True))
|
||||
op.create_index(op.f("ix_customers_source_system"), "customers", ["source_system"], unique=False)
|
||||
op.create_index(op.f("ix_customers_external_id"), "customers", ["external_id"], unique=False)
|
||||
op.create_index(
|
||||
"ix_customers_source_system_external_id",
|
||||
"customers",
|
||||
["source_system", "external_id"],
|
||||
unique=False,
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_index("ix_customers_source_system_external_id", table_name="customers")
|
||||
op.drop_index(op.f("ix_customers_external_id"), table_name="customers")
|
||||
op.drop_index(op.f("ix_customers_source_system"), table_name="customers")
|
||||
op.drop_column("customers", "external_id")
|
||||
op.drop_column("customers", "source_system")
|
||||
|
|
@ -64,6 +64,7 @@ from app.schemas.domain import (
|
|||
UserPasswordResetRequest,
|
||||
)
|
||||
from app.services.domain_service import CrudService, DomainServices
|
||||
from app.services.customer_import import CustomerImportService, parse_json_object
|
||||
from app.services.quickstart_service import QuickStartService
|
||||
from app.services.report_settings import OrionReportSettingsService
|
||||
from app.services.validation_workflow import ValidationWorkflowService
|
||||
|
|
@ -214,6 +215,51 @@ def paging(
|
|||
return {"page": page, "page_size": page_size, "search": search}
|
||||
|
||||
|
||||
@router.post("/customer-imports/preview")
|
||||
async def preview_customer_import(
|
||||
file: UploadFile,
|
||||
mapping: str | None = Form(default=None),
|
||||
session: Session = Depends(get_session),
|
||||
_: User = Depends(current_admin),
|
||||
):
|
||||
try:
|
||||
content = await file.read()
|
||||
parsed_mapping = parse_json_object(mapping) if mapping else None
|
||||
return CustomerImportService(session).preview(file.filename or "import", content, parsed_mapping)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=422, detail=str(exc)) from exc
|
||||
except UnicodeDecodeError as exc:
|
||||
raise HTTPException(status_code=422, detail="Die CSV-Datei muss UTF-8 kodiert sein.") from exc
|
||||
|
||||
|
||||
@router.post("/customer-imports/confirm")
|
||||
async def confirm_customer_import(
|
||||
file: UploadFile,
|
||||
mapping: str = Form(...),
|
||||
row_actions: str | None = Form(default=None),
|
||||
ignore_empty_values: bool = Form(default=True),
|
||||
session: Session = Depends(get_session),
|
||||
user: User = Depends(current_admin),
|
||||
):
|
||||
try:
|
||||
content = await file.read()
|
||||
result = CustomerImportService(session).confirm(
|
||||
file.filename or "import",
|
||||
content,
|
||||
parse_json_object(mapping),
|
||||
parse_json_object(row_actions),
|
||||
ignore_empty_values,
|
||||
user,
|
||||
)
|
||||
return result
|
||||
except ValueError as exc:
|
||||
session.rollback()
|
||||
raise HTTPException(status_code=422, detail=str(exc)) from exc
|
||||
except IntegrityError as exc:
|
||||
session.rollback()
|
||||
raise HTTPException(status_code=409, detail="Der Kundenimport konnte nicht vollständig gespeichert werden.") from exc
|
||||
|
||||
|
||||
def commit_create(session: Session, service: CrudService, payload):
|
||||
try:
|
||||
item = service.create(payload.model_dump())
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ class Customer(Base, UUIDMixin, TimestampMixin):
|
|||
__tablename__ = "customers"
|
||||
|
||||
customer_type: Mapped[CustomerType] = mapped_column(Enum(CustomerType))
|
||||
source_system: Mapped[str | None] = mapped_column(String(80), index=True)
|
||||
external_id: Mapped[str | None] = mapped_column(String(120), index=True)
|
||||
name: Mapped[str] = mapped_column(String(220), index=True)
|
||||
street: Mapped[str | None] = mapped_column(String(220))
|
||||
postal_code: Mapped[str | None] = mapped_column(String(20))
|
||||
|
|
@ -29,4 +31,3 @@ class Customer(Base, UUIDMixin, TimestampMixin):
|
|||
|
||||
contacts: Mapped[list["Contact"]] = relationship(back_populates="customer", cascade="all, delete-orphan")
|
||||
locations: Mapped[list["Location"]] = relationship(back_populates="customer", cascade="all, delete-orphan")
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ class CustomerRepository(Repository[Customer]):
|
|||
statement = statement.where(
|
||||
or_(
|
||||
Customer.name.ilike(term),
|
||||
Customer.external_id.ilike(term),
|
||||
Customer.city.ilike(term),
|
||||
Customer.postal_code.ilike(term),
|
||||
Customer.email.ilike(term),
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ from app.schemas.common import EntityRead, ORMModel
|
|||
|
||||
class CustomerCreate(ORMModel):
|
||||
customer_type: CustomerType
|
||||
source_system: str | None = None
|
||||
external_id: str | None = None
|
||||
name: str
|
||||
street: str | None = None
|
||||
postal_code: str | None = None
|
||||
|
|
|
|||
505
validation-suite/backend/mercury/app/services/customer_import.py
Normal file
505
validation-suite/backend/mercury/app/services/customer_import.py
Normal file
|
|
@ -0,0 +1,505 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import csv
|
||||
import io
|
||||
import json
|
||||
import re
|
||||
import zipfile
|
||||
from dataclasses import dataclass
|
||||
from html import unescape
|
||||
from typing import Any
|
||||
from xml.etree import ElementTree
|
||||
|
||||
from pydantic import EmailStr, TypeAdapter, ValidationError
|
||||
from sqlalchemy import and_, func, select
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.contact import Contact
|
||||
from app.models.customer import Customer, CustomerType
|
||||
from app.models.location import Location
|
||||
from app.models.user import User
|
||||
|
||||
MAX_IMPORT_BYTES = 5 * 1024 * 1024
|
||||
SOURCE_SYSTEM = "desk4"
|
||||
EMAIL_ADAPTER = TypeAdapter(EmailStr)
|
||||
|
||||
TARGET_FIELDS: dict[str, str] = {
|
||||
"ignore": "Nicht importieren",
|
||||
"customer_number": "Kundennummer",
|
||||
"customer_name": "Firmenname",
|
||||
"customer_addition": "Zusatz",
|
||||
"customer_street": "Straße",
|
||||
"customer_house_number": "Hausnummer",
|
||||
"customer_postal_code": "Postleitzahl",
|
||||
"customer_city": "Ort",
|
||||
"customer_country": "Land",
|
||||
"customer_phone": "Telefon",
|
||||
"customer_mobile": "Mobiltelefon",
|
||||
"customer_email": "E-Mail",
|
||||
"customer_website": "Website",
|
||||
"customer_vat_id": "Umsatzsteuer-ID",
|
||||
"customer_notes": "Interne Notiz",
|
||||
"contact_salutation": "Anrede",
|
||||
"contact_first_name": "Vorname",
|
||||
"contact_last_name": "Nachname",
|
||||
"contact_full_name": "Ansprechpartner",
|
||||
"contact_function": "Funktion",
|
||||
"contact_phone": "Telefon Ansprechpartner",
|
||||
"contact_mobile": "Mobil Ansprechpartner",
|
||||
"contact_email": "E-Mail Ansprechpartner",
|
||||
"location_name": "Standortbezeichnung",
|
||||
"location_street": "Straße Standort",
|
||||
"location_house_number": "Hausnummer Standort",
|
||||
"location_postal_code": "PLZ Standort",
|
||||
"location_city": "Ort Standort",
|
||||
"location_country": "Land Standort",
|
||||
}
|
||||
|
||||
ALIASES: dict[str, list[str]] = {
|
||||
"customer_number": ["kundennr", "kunden nr", "kunden-nr", "kunden nummer", "kundennummer", "debitor", "debitorennummer", "nummer"],
|
||||
"customer_name": ["firma", "firmenname", "name", "kunde", "kundenname", "unternehmen"],
|
||||
"customer_addition": ["zusatz", "name 2", "firmenzusatz"],
|
||||
"customer_street": ["strasse", "straße", "anschrift", "adresse", "kunde strasse"],
|
||||
"customer_house_number": ["hausnummer", "hausnr", "nr"],
|
||||
"customer_postal_code": ["plz", "postleitzahl", "zip"],
|
||||
"customer_city": ["ort", "stadt"],
|
||||
"customer_country": ["land"],
|
||||
"customer_phone": ["telefon", "tel", "festnetz"],
|
||||
"customer_mobile": ["mobiltelefon", "mobil", "handy"],
|
||||
"customer_email": ["e-mail", "email", "mail"],
|
||||
"customer_website": ["web", "website", "homepage"],
|
||||
"customer_vat_id": ["ust id", "ustid", "umsatzsteuer", "vat"],
|
||||
"customer_notes": ["notiz", "bemerkung", "interne notiz"],
|
||||
"contact_salutation": ["anrede"],
|
||||
"contact_first_name": ["vorname"],
|
||||
"contact_last_name": ["nachname", "name ansprechpartner"],
|
||||
"contact_full_name": ["ansprechpartner", "kontakt", "kontaktperson"],
|
||||
"contact_function": ["funktion", "position"],
|
||||
"contact_phone": ["telefon ansprechpartner", "kontakt telefon"],
|
||||
"contact_mobile": ["mobil ansprechpartner", "kontakt mobil"],
|
||||
"contact_email": ["email ansprechpartner", "e-mail ansprechpartner", "kontakt email"],
|
||||
"location_name": ["standort", "standortbezeichnung", "filiale"],
|
||||
"location_street": ["standort strasse", "standort straße", "liefer strasse", "lieferadresse"],
|
||||
"location_house_number": ["standort hausnummer"],
|
||||
"location_postal_code": ["standort plz", "liefer plz"],
|
||||
"location_city": ["standort ort", "liefer ort"],
|
||||
"location_country": ["standort land"],
|
||||
}
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ParsedImportFile:
|
||||
headers: list[str]
|
||||
rows: list[dict[str, str]]
|
||||
warnings: list[str]
|
||||
|
||||
|
||||
def normalize_header(value: str) -> str:
|
||||
value = value.strip().lower().replace("ß", "ss")
|
||||
value = re.sub(r"[_./:;]+", " ", value)
|
||||
value = re.sub(r"\s+", " ", value)
|
||||
return value
|
||||
|
||||
|
||||
def clean(value: Any) -> str:
|
||||
if value is None:
|
||||
return ""
|
||||
return str(value).strip()
|
||||
|
||||
|
||||
def join_parts(*values: str) -> str:
|
||||
return " ".join(item for item in (clean(value) for value in values) if item)
|
||||
|
||||
|
||||
class CustomerImportService:
|
||||
def __init__(self, session: Session) -> None:
|
||||
self.session = session
|
||||
|
||||
def parse_file(self, filename: str, content: bytes) -> ParsedImportFile:
|
||||
if not content:
|
||||
raise ValueError("Die Importdatei ist leer.")
|
||||
if len(content) > MAX_IMPORT_BYTES:
|
||||
raise ValueError("Die Importdatei ist zu groß.")
|
||||
suffix = filename.lower().rsplit(".", 1)[-1] if "." in filename else ""
|
||||
if suffix == "csv":
|
||||
return self._parse_csv(content)
|
||||
if suffix == "xlsx":
|
||||
return self._parse_xlsx(content)
|
||||
raise ValueError("Nur CSV- und XLSX-Dateien werden unterstützt.")
|
||||
|
||||
def suggest_mapping(self, headers: list[str]) -> dict[str, str]:
|
||||
mapping: dict[str, str] = {}
|
||||
used: set[str] = set()
|
||||
for header in headers:
|
||||
normalized = normalize_header(header)
|
||||
target = "ignore"
|
||||
for field, aliases in ALIASES.items():
|
||||
if field in used:
|
||||
continue
|
||||
if normalized in aliases or any(alias in normalized for alias in aliases):
|
||||
target = field
|
||||
used.add(field)
|
||||
break
|
||||
mapping[header] = target
|
||||
return mapping
|
||||
|
||||
def preview(self, filename: str, content: bytes, mapping: dict[str, str] | None = None) -> dict:
|
||||
parsed = self.parse_file(filename, content)
|
||||
final_mapping = mapping or self.suggest_mapping(parsed.headers)
|
||||
rows = [self._preview_row(index, row, final_mapping) for index, row in enumerate(parsed.rows, start=2)]
|
||||
summary = self._summary(rows)
|
||||
return {
|
||||
"columns": parsed.headers,
|
||||
"target_fields": TARGET_FIELDS,
|
||||
"mapping": final_mapping,
|
||||
"rows": rows,
|
||||
"summary": summary,
|
||||
"warnings": parsed.warnings,
|
||||
}
|
||||
|
||||
def confirm(
|
||||
self,
|
||||
filename: str,
|
||||
content: bytes,
|
||||
mapping: dict[str, str],
|
||||
row_actions: dict[str, str],
|
||||
ignore_empty_values: bool,
|
||||
user: User,
|
||||
) -> dict:
|
||||
preview = self.preview(filename, content, mapping)
|
||||
results = []
|
||||
counters = {
|
||||
"total": len(preview["rows"]),
|
||||
"created_customers": 0,
|
||||
"updated_customers": 0,
|
||||
"skipped_rows": 0,
|
||||
"error_rows": 0,
|
||||
"created_locations": 0,
|
||||
"created_contacts": 0,
|
||||
}
|
||||
for row in preview["rows"]:
|
||||
action = row_actions.get(str(row["row_number"]), row["action"])
|
||||
if row["action"] == "ERROR":
|
||||
action = "ERROR"
|
||||
if action not in {"NEU_ANLEGEN", "BESTEHENDEN_AKTUALISIEREN", "UEBERSPRINGEN", "ERROR"}:
|
||||
action = row["action"]
|
||||
try:
|
||||
result = self._apply_row(row, action, ignore_empty_values)
|
||||
for key in counters:
|
||||
counters[key] += result.get(key, 0)
|
||||
results.append(
|
||||
{
|
||||
"row_number": row["row_number"],
|
||||
"customer_name": row["recognized"]["customer"].get("name"),
|
||||
"action": action,
|
||||
"result": result["result"],
|
||||
"message": result["message"],
|
||||
}
|
||||
)
|
||||
except Exception as exc:
|
||||
self.session.rollback()
|
||||
counters["error_rows"] += 1
|
||||
results.append(
|
||||
{
|
||||
"row_number": row["row_number"],
|
||||
"customer_name": row["recognized"]["customer"].get("name"),
|
||||
"action": action,
|
||||
"result": "FEHLER",
|
||||
"message": str(exc),
|
||||
}
|
||||
)
|
||||
self.session.commit()
|
||||
return {"summary": counters, "rows": results, "executed_by_user_id": user.id}
|
||||
|
||||
def _parse_csv(self, content: bytes) -> ParsedImportFile:
|
||||
text = content.decode("utf-8-sig")
|
||||
sample = text[:4096]
|
||||
delimiter = ";"
|
||||
try:
|
||||
delimiter = csv.Sniffer().sniff(sample, delimiters=";,").delimiter
|
||||
except csv.Error:
|
||||
delimiter = ";" if sample.count(";") >= sample.count(",") else ","
|
||||
reader = csv.DictReader(io.StringIO(text), delimiter=delimiter)
|
||||
headers = [clean(item) for item in (reader.fieldnames or []) if clean(item)]
|
||||
if not headers:
|
||||
raise ValueError("Die Importdatei enthält keine Spaltenüberschriften.")
|
||||
rows = [{header: clean(row.get(header)) for header in headers} for row in reader]
|
||||
rows = [row for row in rows if any(row.values())]
|
||||
if not rows:
|
||||
raise ValueError("Die Importdatei enthält keine Datenzeilen.")
|
||||
return ParsedImportFile(headers=headers, rows=rows, warnings=[])
|
||||
|
||||
def _parse_xlsx(self, content: bytes) -> ParsedImportFile:
|
||||
if not content.startswith(b"PK"):
|
||||
raise ValueError("Die XLSX-Datei ist ungültig.")
|
||||
try:
|
||||
archive = zipfile.ZipFile(io.BytesIO(content))
|
||||
except zipfile.BadZipFile as exc:
|
||||
raise ValueError("Die XLSX-Datei ist ungültig.") from exc
|
||||
names = set(archive.namelist())
|
||||
if any(name.endswith("vbaProject.bin") for name in names):
|
||||
raise ValueError("Makro-Dateien werden nicht unterstützt.")
|
||||
workbook = ElementTree.fromstring(archive.read("xl/workbook.xml"))
|
||||
ns = {"m": "http://schemas.openxmlformats.org/spreadsheetml/2006/main", "r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships"}
|
||||
sheets = workbook.findall(".//m:sheet", ns)
|
||||
warnings = []
|
||||
if len(sheets) > 1:
|
||||
warnings.append("Die XLSX-Datei enthält mehrere Tabellenblätter. Es wurde das erste Tabellenblatt verwendet.")
|
||||
sheet_path = "xl/worksheets/sheet1.xml"
|
||||
shared = self._xlsx_shared_strings(archive)
|
||||
sheet = ElementTree.fromstring(archive.read(sheet_path))
|
||||
matrix: list[list[str]] = []
|
||||
for row in sheet.findall(".//m:sheetData/m:row", ns):
|
||||
values: dict[int, str] = {}
|
||||
for cell in row.findall("m:c", ns):
|
||||
ref = cell.attrib.get("r", "A1")
|
||||
col = self._column_index(ref)
|
||||
value = self._xlsx_cell_value(cell, shared, ns)
|
||||
values[col] = value
|
||||
if values:
|
||||
matrix.append([values.get(index, "") for index in range(max(values) + 1)])
|
||||
if not matrix:
|
||||
raise ValueError("Die XLSX-Datei enthält keine Daten.")
|
||||
headers = [clean(value) for value in matrix[0]]
|
||||
headers = [value for value in headers if value]
|
||||
if not headers:
|
||||
raise ValueError("Die XLSX-Datei enthält keine Spaltenüberschriften.")
|
||||
rows = []
|
||||
for raw in matrix[1:]:
|
||||
row = {header: clean(raw[index] if index < len(raw) else "") for index, header in enumerate(headers)}
|
||||
if any(row.values()):
|
||||
rows.append(row)
|
||||
if not rows:
|
||||
raise ValueError("Die XLSX-Datei enthält keine Datenzeilen.")
|
||||
return ParsedImportFile(headers=headers, rows=rows, warnings=warnings)
|
||||
|
||||
def _xlsx_shared_strings(self, archive: zipfile.ZipFile) -> list[str]:
|
||||
if "xl/sharedStrings.xml" not in archive.namelist():
|
||||
return []
|
||||
ns = {"m": "http://schemas.openxmlformats.org/spreadsheetml/2006/main"}
|
||||
root = ElementTree.fromstring(archive.read("xl/sharedStrings.xml"))
|
||||
values = []
|
||||
for item in root.findall(".//m:si", ns):
|
||||
values.append(unescape("".join(node.text or "" for node in item.findall(".//m:t", ns))))
|
||||
return values
|
||||
|
||||
def _xlsx_cell_value(self, cell: ElementTree.Element, shared: list[str], ns: dict[str, str]) -> str:
|
||||
cell_type = cell.attrib.get("t")
|
||||
value_node = cell.find("m:v", ns)
|
||||
if value_node is None:
|
||||
inline = cell.find(".//m:t", ns)
|
||||
return clean(inline.text if inline is not None else "")
|
||||
value = clean(value_node.text)
|
||||
if cell_type == "s" and value.isdigit() and int(value) < len(shared):
|
||||
return shared[int(value)]
|
||||
return value
|
||||
|
||||
def _column_index(self, ref: str) -> int:
|
||||
letters = re.sub(r"[^A-Z]", "", ref.upper())
|
||||
index = 0
|
||||
for char in letters:
|
||||
index = index * 26 + (ord(char) - 64)
|
||||
return max(index - 1, 0)
|
||||
|
||||
def _mapped_values(self, row: dict[str, str], mapping: dict[str, str]) -> dict[str, str]:
|
||||
values = {field: "" for field in TARGET_FIELDS if field != "ignore"}
|
||||
for column, target in mapping.items():
|
||||
if target in values and not values[target]:
|
||||
values[target] = clean(row.get(column))
|
||||
return values
|
||||
|
||||
def _preview_row(self, row_number: int, row: dict[str, str], mapping: dict[str, str]) -> dict:
|
||||
values = self._mapped_values(row, mapping)
|
||||
recognized = self._recognized(values)
|
||||
errors = self._validate_values(values)
|
||||
matches = self._find_matches(recognized["customer"])
|
||||
action = "NEU_ANLEGEN"
|
||||
message = "Neuer Kunde"
|
||||
if errors:
|
||||
action = "ERROR"
|
||||
message = "Pflichtfeld oder Eingabe ungültig"
|
||||
elif matches["external_id"]:
|
||||
action = "BESTEHENDEN_AKTUALISIEREN"
|
||||
message = "Bestehender Kunde über Kundennummer gefunden"
|
||||
elif matches["name_postal_code"] or matches["name_city"] or matches["email"]:
|
||||
action = "UEBERSPRINGEN"
|
||||
message = "Mögliche Dublette gefunden"
|
||||
return {
|
||||
"row_number": row_number,
|
||||
"source": row,
|
||||
"recognized": recognized,
|
||||
"errors": errors,
|
||||
"action": action,
|
||||
"message": message,
|
||||
"matches": {key: self._customer_ref(value) for key, value in matches.items() if value},
|
||||
"allowed_actions": self._allowed_actions(action, bool(matches["external_id"])),
|
||||
}
|
||||
|
||||
def _recognized(self, values: dict[str, str]) -> dict:
|
||||
customer_notes = "\n".join(
|
||||
item
|
||||
for item in [
|
||||
values["customer_notes"],
|
||||
f"Zusatz: {values['customer_addition']}" if values["customer_addition"] else "",
|
||||
f"Land: {values['customer_country']}" if values["customer_country"] else "",
|
||||
f"Mobil: {values['customer_mobile']}" if values["customer_mobile"] else "",
|
||||
f"Website: {values['customer_website']}" if values["customer_website"] else "",
|
||||
f"USt-ID: {values['customer_vat_id']}" if values["customer_vat_id"] else "",
|
||||
]
|
||||
if item
|
||||
)
|
||||
first_last = join_parts(values["contact_first_name"], values["contact_last_name"])
|
||||
full_name = values["contact_full_name"] or first_last
|
||||
return {
|
||||
"customer": {
|
||||
"source_system": SOURCE_SYSTEM if values["customer_number"] else None,
|
||||
"external_id": values["customer_number"] or None,
|
||||
"name": values["customer_name"],
|
||||
"street": join_parts(values["customer_street"], values["customer_house_number"]),
|
||||
"postal_code": values["customer_postal_code"],
|
||||
"city": values["customer_city"],
|
||||
"phone": values["customer_phone"] or values["customer_mobile"],
|
||||
"email": values["customer_email"],
|
||||
"notes": customer_notes,
|
||||
},
|
||||
"location": {
|
||||
"name": values["location_name"] or "Hauptstandort",
|
||||
"street": join_parts(values["location_street"], values["location_house_number"]) or join_parts(values["customer_street"], values["customer_house_number"]),
|
||||
"postal_code": values["location_postal_code"] or values["customer_postal_code"],
|
||||
"city": values["location_city"] or values["customer_city"],
|
||||
},
|
||||
"contact": {
|
||||
"full_name": full_name,
|
||||
"function": values["contact_function"],
|
||||
"email": values["contact_email"],
|
||||
"phone": values["contact_phone"] or values["contact_mobile"],
|
||||
"notes": values["contact_salutation"],
|
||||
},
|
||||
}
|
||||
|
||||
def _validate_values(self, values: dict[str, str]) -> list[str]:
|
||||
errors = []
|
||||
if not values["customer_number"] and not values["customer_name"]:
|
||||
errors.append("Kundennummer oder Firmenname fehlt.")
|
||||
for label, value in [("Kunden-E-Mail", values["customer_email"]), ("Ansprechpartner-E-Mail", values["contact_email"])]:
|
||||
if value:
|
||||
try:
|
||||
EMAIL_ADAPTER.validate_python(value)
|
||||
except ValidationError:
|
||||
errors.append(f"{label} ist ungültig.")
|
||||
return errors
|
||||
|
||||
def _find_matches(self, customer: dict) -> dict[str, Customer | None]:
|
||||
external = None
|
||||
if customer.get("external_id"):
|
||||
external = self.session.scalar(
|
||||
select(Customer).where(
|
||||
Customer.source_system == SOURCE_SYSTEM,
|
||||
Customer.external_id == customer["external_id"],
|
||||
)
|
||||
)
|
||||
name = customer.get("name")
|
||||
postal_code = customer.get("postal_code")
|
||||
city = customer.get("city")
|
||||
email = customer.get("email")
|
||||
return {
|
||||
"external_id": external,
|
||||
"name_postal_code": self.session.scalar(select(Customer).where(func.lower(Customer.name) == name.lower(), Customer.postal_code == postal_code)) if name and postal_code else None,
|
||||
"name_city": self.session.scalar(select(Customer).where(func.lower(Customer.name) == name.lower(), func.lower(Customer.city) == city.lower())) if name and city else None,
|
||||
"email": self.session.scalar(select(Customer).where(func.lower(Customer.email) == email.lower())) if email else None,
|
||||
}
|
||||
|
||||
def _allowed_actions(self, action: str, has_external_match: bool) -> list[str]:
|
||||
if action == "ERROR":
|
||||
return ["ERROR"]
|
||||
if has_external_match:
|
||||
return ["BESTEHENDEN_AKTUALISIEREN", "UEBERSPRINGEN"]
|
||||
return ["NEU_ANLEGEN", "UEBERSPRINGEN"]
|
||||
|
||||
def _customer_ref(self, customer: Customer) -> dict:
|
||||
return {"id": customer.id, "name": customer.name, "external_id": customer.external_id, "postal_code": customer.postal_code, "city": customer.city}
|
||||
|
||||
def _apply_row(self, row: dict, action: str, ignore_empty_values: bool) -> dict:
|
||||
if action in {"UEBERSPRINGEN", "ERROR"}:
|
||||
return {"skipped_rows": 1 if action == "UEBERSPRINGEN" else 0, "error_rows": 1 if action == "ERROR" else 0, "result": "ÜBERSPRUNGEN" if action == "UEBERSPRINGEN" else "FEHLER", "message": row["message"]}
|
||||
customer_data = row["recognized"]["customer"]
|
||||
matches = self._find_matches(customer_data)
|
||||
customer = matches["external_id"]
|
||||
created_customer = False
|
||||
if action == "BESTEHENDEN_AKTUALISIEREN":
|
||||
if customer is None:
|
||||
raise ValueError("Aktualisierung ist nur mit eindeutiger Kundennummer möglich.")
|
||||
self._update_customer(customer, customer_data, ignore_empty_values)
|
||||
else:
|
||||
if customer is not None:
|
||||
raise ValueError("Kunde mit dieser Kundennummer existiert bereits.")
|
||||
customer = Customer(customer_type=CustomerType.practice, name=customer_data["name"] or customer_data["external_id"])
|
||||
self._update_customer(customer, customer_data, False)
|
||||
self.session.add(customer)
|
||||
self.session.flush()
|
||||
created_customer = True
|
||||
created_location = self._ensure_location(customer, row["recognized"]["location"])
|
||||
created_contact = self._ensure_contact(customer, row["recognized"]["contact"])
|
||||
self.session.flush()
|
||||
return {
|
||||
"created_customers": 1 if created_customer else 0,
|
||||
"updated_customers": 0 if created_customer else 1,
|
||||
"created_locations": 1 if created_location else 0,
|
||||
"created_contacts": 1 if created_contact else 0,
|
||||
"result": "ERFOLGREICH",
|
||||
"message": "Kunde angelegt" if created_customer else "Kunde aktualisiert",
|
||||
}
|
||||
|
||||
def _update_customer(self, customer: Customer, data: dict, ignore_empty_values: bool) -> None:
|
||||
for key in ["source_system", "external_id", "name", "street", "postal_code", "city", "phone", "email", "notes"]:
|
||||
value = data.get(key)
|
||||
if ignore_empty_values and value in (None, ""):
|
||||
continue
|
||||
setattr(customer, key, value or None)
|
||||
|
||||
def _ensure_location(self, customer: Customer, data: dict) -> bool:
|
||||
if not any(data.get(key) for key in ["name", "street", "postal_code", "city"]):
|
||||
return False
|
||||
existing = self.session.scalar(
|
||||
select(Location).where(
|
||||
Location.customer_id == customer.id,
|
||||
func.lower(Location.name) == data["name"].lower(),
|
||||
)
|
||||
)
|
||||
if existing:
|
||||
return False
|
||||
self.session.add(Location(customer_id=customer.id, **{key: value or None for key, value in data.items()}))
|
||||
return True
|
||||
|
||||
def _ensure_contact(self, customer: Customer, data: dict) -> bool:
|
||||
if not data.get("full_name"):
|
||||
return False
|
||||
existing = self.session.scalar(
|
||||
select(Contact).where(
|
||||
Contact.customer_id == customer.id,
|
||||
func.lower(Contact.full_name) == data["full_name"].lower(),
|
||||
)
|
||||
)
|
||||
if existing:
|
||||
return False
|
||||
self.session.add(Contact(customer_id=customer.id, **{key: value or None for key, value in data.items()}))
|
||||
return True
|
||||
|
||||
def _summary(self, rows: list[dict]) -> dict:
|
||||
return {
|
||||
"total": len(rows),
|
||||
"new": sum(1 for row in rows if row["action"] == "NEU_ANLEGEN"),
|
||||
"update": sum(1 for row in rows if row["action"] == "BESTEHENDEN_AKTUALISIEREN"),
|
||||
"duplicates": sum(1 for row in rows if row["action"] == "UEBERSPRINGEN" and row["matches"]),
|
||||
"errors": sum(1 for row in rows if row["action"] == "ERROR"),
|
||||
"skip": sum(1 for row in rows if row["action"] == "UEBERSPRINGEN"),
|
||||
}
|
||||
|
||||
|
||||
def parse_json_object(value: str | None, fallback: dict | None = None) -> dict:
|
||||
if not value:
|
||||
return fallback or {}
|
||||
parsed = json.loads(value)
|
||||
if not isinstance(parsed, dict):
|
||||
raise ValueError("JSON-Daten müssen ein Objekt sein.")
|
||||
return parsed
|
||||
|
|
@ -6,7 +6,7 @@ from datetime import date
|
|||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from sqlalchemy import create_engine, select
|
||||
from sqlalchemy import create_engine, func, select
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.db.base import Base
|
||||
|
|
@ -32,6 +32,7 @@ from app.modules.orion.result import validation_result_box, validation_result_pr
|
|||
from app.modules.orion.template_service import REPORT_SECTIONS, ReportTemplateService
|
||||
from app.modules.helios.service import HeliosImportService
|
||||
from app.services.report_settings import OrionReportSettingsService
|
||||
from app.services.customer_import import CustomerImportService
|
||||
|
||||
|
||||
def session() -> Session:
|
||||
|
|
@ -1564,3 +1565,113 @@ def test_orion_report_settings_affect_html_without_removing_summary_result(tmp_p
|
|||
assert '<header class="report-header"' not in html
|
||||
assert '<footer class="report-footer"' not in html
|
||||
assert html.count("result-box") >= 1
|
||||
|
||||
|
||||
def xlsx_bytes(headers: list[str], rows: list[list[str]]) -> bytes:
|
||||
from zipfile import ZIP_DEFLATED, ZipFile
|
||||
import io
|
||||
|
||||
def cell_ref(index: int, row_number: int) -> str:
|
||||
return f"{chr(65 + index)}{row_number}"
|
||||
|
||||
sheet_rows = []
|
||||
for row_number, row in enumerate([headers, *rows], start=1):
|
||||
cells = "".join(
|
||||
f'<c r="{cell_ref(index, row_number)}" t="inlineStr"><is><t>{value}</t></is></c>'
|
||||
for index, value in enumerate(row)
|
||||
)
|
||||
sheet_rows.append(f'<row r="{row_number}">{cells}</row>')
|
||||
buffer = io.BytesIO()
|
||||
with ZipFile(buffer, "w", ZIP_DEFLATED) as archive:
|
||||
archive.writestr("[Content_Types].xml", '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml"/></Types>')
|
||||
archive.writestr("xl/workbook.xml", '<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><sheets><sheet name="Tabelle1" sheetId="1" r:id="rId1" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/></sheets></workbook>')
|
||||
archive.writestr("xl/worksheets/sheet1.xml", f'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><sheetData>{"".join(sheet_rows)}</sheetData></worksheet>')
|
||||
return buffer.getvalue()
|
||||
|
||||
|
||||
def test_customer_import_csv_semicolon_preview_and_confirm():
|
||||
db = session()
|
||||
admin = seed_admin(db)
|
||||
content = "Kundennr;Firma;PLZ;Ort;E-Mail;Ansprechpartner\nD4-1;Praxis Müller;10115;Berlin;info@praxis.de;Max Mustermann\n".encode("utf-8-sig")
|
||||
|
||||
service = CustomerImportService(db)
|
||||
preview = service.preview("desk4.csv", content)
|
||||
|
||||
assert preview["columns"] == ["Kundennr", "Firma", "PLZ", "Ort", "E-Mail", "Ansprechpartner"]
|
||||
assert preview["mapping"]["Kundennr"] == "customer_number"
|
||||
assert preview["rows"][0]["action"] == "NEU_ANLEGEN"
|
||||
assert db.scalar(select(func.count()).select_from(Customer)) == 0
|
||||
|
||||
result = service.confirm("desk4.csv", content, preview["mapping"], {}, True, admin)
|
||||
|
||||
assert result["summary"]["created_customers"] == 1
|
||||
assert result["summary"]["created_locations"] == 1
|
||||
assert result["summary"]["created_contacts"] == 1
|
||||
customer = db.scalar(select(Customer).where(Customer.external_id == "D4-1"))
|
||||
assert customer is not None
|
||||
assert customer.source_system == "desk4"
|
||||
assert customer.name == "Praxis Müller"
|
||||
|
||||
|
||||
def test_customer_import_csv_comma_existing_customer_and_ignore_empty_values():
|
||||
db = session()
|
||||
admin = seed_admin(db)
|
||||
existing = Customer(
|
||||
customer_type=CustomerType.practice,
|
||||
source_system="desk4",
|
||||
external_id="D4-2",
|
||||
name="Alt",
|
||||
email="alt@example.de",
|
||||
)
|
||||
db.add(existing)
|
||||
db.commit()
|
||||
content = "Kundennr,Firma,E-Mail\nD4-2,Neu,\n".encode()
|
||||
service = CustomerImportService(db)
|
||||
preview = service.preview("desk4.csv", content)
|
||||
|
||||
assert preview["rows"][0]["action"] == "BESTEHENDEN_AKTUALISIEREN"
|
||||
service.confirm("desk4.csv", content, preview["mapping"], {}, True, admin)
|
||||
db.refresh(existing)
|
||||
|
||||
assert existing.name == "Neu"
|
||||
assert existing.email == "alt@example.de"
|
||||
|
||||
|
||||
def test_customer_import_detects_possible_duplicate_and_invalid_email():
|
||||
db = session()
|
||||
db.add(Customer(customer_type=CustomerType.practice, name="Praxis A", postal_code="12345"))
|
||||
db.commit()
|
||||
service = CustomerImportService(db)
|
||||
|
||||
duplicate = service.preview("desk4.csv", "Firma;PLZ\nPraxis A;12345\n".encode())
|
||||
invalid = service.preview("desk4.csv", "Firma;E-Mail\nPraxis B;nicht-mail\n".encode())
|
||||
|
||||
assert duplicate["rows"][0]["action"] == "UEBERSPRINGEN"
|
||||
assert duplicate["summary"]["duplicates"] == 1
|
||||
assert invalid["rows"][0]["action"] == "ERROR"
|
||||
assert "ungültig" in invalid["rows"][0]["errors"][0]
|
||||
|
||||
|
||||
def test_customer_import_xlsx_and_invalid_files():
|
||||
db = session()
|
||||
service = CustomerImportService(db)
|
||||
preview = service.preview(
|
||||
"desk4.xlsx",
|
||||
xlsx_bytes(["Kundennr", "Firma", "Ort"], [["X-1", "Praxis XLSX", "Hamburg"]]),
|
||||
)
|
||||
|
||||
assert preview["rows"][0]["recognized"]["customer"]["name"] == "Praxis XLSX"
|
||||
with pytest.raises(ValueError):
|
||||
service.preview("desk4.txt", b"Firma\nTest")
|
||||
with pytest.raises(ValueError):
|
||||
service.preview("desk4.csv", b"")
|
||||
|
||||
|
||||
def test_customer_import_missing_required_mapping_is_error():
|
||||
db = session()
|
||||
service = CustomerImportService(db)
|
||||
content = "Telefon\n123\n".encode()
|
||||
preview = service.preview("desk4.csv", content, {"Telefon": "customer_phone"})
|
||||
|
||||
assert preview["rows"][0]["action"] == "ERROR"
|
||||
assert "Kundennummer oder Firmenname fehlt." in preview["rows"][0]["errors"]
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
T1Sq4P6mWswk2NfmBZrTz
|
||||
MO_FrTIQMTyIgUY4at_vj
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"/(app)/contacts/page": "/contacts",
|
||||
"/(app)/customers/import/page": "/customers/import",
|
||||
"/(app)/customers/page": "/customers",
|
||||
"/(app)/dashboard/page": "/dashboard",
|
||||
"/(app)/devices/page": "/devices",
|
||||
|
|
@ -17,6 +18,8 @@
|
|||
"/(auth)/login/page": "/login",
|
||||
"/_global-error/page": "/_global-error",
|
||||
"/_not-found/page": "/_not-found",
|
||||
"/api/customer-imports/confirm/route": "/api/customer-imports/confirm",
|
||||
"/api/customer-imports/preview/route": "/api/customer-imports/preview",
|
||||
"/api/login/route": "/api/login",
|
||||
"/api/logout/route": "/api/logout",
|
||||
"/api/me/route": "/api/me",
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@
|
|||
"static/chunks/0cz1d0mv5g_q7.js"
|
||||
],
|
||||
"lowPriorityFiles": [
|
||||
"static/T1Sq4P6mWswk2NfmBZrTz/_buildManifest.js",
|
||||
"static/T1Sq4P6mWswk2NfmBZrTz/_ssgManifest.js",
|
||||
"static/T1Sq4P6mWswk2NfmBZrTz/_clientMiddlewareManifest.js"
|
||||
"static/MO_FrTIQMTyIgUY4at_vj/_buildManifest.js",
|
||||
"static/MO_FrTIQMTyIgUY4at_vj/_ssgManifest.js",
|
||||
"static/MO_FrTIQMTyIgUY4at_vj/_clientMiddlewareManifest.js"
|
||||
],
|
||||
"rootMainFiles": [
|
||||
"static/chunks/2zjueh7t2vecu.js",
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,16 +1,16 @@
|
|||
[
|
||||
{
|
||||
"route": "/validations/[id]/edit",
|
||||
"firstLoadUncompressedJsBytes": 751890,
|
||||
"firstLoadUncompressedJsBytes": 752325,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/1_3g0o_0cezme.js",
|
||||
".next/static/chunks/3ltfzh6dxauii.js",
|
||||
".next/static/chunks/2975f5i-zcw63.js",
|
||||
".next/static/chunks/43zs1l-r-4ddz.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": 751722,
|
||||
"firstLoadUncompressedJsBytes": 752157,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/1diubaxj1tclp.js",
|
||||
".next/static/chunks/3ltfzh6dxauii.js",
|
||||
".next/static/chunks/2975f5i-zcw63.js",
|
||||
".next/static/chunks/43zs1l-r-4ddz.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
".next/static/chunks/30wdrt2uam-rs.js",
|
||||
".next/static/chunks/0n-zjr76qg7uq.js",
|
||||
|
|
@ -41,13 +41,13 @@
|
|||
},
|
||||
{
|
||||
"route": "/users",
|
||||
"firstLoadUncompressedJsBytes": 734279,
|
||||
"firstLoadUncompressedJsBytes": 734706,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/30zpouyx32v4r.js",
|
||||
".next/static/chunks/3ltfzh6dxauii.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
|
|
@ -60,13 +60,13 @@
|
|||
},
|
||||
{
|
||||
"route": "/devices",
|
||||
"firstLoadUncompressedJsBytes": 729726,
|
||||
"firstLoadUncompressedJsBytes": 730153,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/02io6dnnqj4wa.js",
|
||||
".next/static/chunks/1ynnqp1y5f44o.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
|
|
@ -78,14 +78,33 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"route": "/equipment",
|
||||
"firstLoadUncompressedJsBytes": 729089,
|
||||
"route": "/customers",
|
||||
"firstLoadUncompressedJsBytes": 729550,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/0lz93ryxnzgoq.js",
|
||||
".next/static/chunks/1ynnqp1y5f44o.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": "/equipment",
|
||||
"firstLoadUncompressedJsBytes": 729516,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/34frrgl3b8scb.js",
|
||||
".next/static/chunks/1ynnqp1y5f44o.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
|
|
@ -96,34 +115,15 @@
|
|||
".next/static/chunks/turbopack-06glzjf65-whj.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"route": "/customers",
|
||||
"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/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",
|
||||
".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": "/contacts",
|
||||
"firstLoadUncompressedJsBytes": 728537,
|
||||
"firstLoadUncompressedJsBytes": 728964,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/0-krs176t54dw.js",
|
||||
".next/static/chunks/1ynnqp1y5f44o.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
|
|
@ -136,13 +136,13 @@
|
|||
},
|
||||
{
|
||||
"route": "/locations",
|
||||
"firstLoadUncompressedJsBytes": 728532,
|
||||
"firstLoadUncompressedJsBytes": 728959,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/1m4and-haqgqz.js",
|
||||
".next/static/chunks/1ynnqp1y5f44o.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
|
|
@ -155,13 +155,13 @@
|
|||
},
|
||||
{
|
||||
"route": "/profile/security",
|
||||
"firstLoadUncompressedJsBytes": 711271,
|
||||
"firstLoadUncompressedJsBytes": 711698,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/19-dmj7e3s4r_.js",
|
||||
".next/static/chunks/3ltfzh6dxauii.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
|
|
@ -174,14 +174,14 @@
|
|||
},
|
||||
{
|
||||
"route": "/validations",
|
||||
"firstLoadUncompressedJsBytes": 691299,
|
||||
"firstLoadUncompressedJsBytes": 691641,
|
||||
"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/0ti1a2yw9pft4.js",
|
||||
".next/static/chunks/05xkqica3e3uw.js",
|
||||
".next/static/chunks/41jx6c5jfr1py.js",
|
||||
".next/static/chunks/26jh-4z-ujjfh.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
".next/static/chunks/30wdrt2uam-rs.js",
|
||||
|
|
@ -211,13 +211,13 @@
|
|||
},
|
||||
{
|
||||
"route": "/validations/quick-start",
|
||||
"firstLoadUncompressedJsBytes": 636173,
|
||||
"firstLoadUncompressedJsBytes": 636600,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/0t7m1oc6w_u-y.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
".next/static/chunks/30wdrt2uam-rs.js",
|
||||
|
|
@ -229,14 +229,14 @@
|
|||
},
|
||||
{
|
||||
"route": "/settings/report-layout",
|
||||
"firstLoadUncompressedJsBytes": 634119,
|
||||
"firstLoadUncompressedJsBytes": 634546,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/3cjefmw3itjkw.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
".next/static/chunks/30wdrt2uam-rs.js",
|
||||
".next/static/chunks/0n-zjr76qg7uq.js",
|
||||
|
|
@ -247,14 +247,32 @@
|
|||
},
|
||||
{
|
||||
"route": "/dashboard",
|
||||
"firstLoadUncompressedJsBytes": 630511,
|
||||
"firstLoadUncompressedJsBytes": 630956,
|
||||
"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/2toi33zq_ydim.js",
|
||||
".next/static/chunks/05xkqica3e3uw.js",
|
||||
".next/static/chunks/2c7prz40q05zp.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": "/customers/import",
|
||||
"firstLoadUncompressedJsBytes": 620618,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/0o13c7nb3wcya.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
".next/static/chunks/30wdrt2uam-rs.js",
|
||||
".next/static/chunks/0n-zjr76qg7uq.js",
|
||||
|
|
@ -265,13 +283,13 @@
|
|||
},
|
||||
{
|
||||
"route": "/validations/[id]/preview",
|
||||
"firstLoadUncompressedJsBytes": 612846,
|
||||
"firstLoadUncompressedJsBytes": 613273,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/3bmssrj1g6gvs.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
".next/static/chunks/30wdrt2uam-rs.js",
|
||||
|
|
@ -283,13 +301,13 @@
|
|||
},
|
||||
{
|
||||
"route": "/documents",
|
||||
"firstLoadUncompressedJsBytes": 608772,
|
||||
"firstLoadUncompressedJsBytes": 609199,
|
||||
"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/05xkqica3e3uw.js",
|
||||
".next/static/chunks/2zjueh7t2vecu.js",
|
||||
".next/static/chunks/30wdrt2uam-rs.js",
|
||||
".next/static/chunks/0n-zjr76qg7uq.js",
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
"devFiles": [],
|
||||
"polyfillFiles": [],
|
||||
"lowPriorityFiles": [
|
||||
"static/T1Sq4P6mWswk2NfmBZrTz/_buildManifest.js",
|
||||
"static/T1Sq4P6mWswk2NfmBZrTz/_ssgManifest.js",
|
||||
"static/T1Sq4P6mWswk2NfmBZrTz/_clientMiddlewareManifest.js"
|
||||
"static/MO_FrTIQMTyIgUY4at_vj/_buildManifest.js",
|
||||
"static/MO_FrTIQMTyIgUY4at_vj/_ssgManifest.js",
|
||||
"static/MO_FrTIQMTyIgUY4at_vj/_clientMiddlewareManifest.js"
|
||||
],
|
||||
"rootMainFiles": []
|
||||
}
|
||||
|
|
@ -122,6 +122,30 @@
|
|||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
},
|
||||
"/customers/import": {
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/customers/import",
|
||||
"dataRoute": "/customers/import.rsc",
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
},
|
||||
"/dashboard": {
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -66,6 +66,18 @@
|
|||
"routeKeys": {},
|
||||
"namedRegex": "^/_not\\-found(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/api/customer-imports/confirm",
|
||||
"regex": "^/api/customer\\-imports/confirm(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/api/customer\\-imports/confirm(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/api/customer-imports/preview",
|
||||
"regex": "^/api/customer\\-imports/preview(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/api/customer\\-imports/preview(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/api/login",
|
||||
"regex": "^/api/login(?:/)?$",
|
||||
|
|
@ -108,6 +120,12 @@
|
|||
"routeKeys": {},
|
||||
"namedRegex": "^/customers(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/customers/import",
|
||||
"regex": "^/customers/import(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/customers/import(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/dashboard",
|
||||
"regex": "^/dashboard(?:/)?$",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"/(app)/contacts/page": "app/(app)/contacts/page.js",
|
||||
"/(app)/customers/import/page": "app/(app)/customers/import/page.js",
|
||||
"/(app)/customers/page": "app/(app)/customers/page.js",
|
||||
"/(app)/dashboard/page": "app/(app)/dashboard/page.js",
|
||||
"/(app)/devices/page": "app/(app)/devices/page.js",
|
||||
|
|
@ -17,6 +18,8 @@
|
|||
"/(auth)/login/page": "app/(auth)/login/page.js",
|
||||
"/_global-error/page": "app/_global-error/page.js",
|
||||
"/_not-found/page": "app/_not-found/page.js",
|
||||
"/api/customer-imports/confirm/route": "app/api/customer-imports/confirm/route.js",
|
||||
"/api/customer-imports/preview/route": "app/api/customer-imports/preview/route.js",
|
||||
"/api/login/route": "app/api/login/route.js",
|
||||
"/api/logout/route": "app/api/logout/route.js",
|
||||
"/api/me/route": "app/api/me/route.js",
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,16 @@
|
|||
var R=require("../../../../chunks/ssr/[turbopack]_runtime.js")("server/app/(app)/customers/import/page.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__1ncuiz7._.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_0npvcom.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)_customers_import_page_actions_20ppyww.js")
|
||||
R.m(98158)
|
||||
module.exports=R.m(98158).exports
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"/(app)/customers/import/page": "app/(app)/customers/import/page.js"
|
||||
}
|
||||
|
|
@ -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": []
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"pages": {},
|
||||
"app": {},
|
||||
"appUsingSizeAdjust": false,
|
||||
"pagesUsingSizeAdjust": false
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"node": {},
|
||||
"edge": {}
|
||||
}
|
||||
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
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
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
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
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
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
File diff suppressed because one or more lines are too long
|
|
@ -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 couldn’t 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 couldn’t 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"}
|
||||
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 couldn’t 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 couldn’t 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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
d:[]
|
||||
7:"$Wd"
|
||||
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
|
|
|
|||
|
|
@ -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 couldn’t 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 couldn’t 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"}
|
||||
0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t 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 couldn’t 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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
4:null
|
||||
|
|
|
|||
|
|
@ -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 couldn’t 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 couldn’t 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"}
|
||||
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 couldn’t 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 couldn’t 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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
d:[]
|
||||
7:"$Wd"
|
||||
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
|
|
|
|||
|
|
@ -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":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -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":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -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/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"}
|
||||
:HL["/_next/static/chunks/3yh08fx1c3mlz.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/3yh08fx1c3mlz.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/3yh08fx1c3mlz.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
10:[]
|
||||
a:"$W10"
|
||||
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
|
|
|
|||
|
|
@ -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/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"}
|
||||
:HL["/_next/static/chunks/3yh08fx1c3mlz.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/3yh08fx1c3mlz.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/3yh08fx1c3mlz.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
10:[]
|
||||
a:"$W10"
|
||||
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
|
|
|
|||
|
|
@ -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":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -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/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"}
|
||||
:HL["/_next/static/chunks/3yh08fx1c3mlz.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/3yh08fx1c3mlz.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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -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":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -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":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
6:null
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
: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"}
|
||||
:HL["/_next/static/chunks/3yh08fx1c3mlz.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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,7 @@
|
|||
var R=require("../../../../chunks/[turbopack]_runtime.js")("server/app/api/customer-imports/confirm/route.js")
|
||||
R.c("server/chunks/[root-of-the-server]__1cid3cf._.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_customer-imports_confirm_route_actions_1-98oae.js")
|
||||
R.m(40833)
|
||||
module.exports=R.m(40833).exports
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"/api/customer-imports/confirm/route": "app/api/customer-imports/confirm/route.js"
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"polyfillFiles": [],
|
||||
"lowPriorityFiles": [],
|
||||
"rootMainFiles": [],
|
||||
"pages": {},
|
||||
"ampFirstPages": []
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"node": {},
|
||||
"edge": {}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
||||
globalThis.__RSC_MANIFEST["/api/customer-imports/confirm/route"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"rscModuleMapping":{},"edgeRscModuleMapping":{},"entryCSSFiles":{},"entryJSFiles":{}};
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
var R=require("../../../../chunks/[turbopack]_runtime.js")("server/app/api/customer-imports/preview/route.js")
|
||||
R.c("server/chunks/[root-of-the-server]__0r7ghc3._.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_customer-imports_preview_route_actions_1twf800.js")
|
||||
R.m(56452)
|
||||
module.exports=R.m(56452).exports
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"/api/customer-imports/preview/route": "app/api/customer-imports/preview/route.js"
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"polyfillFiles": [],
|
||||
"lowPriorityFiles": [],
|
||||
"rootMainFiles": [],
|
||||
"pages": {},
|
||||
"ampFirstPages": []
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"node": {},
|
||||
"edge": {}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
||||
globalThis.__RSC_MANIFEST["/api/customer-imports/preview/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
|
|
@ -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/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"]
|
||||
2:I[28779,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/05xkqica3e3uw.js"],"AuthProvider"]
|
||||
3:I[24487,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/05xkqica3e3uw.js"],"QueryProvider"]
|
||||
4:I[48026,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/05xkqica3e3uw.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/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"}
|
||||
0:{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/_next/static/chunks/05xkqica3e3uw.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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -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":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
1:"$Sreact.fragment"
|
||||
2:I[47257,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ClientPageRoot"]
|
||||
3:I[44838,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3_bqwdscuc1c8.js","/_next/static/chunks/0-krs176t54dw.js","/_next/static/chunks/1ynnqp1y5f44o.js"],"default"]
|
||||
3:I[44838,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/05xkqica3e3uw.js","/_next/static/chunks/0-krs176t54dw.js","/_next/static/chunks/1ynnqp1y5f44o.js"],"default"]
|
||||
6:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"OutletBoundary"]
|
||||
7:"$Sreact.suspense"
|
||||
0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0-krs176t54dw.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/1ynnqp1y5f44o.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0-krs176t54dw.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/1ynnqp1y5f44o.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
4:{}
|
||||
5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
|
||||
8:null
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -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":[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":[["$","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"}
|
||||
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":[["$","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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -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/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"}
|
||||
:HL["/_next/static/chunks/3yh08fx1c3mlz.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/3yh08fx1c3mlz.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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
:HL["/_next/static/chunks/33g7vuk7-89na.css","style"]
|
||||
0:{"tree":{"name":"","param":null,"prefetchHints":20,"slots":{"children":{"name":"(app)","param":null,"prefetchHints":0,"slots":{"children":{"name":"contacts","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
:HL["/_next/static/chunks/3yh08fx1c3mlz.css","style"]
|
||||
0:{"tree":{"name":"","param":null,"prefetchHints":20,"slots":{"children":{"name":"(app)","param":null,"prefetchHints":0,"slots":{"children":{"name":"contacts","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -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/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"]
|
||||
2:I[28779,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/05xkqica3e3uw.js"],"AuthProvider"]
|
||||
3:I[24487,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/05xkqica3e3uw.js"],"QueryProvider"]
|
||||
4:I[48026,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/05xkqica3e3uw.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/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"}
|
||||
0:{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/_next/static/chunks/05xkqica3e3uw.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":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -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":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
1:"$Sreact.fragment"
|
||||
2:I[47257,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ClientPageRoot"]
|
||||
3:I[15495,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/3_bqwdscuc1c8.js","/_next/static/chunks/2-nz3xcpe_pw_.js","/_next/static/chunks/1ynnqp1y5f44o.js"],"default"]
|
||||
3:I[15495,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/05xkqica3e3uw.js","/_next/static/chunks/0lz93ryxnzgoq.js","/_next/static/chunks/1ynnqp1y5f44o.js"],"default"]
|
||||
6:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"OutletBoundary"]
|
||||
7:"$Sreact.suspense"
|
||||
0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/2-nz3xcpe_pw_.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/1ynnqp1y5f44o.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"T1Sq4P6mWswk2NfmBZrTz"}
|
||||
0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0lz93ryxnzgoq.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/1ynnqp1y5f44o.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"MO_FrTIQMTyIgUY4at_vj"}
|
||||
4:{}
|
||||
5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
|
||||
8:null
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue