4.0 KiB
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/completions → api.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 v2 — FinancialDashboard.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.