WORKFLOW-APP/components
Dave c349998fa1 feat: Task Kanban UI + Python task worker
Adds the visible front-end and the worker back-end for the agent
task system. The PocketBase schema, API routes, and ToastProvider
were already in the previous commit; this commit completes the
picture.

UI
- app/tasks/{page,KanbanBoard,TaskCard,CardModal,TaskDetail,api,columns}
  Full Kanban with six columns (Backlog, Ready, In Progress,
  Blocked, Done, Failed), drag-and-drop between columns, quick-add
  chips, type/priority filters, task detail panel with retry/cancel/
  delete, 5s polling, transition toasts.
- components/NavBar.tsx: 'Tasks' link in primary nav.
- app/bizportal-2/BizPortal2Explorer.tsx: 'Send to Kanban' button
  on the result view — dispatches the current search to the agent
  queue as a 'ready' task.

Back-end
- scripts/task_worker.py: PocketBase polling worker with two
  lanes. Deterministic handles bizportal_search/reserve, pdf_generate,
  email_send. Custom lane writes to /tmp/agent_inbox/ for the
  LLM agent to pick up. Atomic claim via PB filter, auto-retry up
  to 3x, structured log on each task.
- scripts/bizportal_service.py: bugfix — _is_logged_in was using
  a non-CSS selector so session-recovery was a no-op. Also made
  the login flow re-runnable mid-session (handles BizPortal's
  ~20-minute session timeout transparently).
- scripts/init_pb_schema.py: duration_ms no longer capped at 0.

Verified end-to-end:
- CK search via worker: 1 company, 3 directors, ~10s
- ID search via worker: 4 companies, 7 total directors, ~34s
- Auto-retry + status transitions + toast fires
2026-08-17 18:57:02 +02:00
..
ActionButton.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
ActionsDropdown.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
AddEntityModal.tsx Use type=tel for all ID number fields to trigger numeric keypad on mobile 2026-07-30 17:53:41 +02:00
AgentVoiceReply.tsx feat: Check Mail button on Step 2 + check-cipc-mail API route 2026-08-11 18:33:03 +02:00
ApproveButton.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
ClientToggle.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
CompanyEditButton.tsx feat: Check Mail button on Step 2 + check-cipc-mail API route 2026-08-11 18:33:03 +02:00
Dashboard.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
DeleteConfirmModal.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
DirectorAppointmentTab.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
DirectorForm.tsx Use type=tel for all ID number fields to trigger numeric keypad on mobile 2026-07-30 17:53:41 +02:00
DirectorStep.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
DocumentsPanel.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
DocumentTypeManager.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
EditEntityModal.tsx feat: Check Mail button on Step 2 + check-cipc-mail API route 2026-08-11 18:33:03 +02:00
GroupReport.tsx feat: Check Mail button on Step 2 + check-cipc-mail API route 2026-08-11 18:33:03 +02:00
GroupsExplorer.tsx feat: Check Mail button on Step 2 + check-cipc-mail API route 2026-08-11 18:33:03 +02:00
LinkedCompaniesList.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
LinkedDirectorsList.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
LinkEntityModal.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
NavBar.tsx feat: Task Kanban UI + Python task worker 2026-08-17 18:57:02 +02:00
OnboardingWizard.tsx feat: split company physical and postal addresses into structured fields 2026-08-14 21:00:14 +02:00
OrgChart.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
PageHeader.tsx feat: initialize full ysterbaard frontend application 2026-07-23 19:10:47 +02:00
PrintButton.tsx feat: print to PDF button on registration detail view 2026-08-14 19:51:59 +02:00
ProcessActions.tsx feat: initialize full ysterbaard frontend application 2026-07-23 19:10:47 +02:00
QueryProvider.tsx feat: initialize full ysterbaard frontend application 2026-07-23 19:10:47 +02:00
RegistrationDocuments.tsx feat: Check Mail button on Step 2 + check-cipc-mail API route 2026-08-11 18:33:03 +02:00
RegistrationWizard.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
ResolutionExplorer.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
RouteChrome.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
ShareLinkButton.tsx feat: initialize full ysterbaard frontend application 2026-07-23 19:10:47 +02:00
Skeleton.tsx feat: initialize full ysterbaard frontend application 2026-07-23 19:10:47 +02:00
StatCard.tsx feat: initialize full ysterbaard frontend application 2026-07-23 19:10:47 +02:00
StatusActions.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
StatusBadge.tsx Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
Step2Actions.tsx feat: add BizPortal tab + name-already-approved flow + registrations improvements 2026-08-14 18:08:51 +02:00
Toast.tsx Director appointment acceptance — full feature 2026-08-17 18:39:14 +02:00
UploadDocumentModal.tsx wip: registration wizard, address splits, document panel, appointments 2026-08-17 18:33:56 +02:00
VoiceField.tsx feat: Check Mail button on Step 2 + check-cipc-mail API route 2026-08-11 18:33:03 +02:00