Files
MobilityOps/frontend/src/i18n/locales/en-GB/demo.json
T
NuklearRabbit 29325b6c27
MobilityOps acceptance / backend (push) Canceled after 0s
MobilityOps acceptance / frontend (push) Canceled after 0s
M29: polish recruiter engineering story
2026-08-10 18:13:18 +02:00

226 lines
16 KiB
JSON

{
"badge": {
"trigger": "Synthetic demo",
"dialogLabel": "About this demo environment",
"close": "Close",
"orgIntro": "<strong>{{orgName}}</strong> is a fictional organisation. All names, vehicles and bookings are synthetic.",
"orgIntroFallback": "All names, vehicles and bookings in this environment are synthetic.",
"realWorkflows": "The workflows, controls and automation are really implemented — only the data is invented.",
"lastReset": "Last reset: <strong>{{when}}</strong> · this environment is resettable at any time.",
"aboutLink": "About this demo",
"unknown": "unknown"
},
"guide": {
"dialogLabel": "Guided demo",
"trigger": "Demo guide",
"kicker": "Guided demo · step {{current}} of {{total}}",
"whatYouWillSee": "What you'll see",
"whyItMatters": "Why it matters",
"startAction": "Get started",
"expectedOutcome": "Expected outcome",
"goToStep": "Go to this step",
"next": "Next",
"close": "Close",
"restart": "Prepare demo again",
"restarting": "Restarting…",
"restartFailed": "Could not restart the demo.",
"allStepsLabel": "All steps",
"progressChip": "Demo guide · step {{current}} of {{total}}",
"expand": "Expand demo guide",
"collapse": "Collapse demo guide",
"steps": {
"understand-state": {
"title": "1. Understand the operational state",
"whatYouWillSee": "The dashboard shows fleet readiness, open attention points and today's movements.",
"whyItMatters": "An Operations Manager starts every day with this overview to decide where to step in.",
"startAction": "Open the dashboard and review the attention queue and today's timeline.",
"expectedOutcome": "You see which bookings, vehicles or data-quality issues need attention."
},
"open-booking": {
"title": "2. Open the booking needing attention",
"whatYouWillSee": "Booking BK-DEMO-RETURN, active and due for return today.",
"whyItMatters": "Returns are the moment incorrect odometer readings or damage first become visible.",
"startAction": "Open the booking from the dashboard or the booking list.",
"expectedOutcome": "You see the booking details and the button to process the return."
},
"process-return": {
"title": "3. Process a return with an odometer anomaly",
"whatYouWillSee": "A return form pre-filled with a suspicious odometer reading below the last known reading.",
"whyItMatters": "A falling odometer signals a data-entry mistake or a mixed-up vehicle — this must be caught before release.",
"startAction": "Submit the return with the suggested value and review the server preview before confirming.",
"expectedOutcome": "The return is processed, the vehicle gets an appropriate status, and a data-quality issue is created automatically."
},
"handle-quality-issue": {
"title": "4. Handle the created data-quality issue",
"whatYouWillSee": "A new 'odometer regression' issue at the top of the work queue.",
"whyItMatters": "Every detected issue has one bounded resolution step — nothing is silently auto-corrected.",
"startAction": "Open the data-quality overview and choose the newest issue.",
"expectedOutcome": "You see the recommended action, choose a resolution, and the issue resolves with an audit trail."
},
"merge-duplicate": {
"title": "5. Review and handle a possible duplicate customer",
"whatYouWillSee": "Two customer profiles with the same email and phone number, compared side by side.",
"whyItMatters": "Duplicate customers split booking history and confuse communication.",
"startAction": "Compare both profiles and choose which one survives.",
"expectedOutcome": "The profiles are merged, bookings are rewired, and the losing profile becomes a tombstone."
},
"ask-knowledge": {
"title": "6. Ask the procedure assistant a question",
"whatYouWillSee": "An answer with citation from the scoped demo knowledge base.",
"whyItMatters": "Staff need a quick, grounded answer about procedures, without guessing.",
"startAction": "Click one of the suggested questions, in the current interface language.",
"expectedOutcome": "You see the answer, the procedure used, and the source text — or an honest 'insufficient information' if none exists."
},
"check-automation-audit": {
"title": "7. Check automation and the audit trail",
"whatYouWillSee": "The delivery status of your return's automation job, and its related audit events.",
"whyItMatters": "Every important action must be traceable: who did what, when, and what followed.",
"startAction": "Open Integrations to see delivery status, and Audit trail for the full record.",
"expectedOutcome": "You see a successful (or recoverable) delivery and a readable audit trail of your actions."
},
"review-real-vs-simulated": {
"title": "8. Review what's real, simulated, or not yet connected",
"whatYouWillSee": "An overview of what's functionally implemented in this demo, what's synthetic, and which integrations aren't live yet.",
"whyItMatters": "A demo is only convincing if visitors can verify for themselves what really works and what's still ahead.",
"startAction": "Read the 'About this demo' page.",
"expectedOutcome": "You can explain yourself what {{productName}} is and isn't, with no verbal explanation needed."
}
}
},
"highlights": {
"eyebrow": "Recruiter highlights",
"title": "The strongest choices in 90 seconds",
"description": "Three short views show how {{productName}} combines operational reliability, controlled corrections and source-grounded AI.",
"duration": "about 30 sec",
"open": "View in the platform",
"proofLabel": "Engineering proof",
"return": { "title": "A return that cannot fail silently", "body": "See server-side impact validation, atomic persistence and an outbox that decouples external automation from the rental desk.", "proof": "Transaction · idempotency · outbox · degradation" },
"quality": { "title": "Data quality with human control", "body": "Compare duplicate profiles, deliberately choose the surviving record and preserve booking and audit history.", "proof": "Explainable rules · preview · audit · rollback" },
"knowledge": { "title": "AI that must show its sources", "body": "Ask a procedure question and inspect the answer, source excerpts and honest insufficient-evidence state.", "proof": "RAGcore · citations · safe degradation" },
"storyTitle": "Want to see the choices behind the system?",
"storyBody": "The Engineering page connects product flows to architecture, reliability and honest integration status.",
"storyButton": "Open Engineering Story",
"fullTourButton": "Start the complete demo"
},
"scenarios": {
"eyebrow": "Demonstration scenarios",
"title": "Try a demonstration scenario",
"description": "Five focused scenarios that always use the same fixed bookings, customers and vehicles — always re-findable after a reset.",
"loading": "Loading scenarios…",
"ready": "Ready for demo",
"notReady": "Not available",
"duration": "Duration",
"durationValue": "± {{minutes}} min",
"role": "Role",
"demonstrates": "Demonstrates:",
"requiresRole": "Requires role: {{roles}}.",
"startScenario": "Start scenario",
"roleOr": "{{a}} or {{b}}",
"roles": {
"operations_manager": "Operations Manager",
"rental_employee": "Rental Employee"
},
"items": {
"return-anomaly": {
"title": "Return with an odometer anomaly",
"problem": "A vehicle comes back with an odometer reading lower than the last recorded reading — a sign of a data-entry mistake or a mixed-up vehicle.",
"demonstrates": "Return processing, automatic data-quality detection, and the audit trail it produces."
},
"duplicate-customer": {
"title": "Merge a possible duplicate customer",
"problem": "Two customer profiles share the same email address and phone number — likely the same person, registered twice.",
"demonstrates": "Merging customers while preserving booking history and the audit trail."
},
"booking-overlap": {
"title": "Resolve overlapping bookings",
"problem": "One vehicle is double-booked for overlapping periods — a scheduling error that must be resolved before departure.",
"demonstrates": "Detection and controlled resolution of scheduling conflicts."
},
"automation-retry": {
"title": "Retry a failed automation job",
"problem": "One earlier event could not be delivered to the automation job due to a simulated connection error.",
"demonstrates": "Reliable delivery with bounded retries and visible failure status."
},
"knowledge-question": {
"title": "Ask a procedure question",
"problem": "An employee isn't sure which procedure applies to a specific operational situation.",
"demonstrates": "Source-grounded answers from a scoped demo knowledge base."
}
},
"blockedReasons": {
"bookingNotFound": "Demo booking BK-DEMO-RETURN not found. {{resetHint}}",
"bookingAlreadyProcessed": "This booking has already been processed since the last reset. {{resetHint}}",
"duplicateIssueNotFound": "Demo issue DQ-DEMO-DUPLICATE not found. {{resetHint}}",
"issueAlreadyResolved": "This issue has already been resolved since the last reset. {{resetHint}}",
"overlapIssueNotFound": "Demo issue DQ-DEMO-OVERLAP not found. {{resetHint}}",
"failedEventNotFound": "The simulated failed event was not found. {{resetHint}}",
"eventAlreadyRecovered": "This event has already been recovered since the last reset. {{resetHint}}",
"knowledgeUnavailable": "The demo knowledge base is currently unavailable.",
"resetHint": "Reset the demo data to make this scenario available again."
}
},
"about": {
"eyebrow": "About this demo",
"title": "What {{productName}} is and isn't",
"description": "{{orgName}} is a fictional rental organisation that makes this demo tangible — not a real company.",
"loading": "Loading demo information…",
"ctaTitle": "Choose how much time you have",
"ctaBody": "See the three strongest engineering moments in 90 seconds, or take the complete operational tour.",
"ctaButton": "Start full demo",
"quickTourButton": "See highlights · 90 sec",
"scenarioButton": "Open scenario lab",
"proofEyebrow": "Engineering evidence",
"proofTitle": "Control, reliability and explainability",
"proofDescription": "Every technical choice supports a concrete operational action.",
"proofRulesTitle": "Rules stay with the domain",
"proofRulesBody": "FastAPI governs returns, statuses and data-quality resolutions. n8n and prompts never make authoritative decisions.",
"proofReliabilityTitle": "Commit first, orchestrate second",
"proofReliabilityBody": "The operation commits atomically; an outbox then delivers to n8n with bounded retries. An outage never blocks the rental desk.",
"proofAiTitle": "AI must show evidence",
"proofAiBody": "RAGcore answers include sources. Without sufficient evidence the assistant does not invent an answer.",
"architectureFlowTitle": "From user action to controlled follow-up",
"architectureFlowDescription": "The system of record stays separate from external orchestration and AI.",
"architectureFrontend": "Accessible React interface",
"architectureApi": "FastAPI domain rules",
"architectureDatabase": "PostgreSQL + audit trail",
"architectureOutbox": "Reliable outbox",
"architectureExternal": "External services: n8n, RAGcore and MCP Hub",
"verificationTitle": "Built to be verified",
"verificationBody": "Domain rules, API contracts, degraded modes and the complete demo are tested automatically. The repository contains the exact acceptance commands and evidence bundle.",
"problemTitle": "The fictional problem",
"problemBody": "{{orgName}} rents around 50 campers and vans from one main location. Bookings, returns, customer records and maintenance used to live in separate spreadsheets and verbal hand-offs, so problems (duplicate customers, incorrect odometer readings, double-booked vehicles) only surfaced late. {{productName}} shows how one connected system flags these problems early and lets them be resolved under control.",
"scopeTitle": "Who it's for and its scope",
"scopeBody": "This demo is for anyone who wants to see how {{productName}} tackles operational problems at a small rental company: Operations Managers and Rental Employees, and anyone evaluating the approach. The scope is deliberately focused on one connected proof of concept — no accounting, no payments, no public reservations, no full CRM or ERP.",
"realTitle": "What really works",
"realBody": "Everything below is functional code, not just a mockup: role-based access and sessions, vehicle and booking management, return processing with server-side validation, five data-quality rules each with its own resolution step, a full audit trail, automated delivery to n8n with bounded retries, Docker-based deployment, and an automated test suite (backend and Playwright end-to-end).",
"syntheticTitle": "What's synthetic",
"syntheticBody": "The organisation, all customers, vehicles, bookings, maintenance history, procedures in the knowledge base, and the pre-set-up scenarios are entirely invented. No data refers to a real person, vehicle or company; email addresses only use the {{testDomain}} test domain.",
"architectureTitle": "Architecture in brief",
"architectureBody": "A React/TypeScript frontend talks to a FastAPI backend (PostgreSQL via SQLAlchemy/Alembic migrations); important business rules live in the backend, not in n8n or in prompts. Returns and other events are committed locally first and only then delivered asynchronously to n8n through an automation job, so a temporary automation outage never blocks an operational action.",
"securityTitle": "Security and access",
"securityBody": "Access runs through signed, HTTP-only session cookies per role; each role is bound to a set of allowed routes, both enforced server-side and reflected in navigation. Important state changes are always checked and logged — never silently auto-corrected.",
"testingTitle": "How this is tested",
"testingBody": "An automated backend test suite covers business rules and API contracts; a full Playwright end-to-end suite covers the user flows, including this demo experience itself in three languages. Every change is also validated against a clean checkout (empty database, rebuilt from seed data) before deployment.",
"integrationsTitle": "Integrations — honestly labelled",
"integrationsDescription": "What's operational, what's demo mode, and what's not yet connected.",
"resetTitle": "Restoring the demo environment",
"resetBodyManager": "The environment can be reset to its starting state at any time. Last reset: <strong>{{when}}</strong>. Use <strong>Reset demo data</strong> in the sidebar to start over.",
"resetBodyEmployee": "The environment can be reset to its starting state at any time. Last reset: <strong>{{when}}</strong>. An Operations Manager can reset the demo environment via the sidebar.",
"limitationsTitle": "Limitations",
"limitationsBody": "This is a focused operational platform, not a full ERP. Accounting, payments, public reservations and a generic CRM are deliberately out of scope. External integrations are assessed separately and honestly using recent evidence.",
"unknown": "unknown"
},
"integrationSummary": {
"titles": {
"n8n": "Automation (n8n)",
"ragcore": "Knowledge assistant (RAGcore)",
"mcp_hub": "ITWorx MCP Hub"
},
"n8nDetail": "{{succeeded}} succeeded · {{failed}} failed · {{pending}} pending.",
"ragcoreDetail": "{{count}} procedures indexed in {{collection}}.",
"ragcoreSourceDetail": "{{source_count}} managed source procedures available; RAGcore does not report a reliable index count.",
"mcpDetailOperational": "Live controlled tool calls from the Hub are confirmed in the audit trail.",
"mcpDetailPrepared": "Four read-only tools are contract-ready; no recent Hub call has been recorded."
}
}