diff --git a/src/hooks/useWorkorders.js b/src/hooks/useWorkorders.js
index a5d06ed..902897c 100644
--- a/src/hooks/useWorkorders.js
+++ b/src/hooks/useWorkorders.js
@@ -78,7 +78,7 @@ export function useWorkorders(filters = {}) {
queries.push(Query.equal('assignedTo', activeFilters.assignedTo))
}
- // WOID-Direktsuche (z. B. Deep-Link aus den Leads: /tickets?woid=123)
+ // WOID-Direktsuche (Altlinks aus den Leads mit woid=123 leitet TicketsPage zur Ticketseite um)
if (activeFilters.woid) {
queries.push(Query.equal('woid', [String(activeFilters.woid)]))
}
diff --git a/src/lib/ticketListUrl.js b/src/lib/ticketListUrl.js
index 6e3c21f..095aa6b 100644
--- a/src/lib/ticketListUrl.js
+++ b/src/lib/ticketListUrl.js
@@ -78,7 +78,7 @@ export function listFilters(state) {
return { ...countFilters(state, state.tab), search: state.search || undefined, limit: state.limit }
}
-// Altlinks "/tickets?woid=100131" fuehren zur Ticketseite und haben Vorrang vor allen Filtern
+// Altlinks aus den Leads (Liste mit Suchteil woid=100131) fuehren zur Ticketseite und haben Vorrang vor allen Filtern
export function woidRedirectTarget(input) {
const woid = (new URLSearchParams(input).get('woid') || '').trim()
return woid ? ticketPath(woid) : null
diff --git a/src/pages/AssignProjectPage.jsx b/src/pages/AssignProjectPage.jsx
index 3731c9e..ab40790 100644
--- a/src/pages/AssignProjectPage.jsx
+++ b/src/pages/AssignProjectPage.jsx
@@ -8,6 +8,7 @@ import { fetchServices, completeAssignment, fetchProject } from '../lib/projectK
import { nextStep, prevStep, newTicketDefaults, canFinish, openTicketsFor } from '../lib/assignFlow'
import { suggestSubdomain, slugify } from '../lib/subdomain'
import { isArchived } from '../lib/leads'
+import { ticketPath, ticketRef } from '../lib/ticketRoutes'
import { PageHeader, Card, Button, Field } from '../components/ui'
import { CreateCustomerForm } from './CustomersPage'
@@ -153,7 +154,7 @@ export default function AssignProjectPage() {
if (result.ticketId) {
try {
const t = await databases.getDocument(DATABASE_ID, COLLECTIONS.WORKORDERS, result.ticketId)
- path = `/tickets?woid=${encodeURIComponent(t.woid)}`
+ path = ticketPath(ticketRef(t))
} catch {
path = '/tickets'
}
@@ -402,5 +403,5 @@ function TicketLink({ ticketId }) {
databases.getDocument(DATABASE_ID, COLLECTIONS.WORKORDERS, ticketId)
.then((t) => setWoid(t.woid)).catch(() => setWoid(null))
}, [ticketId])
- return woid ? Zum Ticket #{woid} : null
+ return woid ? Zum Ticket #{woid} : null
}
diff --git a/src/pages/PlanboardPage.jsx b/src/pages/PlanboardPage.jsx
index dfe4293..11ad858 100644
--- a/src/pages/PlanboardPage.jsx
+++ b/src/pages/PlanboardPage.jsx
@@ -7,6 +7,7 @@ import { PageHeader, Card, Button } from '../components/ui'
import { useWorkorders } from '../hooks/useWorkorders'
import { useEmployees } from '../hooks/useEmployees'
import { groupAppointmentsByDay, countInRange, dayKey } from '../lib/planboard'
+import { ticketPath } from '../lib/ticketRoutes'
/* Termine haengen an den Tickets (startDate/startTime/endTime/assignedTo);
die Aufbereitung steckt in src/lib/planboard.js. */
@@ -79,7 +80,7 @@ export default function PlanboardPage() {
key={entry.id}
type="button"
title={`Ticket #${entry.woid} öffnen`}
- onClick={() => navigate(`/tickets?woid=${encodeURIComponent(entry.woid)}`)}
+ onClick={() => navigate(ticketPath(entry.woid || entry.id))}
style={{
textAlign: 'left',
border: '1px solid var(--border)',
diff --git a/src/pages/ServicesPage.jsx b/src/pages/ServicesPage.jsx
index d14e0eb..1dd5265 100644
--- a/src/pages/ServicesPage.jsx
+++ b/src/pages/ServicesPage.jsx
@@ -4,6 +4,7 @@ import { FaSpinner } from 'react-icons/fa6'
import { dotColor } from '../lib/previewEnv'
import { fetchServices } from '../lib/projectKindsApi'
import { servicesCards } from '../lib/servicesView'
+import { ticketPath } from '../lib/ticketRoutes'
import { PageHeader, Card, Button, Badge } from '../components/ui'
export default function ServicesPage() {
@@ -69,7 +70,7 @@ export default function ServicesPage() {
{[p.customerName, p.previewUrl && 'Preview'].filter(Boolean).join(' · ') || 'Intern'}
- {p.woid && Ticket #{p.woid}}
+ {p.woid && Ticket #{p.woid}}
{c.key === 'missing' && (
)}
diff --git a/src/pages/TicketsPage.jsx b/src/pages/TicketsPage.jsx
index f3c5da5..531b5c7 100644
--- a/src/pages/TicketsPage.jsx
+++ b/src/pages/TicketsPage.jsx
@@ -26,7 +26,7 @@ import { appointmentText, assigneeLabel, ticketNumber } from '../lib/ticketView'
// Pause nach dem letzten Tastendruck, bis der Suchtext in die Adresse übernommen wird
const SEARCH_DELAY_MS = 300
-// Altlinks aus den Leads (/tickets?woid=123) führen zur Ticketseite; dann läuft keine Abfrage der Liste
+// Altlinks aus den Leads (Liste mit Suchteil woid=123) führen zur Ticketseite; dann läuft keine Abfrage der Liste
export default function TicketsPage() {
const [searchParams] = useSearchParams()
const target = woidRedirectTarget(searchParams)