Files
2026-07-12 10:17:17 -04:00

4.0 KiB

V1 → V2 Feature Gap (updated 2026-07-08)

spq-v2 (React/Vite SPA) covers ~90% of v1's feature set after the mass port on 2026-06-26.

What v2 has (all pages render)

Screen File Status
Login src/pages/Login.tsx Working
Dashboard src/pages/Dashboard.tsx Working (use sort=-id, not -created)
Quote Generator src/pages/QuoteGenerator.tsx Working — AI Write, Generate Priorities, AI Suggest, Quick Parts, Customer Decision, Tech Notes, Aftermarket Parts editor, Delivery Time editor, full legacy-accurate PDF with parts flags in output
Customers src/pages/Customers.tsx Working (graceful when vehicles collection missing)
Repair Orders src/pages/RepairOrders.tsx Working — uses repairOrders (NOT repair_orders)
Appointments src/pages/Appointments.tsx Working — includes Scan Screenshot (Tesseract OCR + DeepSeek extraction)
Financial Dashboard src/pages/FinancialDashboard.tsx Working — uses repairOrders collection (READ-ONLY: no editable financial summary modal)
Invoices src/pages/Invoices.tsx Shows setup banner (invoices collection missing)
Settings src/pages/Settings.tsx Working — 8 tabs (Business Info, Service Advisors, Tax & Fees, Quote Defaults, PDF & Branding, Business Ops, Service Catalog, Notifications), shows setup banner on Service Advisors tab
PDF-to-Images Export src/lib/pdf-to-images.ts New — extracts each PDF page as a PNG download
Dashboard (updated) src/pages/Dashboard.tsx Recent quotes now a custom dropdown with live search

AI Features (all in v2)

Feature Code Endpoint
AI Write src/lib/ai.ts:aiWriteExplanation() /deepseek/v1/chat/completionsapi.deepseek.com
Generate Priorities src/lib/ai.ts:getPriorityAnalysis() Same endpoint
AI Suggest Services src/lib/ai.ts:aiSuggestServices() Same endpoint
Scan Screenshot Appointments.tsx inline Tesseract.js OCR + DeepSeek extraction

All use model: deepseek-v4-flash with thinking: disabled, temperature: 0. API key in /etc/nginx/sites-enabled/shopproquote.

What v1 has that v2 still lacks

Feature v1 Files Notes
Auto-save drafts auto-save-draft.js Auto-save form state to localStorage
Customer Lookup (quick find) customer-lookup.js Quick search popup separate from full customer page
Active ROs quick view ro-active.js Compact active RO overview widget
Appointment Import appointment-import.js CSV bulk import
Financial Summary / Complete RO modal repair-orders.html:857, repair-orders.js:2016+ Editable CP total/cost + Warranty total/cost inputs with live gross-profit; auto-deducts warranty from CP. Not ported to v2FinancialDashboard.tsx only reads the saved blob. See references/financial-summary-modal.md

The Financial Summary modal is a significant missing editing surface (not a minor utility). Completing an RO in v1 prompts for CP/Warranty total/cost; v2 has no equivalent input flow.

PocketBase collections needed

Collection Created? Used by
quotes Yes Dashboard, QuoteGenerator
customers Yes Customers
appointments Yes Appointments
services Yes Settings (Service Catalog)
settings Yes Settings
repair_orders No RepairOrders, Financial, Invoices
invoices No Invoices
service_advisors No Settings (Advisors tab)
vehicles No Customers (vehicle sub-records)

Missing collections cause those pages to show error states. Create them via PocketBase admin UI or API to unlock full functionality.

Architecture

  • v1: Vanilla JS ES modules, Tailwind CSS via CDN, PocketBase SDK via CDN. No build step. Each page is a standalone HTML file.
  • v2: React 19 + TypeScript + Vite + PocketBase SDK (npm). React Router SPA routing. Lazy-loaded code splitting. Tailwind via PostCSS.