feat: Refine PDF module labels and styling, and add a divider to the sitemap module.
This commit is contained in:
@@ -360,15 +360,16 @@ ${tone}
|
||||
|
||||
### OBJECTIVE:
|
||||
1. **briefingSummary**: Summarize the project's essence for the CUSTOMER.
|
||||
- FOLLOW PRINCIPLE 1 & 5: Clear, direct, no marketing fluff.
|
||||
- **MIRROR TEST**: Capture unique customer "hooks" or personality (e.g., if they mention an Instagram account or a specific hobby/preference that influences the project vibe).
|
||||
- Focus 100% on the BRIEFING (TRUTH SOURCE). Ignore the CRAWL context for this narrative.
|
||||
- Keep it 2-3 professional, direct sentences.
|
||||
- FOLLOW PRINCIPLE 1, 5 & 6: Clear, direct, no marketing fluff.
|
||||
- **TONE**: Write naturally in the Ich-Form. Avoid starting every sentence with "Ich".
|
||||
- **MIRROR TEST**: Capture unique customer "hooks" or personality.
|
||||
- Focus 100% on the BRIEFING (TRUTH SOURCE).
|
||||
2. **designVision**: A solid, grounded, and high-quality description of the look & feel.
|
||||
- FOLLOW PRINCIPLE 1 & 3: Fact-based, professional, high density of information.
|
||||
- **BESPOKE ELEMENTS**: If the client mentions specific layout ideas (e.g., "Timeline", "Grid", "Industrial Tiles"), incorporate these as strategic decisions.
|
||||
- **NO ARROGANCE**: Eliminate all "high-end", "world-class", "dominance" language. Be humble and precise.
|
||||
- **SIMPLE & CLEAR**: Use simple German. No buzzwords. "Solid Industrial Design" instead of "Technocratic Sovereignty".
|
||||
- FOLLOW PRINCIPLE 1, 3 & 6: Fact-based, professional, high density of information.
|
||||
- **TONE**: Natural Ich-Form. Focus on the execution and technical decisions.
|
||||
- **BESPOKE ELEMENTS**: If the client mentions specific layout ideas, incorporate these.
|
||||
- **NO ARROGANCE**: Eliminate all "high-end", "world-class" language.
|
||||
- **SIMPLE & CLEAR**: Use simple German. No buzzwords.
|
||||
- 3-5 sentences of deep analysis.
|
||||
|
||||
### OUTPUT FORMAT (Strict JSON):
|
||||
@@ -421,34 +422,38 @@ You are a Senior Solution Architect. Your goal is ABSOLUTE TRANSPARENCY for the
|
||||
Each position in the quote must be perfectly justified and detailed.
|
||||
|
||||
### POSITION TITLES:
|
||||
"Basis Website Setup", "Individuelle Seiten", "System-Module", "Logik-Funktionen", "Schnittstellen (API)", "Inhaltsverwaltung (CMS)".
|
||||
"Basis Website Setup", "Individuelle Seiten", "System-Module", "Logik-Funktionen", "Visuelle Inszenierung", "Komplexe Interaktion", "Schnittstellen (API)", "Inhaltsverwaltung (CMS)", "Sorglos-Betrieb (Hosting)".
|
||||
|
||||
### MAPPING RULES (STRICTLY BASED ON PRICING.MD):
|
||||
- **Basis Website Setup**: Includes Infrastructure, Hosting Setup, Basic SEO, Cookie-Consent (!), Design-Template.
|
||||
- **System-Module (Features)**: ONLY closed data systems: [Blog, News, Products, Jobs, Cases/References, Events].
|
||||
- NEVER put "Video Player", "Cookies", "Animations" here.
|
||||
- **Logik-Funktionen**: Functional logic like: Search, Filter, Forms, PDF-Export, Multi-lang.
|
||||
- **Schnittstellen (API)**: REAL Data Syncs (CRM, ERP). DO NOT include Tracking, Google Maps, or simple Video embedding here. Basic embedding is "Basis Website Setup".
|
||||
- **Sorglos-Betrieb (Hosting)**: Hosting & Maintenance.
|
||||
- **Basis Website Setup**: Infrastructure, Hosting, SEO-Basics, Cookie-Consent, Staging/Production.
|
||||
- **Individuelle Seiten**: Layout and structure for specific pages (e.g. Home, Services).
|
||||
- **System-Module (Features)**: Closed systems with data structures (Blog, News, Products, Jobs, References).
|
||||
- **Logik-Funktionen**: Pure logic (Search, Filter, Forms, PDF-Export, Multi-lang).
|
||||
- **Visuelle Inszenierung**: Hero-Story, visual flows, Scroll-effects.
|
||||
- **Komplexe Interaktion**: UI-experiences like Configurators or multi-step processes.
|
||||
- **Schnittstellen (API)**: REAL Data Syncs (CRM, ERP, Stripe).
|
||||
- **Inhaltsverwaltung (CMS)**: Setup and mapping for Headless CMS.
|
||||
- **Sorglos-Betrieb (Hosting)**: Hosting, Updates, Backups.
|
||||
|
||||
### RULES FOR positionDescriptions (STRICT):
|
||||
1. **ZERO GENERALIZATION**: Do NOT say "Verschiedene Funktionen".
|
||||
2. **ITEMIZED SYNTHESIS**: Mention EVERY component selected in Pass 1.
|
||||
3. **HARD SPECIFICS**: Preserve technical details from the briefing (e.g., "110 kV", "HDD-Bohrtechnik", specific industry standards).
|
||||
4. **BREVITY & DENSITY**: Max 1-2 short sentences. Focus on TASKS not RESULTS.
|
||||
5. **STYLE**: Direct, engineering-grade, no fluff.
|
||||
6. **LANGUAGE**: 100% GERMAN.
|
||||
1. **NO "ICH-FORM"**: Do NOT use "Ich" or "Mein". Lead with the action or component.
|
||||
2. **CONCISE & ITEM-BASED**: Use short, technical sentences. Focus on WHAT is delivered.
|
||||
3. **ZERO GENERALIZATION**: Do NOT say "Verschiedene Funktionen".
|
||||
4. **ITEMIZED SYNTHESIS**: Mention EVERY component selected in Pass 1.
|
||||
5. **HARD SPECIFICS**: Preserve technical details from the briefing (e.g., "110 kV", "HDD-Bohrtechnik").
|
||||
6. **STYLE**: Direct, engineering-grade, 100% GERMAN.
|
||||
7. **SPECIFIC - PAGES**: For "Individuelle Seiten", list the pages as a comma-separated list.
|
||||
8. **SPECIFIC - API**: Video Uploads, Google Maps, and Tracking are NOT APIs.
|
||||
9. **SPECIFIC - HOSTING**: Always append: "Inkl. 20GB Speicher. Auto-Erweiterung +10€/10GB."
|
||||
10. **SPECIFIC - LOGIC**: Describe the ACTUAL logic. NEVER use generic terms like "Erweiterte Formulare" or "Individuelle Formular-Logik".
|
||||
11. **STRICT KEYS**: Keys MUST be EXACTLY: "Basis Website Setup", "Individuelle Seiten", "System-Module", "Logik-Funktionen", "Schnittstellen (API)", "Inhaltsverwaltung (CMS)", "Sorglos-Betrieb (Hosting)".
|
||||
8. **SPECIFIC - HOSTING**: Always append: "Inkl. 20GB Speicher."
|
||||
9. **SPECIFIC - LOGIC**: Describe the ACTUAL logic. NEVER use generic terms.
|
||||
10. **STRICT KEYS**: Keys MUST be EXACTLY the ones defined in POSITION TITLES.
|
||||
|
||||
### EXAMPLES (FEW-SHOT):
|
||||
- **BAD**: "Individuelle Seiten für die Unternehmensdarstellung."
|
||||
- **GOOD**: "Erstellung der Seiten: Startseite (Video-Hero), Über uns (Timeline), Leistungen (110kV Montage), Kontakt."
|
||||
- **BAD**: "Anbindung von externen Systemen."
|
||||
- **GOOD**: "Native Integration von Google Maps zur Standortermittlung inkl. individueller Marker-Logik."
|
||||
- **BAD**: "Ich entwickle die Seiten: Startseite, Leistungen, Kontakt."
|
||||
- **GOOD**: "Erstellung der Seiten: Startseite (Video-Hero), Über uns (Timeline), Leistungen, Kontakt."
|
||||
- **BAD**: "Ich binde Google Maps an."
|
||||
- **GOOD**: "Native API-Integration von Google Maps mit individueller Standort-Visualisierung."
|
||||
- **BAD**: "Ich programmiere Scroll-Effekte."
|
||||
- **GOOD**: "Visuelle Inszenierung der Meilensteine durch Scroll-aktivierte Timeline-Elemente."
|
||||
|
||||
### FORBIDDEN PHRASES:
|
||||
- "Erweiterte Formulare", "Verschiedene Funktionen", "Allgemeine Logik", "Optimierte Darstellung", "Individuelle Formular-Logik".
|
||||
@@ -478,11 +483,20 @@ You are the "Industrial Critic". Your goal is to catch quality regressions and e
|
||||
Analyze the CURRENT_STATE against the BRIEFING_TRUTH.
|
||||
|
||||
### CRITICAL ERROR CHECKLIST (FAIL IF FOUND):
|
||||
1. **Placeholder Leakage**: Catch "null", "undefined", or generic strings like "Verschiedene Funktionen", "Erweiterte Formulare", "Individuelle Formular-Logik".
|
||||
2. **Detail Loss**: The user mentioned specific terms (e.g., "110 kV", "HDD", "Timeline", "Instagram"). Are they present in the positionDescriptions or sitemap? If not, ADD THEM.
|
||||
1. **Placeholder Leakage**: Catch "null", "undefined", or generic strings like "Verschiedene Funktionen", "Erweiterte Formulare".
|
||||
2. **Detail Loss**: The user mentioned specific terms. Are they present? If not, ADD THEM.
|
||||
3. **Consistency**: Ensure the count of pages in "Individuelle Seiten" matches the sitemap pages.
|
||||
4. **Deadlines**: Ensure relative dates (e.g., "April / Mai") are resolved to the year 2026.
|
||||
5. **Tone Drift**: Remove any marketing "fluff" or "sales-y" language. Maintain the "Industrial Design" persona.
|
||||
5. **TONE & WORDING FAILURE**:
|
||||
- FAIL if "Ich" or "Mein" is used in positionDescriptions.
|
||||
- FAIL if "wir" or "unser" is used anywhere.
|
||||
- FAIL if a sentence in briefingSummary is too long or marketing-heavy.
|
||||
- FAIL if "möglicherweise", "grundsätzlich", "in der Regel" is used.
|
||||
- FAIL if passive voice ("es wird") is used.
|
||||
6. **MAPPING FAILURE**:
|
||||
- FAIL if visual elements (Scroll-Effekte, Slider, Hover) are in "Logik-Funktionen". They MUST be in "Visuelle Inszenierung".
|
||||
- FAIL if multi-step forms or calculators are in "Logik-Funktionen". They MUST be in "Komplexe Interaktion".
|
||||
7. **PROMPT REWRITE**: If you find any of these errors, rewrite the field entirely to be 100% compliant.
|
||||
|
||||
### MISSION:
|
||||
Return updated fields ONLY. Specifically focus on hardening 'positionDescriptions', 'sitemap', and 'briefingSummary'.
|
||||
|
||||
@@ -130,6 +130,12 @@ export const pdfStyles = PDFStyleSheet.create({
|
||||
borderTopWidth: 0.5,
|
||||
borderTopColor: '#cbd5e1',
|
||||
},
|
||||
divider: {
|
||||
width: '100%',
|
||||
height: 1,
|
||||
backgroundColor: '#f1f5f9',
|
||||
marginVertical: 12,
|
||||
},
|
||||
// Atoms
|
||||
industrialListItem: {
|
||||
flexDirection: 'row',
|
||||
@@ -219,6 +225,10 @@ export const IndustrialCard = ({ title, children, style = {} }: { title: string;
|
||||
|
||||
export const FoldingMarks = () => (<><PDFView style={[pdfStyles.foldingMark, { top: 297.6 }]} fixed /><PDFView style={[pdfStyles.foldingMark, { top: 420.9, width: 15 }]} fixed /><PDFView style={[pdfStyles.foldingMark, { top: 595.3 }]} fixed /></>);
|
||||
|
||||
export const Divider = ({ style = {} }: { style?: any }) => (
|
||||
<PDFView style={[pdfStyles.divider, style]} />
|
||||
);
|
||||
|
||||
export const Footer = ({ logo, companyData, bankData, showDetails = true, showPageNumber = true }: { logo?: string; companyData: any; bankData: any; showDetails?: boolean; showPageNumber?: boolean }) => (
|
||||
<PDFView style={pdfStyles.footer}><PDFView style={pdfStyles.footerColumn}>{logo ? (<PDFImage src={logo} style={pdfStyles.footerLogo} />) : (<PDFText style={{ fontSize: 12, fontWeight: 'bold', marginBottom: 8 }}>marc mintel</PDFText>)}</PDFView>{showDetails && (<><PDFView style={pdfStyles.footerColumn}><PDFText style={pdfStyles.footerText}><PDFText style={pdfStyles.footerLabel}>{companyData.name}</PDFText>{"\n"}{companyData.address1}{"\n"}{companyData.address2}{"\n"}UST: {companyData.ustId}</PDFText></PDFView><PDFView style={[pdfStyles.footerColumn, { alignItems: 'flex-end' }]}>{showPageNumber && <PDFText style={pdfStyles.pageNumber} render={({ pageNumber, totalPages }) => `${pageNumber} / ${totalPages}`} fixed />}</PDFView></>)}{!showDetails && (<PDFView style={[pdfStyles.footerColumn, { alignItems: 'flex-end' }]}>{showPageNumber && <PDFText style={pdfStyles.pageNumber} render={({ pageNumber, totalPages }) => `${pageNumber} / ${totalPages}`} fixed />}</PDFView>)}</PDFView>
|
||||
);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import * as React from 'react';
|
||||
import { View as PDFView, Text as PDFText, StyleSheet } from '@react-pdf/renderer';
|
||||
import { IndustrialListItem, IndustrialCard } from '../SharedUI';
|
||||
import { IndustrialListItem, IndustrialCard, Divider } from '../SharedUI';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
industrialTitle: { fontSize: 24, fontWeight: 'bold', color: '#0f172a', marginBottom: 6, letterSpacing: -0.5 },
|
||||
@@ -27,28 +27,28 @@ export const AboutModule = () => (
|
||||
<>
|
||||
<PDFText style={styles.industrialTitle}>Über mich</PDFText>
|
||||
<PDFText style={styles.industrialSubtitle}>Direkt. Sauber. Verantwortlich.</PDFText>
|
||||
<Divider style={{ marginVertical: 16, backgroundColor: '#f8fafc' }} />
|
||||
<PDFView style={[styles.industrialGrid2, { marginTop: 20 }]}>
|
||||
<PDFView style={styles.industrialCol}>
|
||||
<PDFText style={styles.industrialTextLead}>Ich baue Websites und Systeme seit über 15 Jahren. Nicht weil ich Websites so liebe – sondern weil ich es hasse, wenn Dinge nicht funktionieren.</PDFText>
|
||||
<PDFText style={styles.industrialText}>In diesen Jahren habe ich Agenturen von innen gesehen, Konzerne erlebt und Startups aufgebaut. Ich habe gelernt, dass das Problem selten die Technik ist – sondern die Zuständigkeit.</PDFText>
|
||||
<PDFText style={styles.industrialTextLead}>Ich entwickle Websysteme seit 15 Jahren. Ich kenne Agenturen, Konzerne und Startups. Ich arbeite alleine, weil ich Verantwortung nicht teilen will.</PDFText>
|
||||
<PDFText style={styles.industrialText}>Technik scheitert selten an Bits und Bytes. Sie scheitert an unklaren Zuständigkeiten. Ich bin Ihr einziger Ansprechpartner. Ich treffe die Entscheidungen und ich löse die Probleme.</PDFText>
|
||||
<PDFView style={{ marginTop: 16 }}>
|
||||
<PDFText style={[styles.industrialText, { fontWeight: 'bold' }]}>Meine Arbeitsweise:</PDFText>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>schnell & stabil</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>"boring" (im besten Sinne)</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>erweiterbar & wartungsarm</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>unabhängig von Agenturen</PDFText></IndustrialListItem>
|
||||
<PDFText style={[styles.industrialText, { fontWeight: 'bold' }]}>Mein Standard:</PDFText>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Ich liefere Code ohne Altlasten.</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Ich baue Systeme, die ohne mich laufen.</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Ich arbeite ohne Overhead und Stille Post.</PDFText></IndustrialListItem>
|
||||
</PDFView>
|
||||
</PDFView>
|
||||
<PDFView style={styles.industrialCol}>
|
||||
<IndustrialCard title="WAS SIE BEKOMMEN">
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Eine Person. Eine Verantwortung.</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Direkte Kommunikation ohne Stille Post.</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Code, der Ihnen gehört.</PDFText></IndustrialListItem>
|
||||
<IndustrialCard title="ZUSTÄNDIGKEIT">
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Ich bin der einzige Entwickler.</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Ich antworte direkt auf technische Fragen.</PDFText></IndustrialListItem>
|
||||
<IndustrialListItem><PDFText style={styles.industrialText}>Ich garantiere die Umsetzung.</PDFText></IndustrialListItem>
|
||||
</IndustrialCard>
|
||||
<IndustrialCard title="WAS SIE NICHT BEKOMMEN" style={{ backgroundColor: '#ffffff', borderColor: '#cbd5e1' }}>
|
||||
<PDFText style={[styles.industrialText, { color: '#94a3b8', textDecoration: 'line-through' }]}>Projektmanager</PDFText>
|
||||
<PDFText style={[styles.industrialText, { color: '#94a3b8', textDecoration: 'line-through' }]}>Ticket-Systeme</PDFText>
|
||||
<PDFText style={[styles.industrialText, { color: '#94a3b8', textDecoration: 'line-through' }]}>CMS-Drama & Update-Angst</PDFText>
|
||||
<IndustrialCard title="KEIN BALLAST" style={{ backgroundColor: '#ffffff', borderColor: '#cbd5e1' }}>
|
||||
<PDFText style={[styles.industrialText, { color: '#94a3b8' }]}>Keine Projektmanager.</PDFText>
|
||||
<PDFText style={[styles.industrialText, { color: '#94a3b8' }]}>Keine Vertriebler.</PDFText>
|
||||
<PDFText style={[styles.industrialText, { color: '#94a3b8' }]}>Kein Ticket-Chaos.</PDFText>
|
||||
</IndustrialCard>
|
||||
</PDFView>
|
||||
</PDFView>
|
||||
@@ -57,40 +57,41 @@ export const AboutModule = () => (
|
||||
|
||||
export const CrossSellModule = ({ state }: any) => {
|
||||
const isWebsite = state.projectType === 'website';
|
||||
const title = isWebsite ? "Das könnte Sie auch interessieren" : "Websites & Ökosysteme";
|
||||
const subtitle = isWebsite ? "Kleine Helfer, die den Alltag entlasten" : "Digitale Visitenkarten mit Tiefe";
|
||||
const title = isWebsite ? "Digitale Routine" : "Websites & Ökosysteme";
|
||||
const subtitle = isWebsite ? "Automatisierung statt Fleißarbeit" : "Technische Infrastruktur ohne Kompromisse";
|
||||
|
||||
return (
|
||||
<>
|
||||
<PDFText style={styles.industrialTitle}>Das könnte Sie auch interessieren</PDFText>
|
||||
<PDFText style={styles.industrialSubtitle}>Kleine helfer, die den alltag entlasten</PDFText>
|
||||
<PDFView style={[styles.industrialGrid2, { marginTop: 12 }]}>
|
||||
<PDFText style={styles.industrialTitle}>{title}</PDFText>
|
||||
<PDFText style={styles.industrialSubtitle}>{subtitle}</PDFText>
|
||||
<Divider style={{ marginVertical: 16, backgroundColor: '#f8fafc' }} />
|
||||
<PDFView style={[styles.industrialGrid2, { marginTop: 12 }]} >
|
||||
{isWebsite ? (
|
||||
<>
|
||||
<PDFView style={styles.industrialCol}>
|
||||
<PDFText style={styles.industrialTextLead}>Zusätzlich zur digitalen Präsenz fressen in vielen Unternehmen wiederkehrende Aufgaben unzählige Stunden: Daten abtippen, Formulare ausfüllen, Angebote anpassen.</PDFText>
|
||||
<PDFText style={[styles.industrialText, { fontWeight: 'bold' }]}>Das ist keine wertschöpfende Arbeit. Das ist Routine.</PDFText>
|
||||
<PDFText style={styles.industrialTextLead}>Ich identifiziere manuelle Abläufe in Ihrem Unternehmen und ersetze sie durch Software. Ich eliminiere Tippfehler und Zeitfresser.</PDFText>
|
||||
<PDFText style={[styles.industrialText, { fontWeight: 'bold' }]}>Ich schaffe Zeit für wertschöpfende Arbeit. Ich digitalisiere das Chaos.</PDFText>
|
||||
<PDFView style={styles.darkBox}>
|
||||
<PDFText style={styles.darkTitle}>Der schnelle Check</PDFText>
|
||||
<PDFText style={styles.darkText}>Wenn bei Ihnen gerade etwas "von Hand gemacht wird" oder "ewig dauert" – ich sage Ihnen in 1-2 Tagen, ob und wie schnell man das sinnvoll digitalisieren kann.</PDFText>
|
||||
<PDFText style={styles.darkTitle}>Direktes Feedback</PDFText>
|
||||
<PDFText style={styles.darkText}>Ich prüfe Ihren Prozess innerhalb von 48 Stunden. Ich sage Ihnen sofort, ob eine Automatisierung wirtschaftlich sinnvoll ist.</PDFText>
|
||||
</PDFView>
|
||||
</PDFView>
|
||||
<PDFView style={styles.industrialCol}>
|
||||
<IndustrialCard title="PDF-GENERATOREN">
|
||||
<PDFText style={styles.industrialText}>Kurze Eingaben via Formular → fertiges Angebot/Bericht. Von 60min auf 5min reduziert.</PDFText>
|
||||
<PDFText style={styles.industrialText}>Ich automatisiere Angebote und Berichte. Ich reduziere den Zeitaufwand auf 5 Minuten. Ich garantiere fehlerfreie Exporte.</PDFText>
|
||||
</IndustrialCard>
|
||||
<IndustrialCard title="EXCEL-AUTOMATISIERUNG">
|
||||
<PDFText style={styles.industrialText}>Verkaufszahlen, Lagerbestände oder Kundenlisten automatisch synchronisieren und auswerten.</PDFText>
|
||||
<PDFText style={styles.industrialText}>Ich synchronisiere Ihre Datenbestände. Ich schaffe Echtzeit-Transparenz ohne manuelle Listenpflege.</PDFText>
|
||||
</IndustrialCard>
|
||||
<IndustrialCard title="KI-SCANNER">
|
||||
<PDFText style={styles.industrialText}>Rechnungen oder handschriftliche Notizen fotografieren → Daten landen direkt strukturiert in der Tabelle.</PDFText>
|
||||
<IndustrialCard title="DATEN-SCANN">
|
||||
<PDFText style={styles.industrialText}>Ich implementiere Schrifterkennung für analoge Dokumente. Ich übertrage Daten direkt in Ihre Systeme.</PDFText>
|
||||
</IndustrialCard>
|
||||
</PDFView>
|
||||
</>
|
||||
) : (
|
||||
<PDFView style={{ width: '100%' }}>
|
||||
<PDFText style={styles.industrialTextLead}>Neben Automatisierung baue ich komplette digitale Ökosysteme für Unternehmen, die Wert auf Qualität legen.</PDFText>
|
||||
<PDFText style={styles.industrialText}>Keine Baukästen. Keine langsamen WordPress-Themes. Sondern maßgeschneiderte Systeme, die technisch und optisch in der ersten Liga spielen.</PDFText>
|
||||
<PDFText style={styles.industrialTextLead}>Ich baue die technische Basis für Ihr Unternehmen. Ich meide Baukästen und Agentur-Abhängigkeiten.</PDFText>
|
||||
<PDFText style={styles.industrialText}>Ich entwickle performante Frontends und stabile Backends. Ich liefere Code, den Sie besitzen und selbst kontrollieren.</PDFText>
|
||||
</PDFView>
|
||||
)}
|
||||
</PDFView>
|
||||
|
||||
@@ -26,10 +26,10 @@ export const BriefingModule = ({ state }: any) => (
|
||||
<PDFView style={styles.section}>
|
||||
<PDFText style={styles.sectionTitle}>Kern-Informationen</PDFText>
|
||||
<PDFView style={styles.configGrid}>
|
||||
<PDFView style={styles.configItem}><PDFText style={styles.configLabel}>Ansprechpartner</PDFText><PDFText style={styles.configValue}>{state.personName || "Ihr Team"}</PDFText></PDFView>
|
||||
<PDFView style={styles.configItem}><PDFText style={styles.configLabel}>Status Quo</PDFText><PDFText style={styles.configValue}>{state.statusQuo || (state.existingWebsite ? 'Relaunch' : 'Neuentwicklung')}</PDFText></PDFView>
|
||||
<PDFView style={styles.configItem}><PDFText style={styles.configLabel}>Ansprechpartner</PDFText><PDFText style={styles.configValue}>{state.personName || "Sie"}</PDFText></PDFView>
|
||||
<PDFView style={styles.configItem}><PDFText style={styles.configLabel}>Projektart</PDFText><PDFText style={styles.configValue}>{state.statusQuo || (state.existingWebsite ? 'Relaunch' : 'Neuentwicklung')}</PDFText></PDFView>
|
||||
<PDFView style={styles.configItem}><PDFText style={styles.configLabel}>Mitarbeiter</PDFText><PDFText style={styles.configValue}>{state.employeeCount || "—"}</PDFText></PDFView>
|
||||
<PDFView style={styles.configItem}><PDFText style={styles.configLabel}>Deadline / Zeitplan</PDFText><PDFText style={styles.configValue}>{state.deadline || 'Flexibel'}</PDFText></PDFView>
|
||||
<PDFView style={styles.configItem}><PDFText style={styles.configLabel}>Zeitplan</PDFText><PDFText style={styles.configValue}>{state.deadline || 'Flexibel'}</PDFText></PDFView>
|
||||
</PDFView>
|
||||
</PDFView>
|
||||
{state.designVision && (
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import * as React from 'react';
|
||||
import { View as PDFView, Text as PDFText, StyleSheet, Image as PDFImage } from '@react-pdf/renderer';
|
||||
import { DocumentTitle } from '../SharedUI';
|
||||
import { DocumentTitle, Divider } from '../SharedUI';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
section: { marginBottom: 24 },
|
||||
@@ -38,47 +38,46 @@ export const TransparenzModule = ({ pricing }: any) => (
|
||||
<>
|
||||
<DocumentTitle title="Preis-Transparenz & Modell" />
|
||||
<PDFView style={styles.section}>
|
||||
<PDFText style={{ fontSize: 10, fontWeight: 'bold', color: '#000000', marginBottom: 8 }}>Grundlage für kalkulierbare Investitionen</PDFText>
|
||||
<PDFText style={{ fontSize: 8, color: '#64748b', lineHeight: 1.6, marginBottom: 24 }}>Digitaler Erfolg basiert auf Transparenz. Dieses Dokument dient als detaillierte Grundlage für Ihre Investitionsentscheidung. Es handelt sich um ein Festpreis-Modell für die beschriebenen Leistungen, um Ihnen maximale Planungssicherheit zu gewährleisten.</PDFText>
|
||||
<PDFText style={{ fontSize: 10, fontWeight: 'bold', color: '#000000', marginBottom: 8 }}>Festpreise statt Stundenabrechnung</PDFText>
|
||||
<PDFText style={{ fontSize: 8, color: '#64748b', lineHeight: 1.6, marginBottom: 12 }}>Ich biete Planungssicherheit. Ich kalkuliere nach einem modularen Festpreis-System. Sie zahlen für Ergebnisse, nicht für die Zeit. Ich schließe versteckte Kosten aus.</PDFText>
|
||||
<Divider style={{ backgroundColor: '#f8fafc', marginTop: 12 }} />
|
||||
</PDFView>
|
||||
<PDFView style={styles.section}>
|
||||
<PDFText style={{ fontSize: 9, color: '#0f172a', fontWeight: 'bold', marginBottom: 8 }}>Warum dieser modulare Ansatz?</PDFText>
|
||||
<PDFText style={{ fontSize: 8, color: '#64748b', lineHeight: 1.6, marginBottom: 20 }}>Meine Kalkulation basiert auf einem transparenten Festpreis-System. Sie zahlen nicht für Stunden, sondern für messbare Ergebnisse. Jeder Baustein ist darauf ausgelegt, Ihre digitale Präsenz zu stärken und den ROI Ihres Projekts zu maximieren.</PDFText>
|
||||
<PDFView style={styles.pricingGrid}>
|
||||
<PDFView style={styles.pricingRow}>
|
||||
<PDFText style={styles.pricingTitle}>1. Das Fundament</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Infrastruktur, technisches SEO, Analytics und ein skalierbares Setup. Der Grundstein für eine Website, die technisch perfekt performt.</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Ich richte die technische Infrastruktur ein. Ich installiere das Hosting, schaffe SEO-Basics und erstelle die Test-, Staging- und Live-Umgebungen.</PDFText>
|
||||
<PDFText style={styles.pricingTag}>{pricing.BASE_WEBSITE?.toLocaleString('de-DE')} €</PDFText>
|
||||
</PDFView>
|
||||
<PDFView style={styles.pricingRow}>
|
||||
<PDFText style={styles.pricingTitle}>2. Individuelle Erlebnisse</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Pro Seite entwickeln wir ein UI/UX-Konzept, das Besucher führt und überzeugt. Keine Standard-Templates, sondern maßgeschneidertes Design.</PDFText>
|
||||
<PDFText style={styles.pricingTitle}>2. Seiten</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Ich entwickle das individuelle Layout und die Struktur jeder Seite. Ich garantiere die korrekte Darstellung auf allen Endgeräten.</PDFText>
|
||||
<PDFText style={styles.pricingTag}>{pricing.PAGE?.toLocaleString('de-DE')} € / Stk</PDFText>
|
||||
</PDFView>
|
||||
<PDFView style={styles.pricingRow}>
|
||||
<PDFText style={styles.pricingTitle}>3. Smarte Content-Systeme</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Automatisieren Sie Ihre Kommunikation. Ob Blog, Job-Board oder Case Studies – wir bauen Systeme, die sich einfach pflegen lassen.</PDFText>
|
||||
<PDFText style={styles.pricingTitle}>3. Features</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Ich erstelle abgeschlossene technische Systeme (z. B. Blog oder News). Ich definiere die Datenfelder und die Pflege-Oberflächen.</PDFText>
|
||||
<PDFText style={styles.pricingTag}>{pricing.FEATURE?.toLocaleString('de-DE')} € / Stk</PDFText>
|
||||
</PDFView>
|
||||
<PDFView style={styles.pricingRow}>
|
||||
<PDFText style={styles.pricingTitle}>4. Funktionalität</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Suche, Filter oder interaktive Formulare. Wir reduzieren Reibung und machen die Nutzung für Ihre Kunden zum Erlebnis.</PDFText>
|
||||
<PDFText style={styles.pricingTitle}>4. Funktionen</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Ich programmiere Logik-Module wie Filter, Suchen oder Kontakt-Schnittstellen. Ich sorge für die fehlerfreie Verarbeitung Ihrer Daten.</PDFText>
|
||||
<PDFText style={styles.pricingTag}>{pricing.FUNCTION?.toLocaleString('de-DE')} € / Stk</PDFText>
|
||||
</PDFView>
|
||||
<PDFView style={styles.pricingRow}>
|
||||
<PDFText style={styles.pricingTitle}>5. High-End Inszenierung</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Video-Integrationen, Mikro-Animationen und immersive Effekte. So heben Sie sich im Markt ab und wirken als Premium-Marke.</PDFText>
|
||||
<PDFText style={styles.pricingTitle}>5. Interaktion</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Ich entwerfe komplexe UI-Abläufe und Konfiguratoren. Ich optimiere die Nutzerführung für maximale Abschlüsse.</PDFText>
|
||||
<PDFText style={styles.pricingTag}>{pricing.COMPLEX_INTERACTION?.toLocaleString('de-DE')} € / Stk</PDFText>
|
||||
</PDFView>
|
||||
<PDFView style={styles.pricingRow}>
|
||||
<PDFText style={styles.pricingTitle}>6. Autonomie & Vernetzung</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Nahtlose Anbindung an Headless CMS oder Ihre Bestands-APIs (CRM, ERP). Maximale Freiheit bei voller Kontrolle.</PDFText>
|
||||
<PDFText style={styles.pricingTitle}>6. Integrationen</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Ich binde Drittsysteme wie CRM, ERP oder Stripe an. Ich richte CMS-Schnittstellen zur unabhängigen Inhaltsverwaltung ein.</PDFText>
|
||||
<PDFText style={styles.pricingTag}>ab {pricing.API_INTEGRATION?.toLocaleString('de-DE')} €</PDFText>
|
||||
</PDFView>
|
||||
<PDFView style={styles.pricingRow}>
|
||||
<PDFText style={styles.pricingTitle}>7. Sorglos-Betrieb</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Full-Service Hosting, tägliche Backups und proaktive Sicherheitsupdates. Damit Sie sich auf Ihr Kerngeschäft konzentrieren können.</PDFText>
|
||||
<PDFText style={styles.pricingTag}>{pricing.HOSTING_MONTHLY?.toLocaleString('de-DE')} € / Mon</PDFText>
|
||||
<PDFText style={styles.pricingTitle}>7. Betrieb (12 Monate)</PDFText>
|
||||
<PDFText style={styles.pricingDesc}>Ich betreibe das Hosting, pflege Sicherheitsupdates ein und erstelle monatliche Berichte. Ich garantiere die Verfügbarkeit für ein Jahr.</PDFText>
|
||||
<PDFText style={styles.pricingTag}>1.440 €</PDFText>
|
||||
</PDFView>
|
||||
</PDFView>
|
||||
</PDFView>
|
||||
|
||||
@@ -7,7 +7,7 @@ import { DocumentTitle } from '../SharedUI';
|
||||
const styles = StyleSheet.create({
|
||||
table: { marginTop: 12 },
|
||||
tableHeader: { flexDirection: 'row', paddingBottom: 8, borderBottomWidth: 1, borderBottomColor: '#000000', marginBottom: 12 },
|
||||
tableRow: { flexDirection: 'row', paddingVertical: 6, borderBottomWidth: 1, borderBottomColor: '#eeeeee', alignItems: 'flex-start' },
|
||||
tableRow: { flexDirection: 'row', paddingVertical: 8, borderBottomWidth: 1, borderBottomColor: '#f8fafc', alignItems: 'flex-start' },
|
||||
colPos: { width: '8%' },
|
||||
colDesc: { width: '62%' },
|
||||
colQty: { width: '10%', textAlign: 'center' },
|
||||
@@ -47,9 +47,9 @@ export const EstimationModule = ({ state, positions, totalPrice, date }: any) =>
|
||||
))}
|
||||
</PDFView>
|
||||
<PDFView style={styles.summaryContainer} wrap={false}>
|
||||
<PDFView style={styles.summaryRow}><PDFText style={styles.summaryLabel}>Zwischensumme (Netto)</PDFText><PDFText style={styles.summaryValue}>{totalPrice.toLocaleString('de-DE')} €</PDFText></PDFView>
|
||||
<PDFView style={styles.summaryRow}><PDFText style={styles.summaryLabel}>zzgl. 19% MwSt.</PDFText><PDFText style={styles.summaryValue}>{(totalPrice * 0.19).toLocaleString('de-DE')} €</PDFText></PDFView>
|
||||
<PDFView style={styles.totalRow}><PDFText style={styles.summaryLabel}>Gesamtsumme (Brutto)</PDFText><PDFText style={[styles.summaryValue, { fontSize: 14 }]}>{(totalPrice * 1.19).toLocaleString('de-DE')} €</PDFText></PDFView>
|
||||
<PDFView style={styles.summaryRow}><PDFText style={styles.summaryLabel}>Nettobetrag</PDFText><PDFText style={styles.summaryValue}>{totalPrice.toLocaleString('de-DE')} €</PDFText></PDFView>
|
||||
<PDFView style={styles.summaryRow}><PDFText style={styles.summaryLabel}>Umsatzsteuer (19%)</PDFText><PDFText style={styles.summaryValue}>{(totalPrice * 0.19).toLocaleString('de-DE')} €</PDFText></PDFView>
|
||||
<PDFView style={styles.totalRow}><PDFText style={styles.summaryLabel}>Gesamtbetrag (Brutto)</PDFText><PDFText style={[styles.summaryValue, { fontSize: 14 }]}>{(totalPrice * 1.19).toLocaleString('de-DE')} €</PDFText></PDFView>
|
||||
</PDFView>
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -64,10 +64,10 @@ export const FrontPageModule = ({ state, headerIcon, date }: any) => (
|
||||
<PDFView style={styles.titleBrandIcon}>
|
||||
{headerIcon ? <PDFImage src={headerIcon} style={{ width: 40, height: 40 }} /> : <PDFText style={styles.brandIconText}>M</PDFText>}
|
||||
</PDFView>
|
||||
<PDFText style={styles.titleDocumentType}>Kostenschätzung & Konzept</PDFText>
|
||||
<PDFText style={styles.titleDocumentType}>Konzept & Kostenschätzung</PDFText>
|
||||
<PDFText style={styles.titleProjectName}>{state.projectType === 'website' ? 'Digitale Präsenz' : 'Digitale Applikation'}</PDFText>
|
||||
<PDFView style={styles.titleDivider} />
|
||||
<PDFText style={styles.titleCustomerName}>für {state.companyName || "Ihre Projektanfrage"}</PDFText>
|
||||
<PDFText style={styles.titleCustomerName}>für {state.companyName || "Ihr Projekt"}</PDFText>
|
||||
<PDFText style={styles.titleDate}>{date} | Marc Mintel</PDFText>
|
||||
</PDFView>
|
||||
);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import * as React from 'react';
|
||||
import { View as PDFView, Text as PDFText, StyleSheet } from '@react-pdf/renderer';
|
||||
import { DocumentTitle } from '../SharedUI';
|
||||
import { DocumentTitle, Divider } from '../SharedUI';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
section: { marginBottom: 24 },
|
||||
@@ -27,6 +27,7 @@ export const SitemapModule = ({ state }: any) => (
|
||||
<DocumentTitle title="Seitenstruktur" />
|
||||
<PDFView style={styles.section}>
|
||||
<PDFText style={{ fontSize: 8, color: '#64748b', lineHeight: 1.6, marginBottom: 16 }}>Die folgende Struktur bildet das Fundament für die Benutzerführung und Informationsarchitektur Ihres Projekts.</PDFText>
|
||||
<Divider style={{ backgroundColor: '#f8fafc', marginBottom: 20 }} />
|
||||
<PDFView style={styles.sitemapTree}>
|
||||
<PDFView style={styles.sitemapRootNode}><PDFView style={styles.sitemapRootDot} /><PDFText style={styles.sitemapRootTitle}>{state.websiteTopic || 'Digitales Ökosystem'}</PDFText></PDFView>
|
||||
<PDFView style={styles.sitemapMainLine} />
|
||||
|
||||
@@ -3,23 +3,23 @@
|
||||
"requestsFailed": 0,
|
||||
"requestsRetries": 0,
|
||||
"requestsFailedPerMinute": 0,
|
||||
"requestsFinishedPerMinute": 109,
|
||||
"requestMinDurationMillis": 572,
|
||||
"requestMaxDurationMillis": 2979,
|
||||
"requestsFinishedPerMinute": 142,
|
||||
"requestMinDurationMillis": 287,
|
||||
"requestMaxDurationMillis": 1881,
|
||||
"requestTotalFailedDurationMillis": 0,
|
||||
"requestTotalFinishedDurationMillis": 15374,
|
||||
"crawlerStartedAt": "2026-02-03T17:52:01.328Z",
|
||||
"crawlerFinishedAt": "2026-02-03T17:52:05.723Z",
|
||||
"statsPersistedAt": "2026-02-03T17:52:05.723Z",
|
||||
"crawlerRuntimeMillis": 4407,
|
||||
"crawlerLastStartTimestamp": 1770141121316,
|
||||
"requestTotalFinishedDurationMillis": 11907,
|
||||
"crawlerStartedAt": "2026-02-03T18:37:56.387Z",
|
||||
"crawlerFinishedAt": "2026-02-03T18:37:59.745Z",
|
||||
"statsPersistedAt": "2026-02-03T18:37:59.745Z",
|
||||
"crawlerRuntimeMillis": 3370,
|
||||
"crawlerLastStartTimestamp": 1770143876375,
|
||||
"requestRetryHistogram": [
|
||||
8
|
||||
],
|
||||
"statsId": 0,
|
||||
"requestAvgFailedDurationMillis": null,
|
||||
"requestAvgFinishedDurationMillis": 1922,
|
||||
"requestTotalDurationMillis": 15374,
|
||||
"requestAvgFinishedDurationMillis": 1488,
|
||||
"requestTotalDurationMillis": 11907,
|
||||
"requestsTotal": 8,
|
||||
"requestsWithStatusCode": {},
|
||||
"errors": {},
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"retiredSessionsCount": 0,
|
||||
"sessions": [
|
||||
{
|
||||
"id": "session_d5YGFP9eEW",
|
||||
"id": "session_cHq4dMfwXI",
|
||||
"cookieJar": {
|
||||
"version": "tough-cookie@6.0.0",
|
||||
"storeType": "MemoryCookieStore",
|
||||
@@ -14,28 +14,28 @@
|
||||
"cookies": [
|
||||
{
|
||||
"key": "8a164f127e89bfa6ad5b54e0547581b9",
|
||||
"value": "0v9stk94l2has4gq4jejmkd3op",
|
||||
"value": "pjedkv3ggc43er8m2edt6i3gqi",
|
||||
"domain": "www.schleicher-gruppe.de",
|
||||
"path": "/",
|
||||
"secure": true,
|
||||
"httpOnly": true,
|
||||
"hostOnly": true,
|
||||
"creation": "2026-02-03T17:52:02.702Z",
|
||||
"lastAccessed": "2026-02-03T17:52:02.702Z"
|
||||
"creation": "2026-02-03T18:37:57.817Z",
|
||||
"lastAccessed": "2026-02-03T18:37:57.817Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userData": {},
|
||||
"maxErrorScore": 3,
|
||||
"errorScoreDecrement": 0.5,
|
||||
"expiresAt": "2026-02-03T18:42:01.370Z",
|
||||
"createdAt": "2026-02-03T17:52:01.370Z",
|
||||
"expiresAt": "2026-02-03T19:27:56.432Z",
|
||||
"createdAt": "2026-02-03T18:37:56.432Z",
|
||||
"usageCount": 1,
|
||||
"maxUsageCount": 50,
|
||||
"errorScore": 0
|
||||
},
|
||||
{
|
||||
"id": "session_TkPjda1ECD",
|
||||
"id": "session_YbphnNZDOG",
|
||||
"cookieJar": {
|
||||
"version": "tough-cookie@6.0.0",
|
||||
"storeType": "MemoryCookieStore",
|
||||
@@ -46,28 +46,28 @@
|
||||
"cookies": [
|
||||
{
|
||||
"key": "8a164f127e89bfa6ad5b54e0547581b9",
|
||||
"value": "tbb2pveomkq9ua23o1u71bjgv0",
|
||||
"value": "ja7mdd60clptutmne95nsea0f4",
|
||||
"domain": "www.schleicher-gruppe.de",
|
||||
"path": "/",
|
||||
"secure": true,
|
||||
"httpOnly": true,
|
||||
"hostOnly": true,
|
||||
"creation": "2026-02-03T17:52:03.289Z",
|
||||
"lastAccessed": "2026-02-03T17:52:03.289Z"
|
||||
"creation": "2026-02-03T18:37:58.124Z",
|
||||
"lastAccessed": "2026-02-03T18:37:58.124Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userData": {},
|
||||
"maxErrorScore": 3,
|
||||
"errorScoreDecrement": 0.5,
|
||||
"expiresAt": "2026-02-03T18:42:02.723Z",
|
||||
"createdAt": "2026-02-03T17:52:02.723Z",
|
||||
"expiresAt": "2026-02-03T19:27:57.842Z",
|
||||
"createdAt": "2026-02-03T18:37:57.842Z",
|
||||
"usageCount": 1,
|
||||
"maxUsageCount": 50,
|
||||
"errorScore": 0
|
||||
},
|
||||
{
|
||||
"id": "session_yh43IUCayx",
|
||||
"id": "session_j4wCqQrHhE",
|
||||
"cookieJar": {
|
||||
"version": "tough-cookie@6.0.0",
|
||||
"storeType": "MemoryCookieStore",
|
||||
@@ -78,28 +78,28 @@
|
||||
"cookies": [
|
||||
{
|
||||
"key": "8a164f127e89bfa6ad5b54e0547581b9",
|
||||
"value": "fd753scoscg0t7e1s2to2f9v7i",
|
||||
"value": "bl0s9u6150j1fe56qq5p81raur",
|
||||
"domain": "www.schleicher-gruppe.de",
|
||||
"path": "/",
|
||||
"secure": true,
|
||||
"httpOnly": true,
|
||||
"hostOnly": true,
|
||||
"creation": "2026-02-03T17:52:04.196Z",
|
||||
"lastAccessed": "2026-02-03T17:52:04.196Z"
|
||||
"creation": "2026-02-03T18:37:59.132Z",
|
||||
"lastAccessed": "2026-02-03T18:37:59.132Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userData": {},
|
||||
"maxErrorScore": 3,
|
||||
"errorScoreDecrement": 0.5,
|
||||
"expiresAt": "2026-02-03T18:42:02.725Z",
|
||||
"createdAt": "2026-02-03T17:52:02.725Z",
|
||||
"expiresAt": "2026-02-03T19:27:57.844Z",
|
||||
"createdAt": "2026-02-03T18:37:57.844Z",
|
||||
"usageCount": 1,
|
||||
"maxUsageCount": 50,
|
||||
"errorScore": 0
|
||||
},
|
||||
{
|
||||
"id": "session_S0J5fDWVY3",
|
||||
"id": "session_km9kX8juX5",
|
||||
"cookieJar": {
|
||||
"version": "tough-cookie@6.0.0",
|
||||
"storeType": "MemoryCookieStore",
|
||||
@@ -110,28 +110,28 @@
|
||||
"cookies": [
|
||||
{
|
||||
"key": "8a164f127e89bfa6ad5b54e0547581b9",
|
||||
"value": "1q9rudf8c5vv73cqq40rlfekur",
|
||||
"value": "7kb8am8on70lsg0498u61mjh80",
|
||||
"domain": "www.schleicher-gruppe.de",
|
||||
"path": "/",
|
||||
"secure": true,
|
||||
"httpOnly": true,
|
||||
"hostOnly": true,
|
||||
"creation": "2026-02-03T17:52:04.653Z",
|
||||
"lastAccessed": "2026-02-03T17:52:04.653Z"
|
||||
"creation": "2026-02-03T18:37:59.617Z",
|
||||
"lastAccessed": "2026-02-03T18:37:59.617Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userData": {},
|
||||
"maxErrorScore": 3,
|
||||
"errorScoreDecrement": 0.5,
|
||||
"expiresAt": "2026-02-03T18:42:02.726Z",
|
||||
"createdAt": "2026-02-03T17:52:02.726Z",
|
||||
"expiresAt": "2026-02-03T19:27:57.845Z",
|
||||
"createdAt": "2026-02-03T18:37:57.845Z",
|
||||
"usageCount": 1,
|
||||
"maxUsageCount": 50,
|
||||
"errorScore": 0
|
||||
},
|
||||
{
|
||||
"id": "session_r79Eqvg1Uq",
|
||||
"id": "session_0LdWEWTmbd",
|
||||
"cookieJar": {
|
||||
"version": "tough-cookie@6.0.0",
|
||||
"storeType": "MemoryCookieStore",
|
||||
@@ -142,28 +142,28 @@
|
||||
"cookies": [
|
||||
{
|
||||
"key": "8a164f127e89bfa6ad5b54e0547581b9",
|
||||
"value": "f840og9pek9msq9draobvo2u03",
|
||||
"value": "67m4qccak2or4g35v85dghk7lo",
|
||||
"domain": "www.schleicher-gruppe.de",
|
||||
"path": "/",
|
||||
"secure": true,
|
||||
"httpOnly": true,
|
||||
"hostOnly": true,
|
||||
"creation": "2026-02-03T17:52:04.787Z",
|
||||
"lastAccessed": "2026-02-03T17:52:04.787Z"
|
||||
"creation": "2026-02-03T18:37:59.603Z",
|
||||
"lastAccessed": "2026-02-03T18:37:59.603Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userData": {},
|
||||
"maxErrorScore": 3,
|
||||
"errorScoreDecrement": 0.5,
|
||||
"expiresAt": "2026-02-03T18:42:02.727Z",
|
||||
"createdAt": "2026-02-03T17:52:02.727Z",
|
||||
"expiresAt": "2026-02-03T19:27:57.846Z",
|
||||
"createdAt": "2026-02-03T18:37:57.846Z",
|
||||
"usageCount": 1,
|
||||
"maxUsageCount": 50,
|
||||
"errorScore": 0
|
||||
},
|
||||
{
|
||||
"id": "session_TQDqR0N6bh",
|
||||
"id": "session_7tIybVMGvQ",
|
||||
"cookieJar": {
|
||||
"version": "tough-cookie@6.0.0",
|
||||
"storeType": "MemoryCookieStore",
|
||||
@@ -174,28 +174,28 @@
|
||||
"cookies": [
|
||||
{
|
||||
"key": "8a164f127e89bfa6ad5b54e0547581b9",
|
||||
"value": "ad2e6u92rpajjh5vesgdqfc05b",
|
||||
"value": "9tvsa0um2dbqqt64us08bjpugt",
|
||||
"domain": "www.schleicher-gruppe.de",
|
||||
"path": "/",
|
||||
"secure": true,
|
||||
"httpOnly": true,
|
||||
"hostOnly": true,
|
||||
"creation": "2026-02-03T17:52:04.891Z",
|
||||
"lastAccessed": "2026-02-03T17:52:04.891Z"
|
||||
"creation": "2026-02-03T18:37:59.563Z",
|
||||
"lastAccessed": "2026-02-03T18:37:59.563Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userData": {},
|
||||
"maxErrorScore": 3,
|
||||
"errorScoreDecrement": 0.5,
|
||||
"expiresAt": "2026-02-03T18:42:02.728Z",
|
||||
"createdAt": "2026-02-03T17:52:02.728Z",
|
||||
"expiresAt": "2026-02-03T19:27:57.847Z",
|
||||
"createdAt": "2026-02-03T18:37:57.847Z",
|
||||
"usageCount": 1,
|
||||
"maxUsageCount": 50,
|
||||
"errorScore": 0
|
||||
},
|
||||
{
|
||||
"id": "session_GNNTPF8Zd1",
|
||||
"id": "session_oFBMQoKZBM",
|
||||
"cookieJar": {
|
||||
"version": "tough-cookie@6.0.0",
|
||||
"storeType": "MemoryCookieStore",
|
||||
@@ -206,28 +206,28 @@
|
||||
"cookies": [
|
||||
{
|
||||
"key": "8a164f127e89bfa6ad5b54e0547581b9",
|
||||
"value": "063l7o872dac686isv37sdf3of",
|
||||
"value": "4oab9p5g0sjkpg0bad165hvss5",
|
||||
"domain": "www.schleicher-gruppe.de",
|
||||
"path": "/",
|
||||
"secure": true,
|
||||
"httpOnly": true,
|
||||
"hostOnly": true,
|
||||
"creation": "2026-02-03T17:52:05.702Z",
|
||||
"lastAccessed": "2026-02-03T17:52:05.702Z"
|
||||
"creation": "2026-02-03T18:37:59.725Z",
|
||||
"lastAccessed": "2026-02-03T18:37:59.725Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userData": {},
|
||||
"maxErrorScore": 3,
|
||||
"errorScoreDecrement": 0.5,
|
||||
"expiresAt": "2026-02-03T18:42:02.729Z",
|
||||
"createdAt": "2026-02-03T17:52:02.729Z",
|
||||
"expiresAt": "2026-02-03T19:27:57.848Z",
|
||||
"createdAt": "2026-02-03T18:37:57.848Z",
|
||||
"usageCount": 1,
|
||||
"maxUsageCount": 50,
|
||||
"errorScore": 0
|
||||
},
|
||||
{
|
||||
"id": "session_iHMY60Kcw5",
|
||||
"id": "session_7tuITPzdEJ",
|
||||
"cookieJar": {
|
||||
"version": "tough-cookie@6.0.0",
|
||||
"storeType": "MemoryCookieStore",
|
||||
@@ -238,22 +238,22 @@
|
||||
"cookies": [
|
||||
{
|
||||
"key": "8a164f127e89bfa6ad5b54e0547581b9",
|
||||
"value": "bdkvmq3k59es68k3u9h2ed5l4s",
|
||||
"value": "l0i9ipa1hduoo18scpeb489ian",
|
||||
"domain": "www.schleicher-gruppe.de",
|
||||
"path": "/",
|
||||
"secure": true,
|
||||
"httpOnly": true,
|
||||
"hostOnly": true,
|
||||
"creation": "2026-02-03T17:52:05.563Z",
|
||||
"lastAccessed": "2026-02-03T17:52:05.563Z"
|
||||
"creation": "2026-02-03T18:37:59.633Z",
|
||||
"lastAccessed": "2026-02-03T18:37:59.633Z"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userData": {},
|
||||
"maxErrorScore": 3,
|
||||
"errorScoreDecrement": 0.5,
|
||||
"expiresAt": "2026-02-03T18:42:02.733Z",
|
||||
"createdAt": "2026-02-03T17:52:02.733Z",
|
||||
"expiresAt": "2026-02-03T19:27:57.853Z",
|
||||
"createdAt": "2026-02-03T18:37:57.853Z",
|
||||
"usageCount": 1,
|
||||
"maxUsageCount": 50,
|
||||
"errorScore": 0
|
||||
|
||||
Reference in New Issue
Block a user