Files
Autoparts-DB/dashboard/static/diagrams/brake_assembly.svg
consultoria-as d4d1c9b7ba Implement complete autoparts catalog system (5 phases)
FASE 1: Parts Database
- Added part_categories, part_groups, parts, vehicle_parts tables
- 12 categories, 190 groups with Spanish translations
- API endpoints for categories, groups, parts CRUD

FASE 2: Cross-References & Aftermarket
- Added manufacturers, aftermarket_parts, part_cross_references tables
- 24 manufacturers, quality tier system (economy/standard/premium/oem)
- Part number search across OEM and aftermarket

FASE 3: Exploded Diagrams
- Added diagrams, vehicle_diagrams, diagram_hotspots tables
- SVG viewer with zoom controls and interactive hotspots
- 3 sample diagrams (brake, oil filter, suspension)

FASE 4: Search & VIN Decoder
- SQLite FTS5 full-text search with auto-sync triggers
- NHTSA VIN decoder API integration with 30-day cache
- Unified search endpoint

FASE 5: Optimization & UX
- API pagination (page/per_page, max 100 items)
- Dark mode with localStorage persistence
- Keyboard shortcuts (/, Ctrl+K, Escape, Backspace, Ctrl+D)
- Breadcrumb navigation
- ARIA accessibility (labels, roles, focus management)
- Skip link for keyboard users

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 07:13:46 +00:00

65 lines
3.6 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<svg width="600" height="400" viewBox="0 0 600 400" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="metalGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#b0b0b0"/>
<stop offset="50%" style="stop-color:#808080"/>
<stop offset="100%" style="stop-color:#606060"/>
</linearGradient>
</defs>
<!-- Background -->
<rect width="600" height="400" fill="#f5f5f5"/>
<!-- Title -->
<text x="300" y="30" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">
Front Brake Assembly / Ensamble de Freno Delantero
</text>
<!-- Brake Rotor (large circle) -->
<circle cx="250" cy="200" r="120" fill="url(#metalGrad)" stroke="#333" stroke-width="3" id="rotor"/>
<circle cx="250" cy="200" r="100" fill="none" stroke="#555" stroke-width="2"/>
<circle cx="250" cy="200" r="40" fill="#444" stroke="#333" stroke-width="2"/>
<!-- Rotor ventilation slots -->
<line x1="250" y1="60" x2="250" y2="80" stroke="#666" stroke-width="3"/>
<line x1="250" y1="320" x2="250" y2="340" stroke="#666" stroke-width="3"/>
<line x1="130" y1="200" x2="150" y2="200" stroke="#666" stroke-width="3"/>
<line x1="350" y1="200" x2="370" y2="200" stroke="#666" stroke-width="3"/>
<!-- Brake Caliper -->
<rect x="320" y="140" width="80" height="120" rx="10" ry="10" fill="#c0392b" stroke="#922b21" stroke-width="3" id="caliper"/>
<rect x="330" y="155" width="60" height="35" rx="5" ry="5" fill="#e74c3c"/>
<rect x="330" y="210" width="60" height="35" rx="5" ry="5" fill="#e74c3c"/>
<!-- Caliper bolts -->
<circle cx="340" cy="150" r="6" fill="#333"/>
<circle cx="380" cy="150" r="6" fill="#333"/>
<circle cx="340" cy="250" r="6" fill="#333"/>
<circle cx="380" cy="250" r="6" fill="#333"/>
<!-- Brake Pads (visible through caliper) -->
<rect x="300" y="160" width="15" height="80" fill="#8b7355" stroke="#5d4e37" stroke-width="2" id="pad-inner"/>
<rect x="405" y="160" width="15" height="80" fill="#8b7355" stroke="#5d4e37" stroke-width="2" id="pad-outer"/>
<!-- Callout lines and numbers -->
<!-- Callout 1: Brake Rotor -->
<line x1="170" y1="120" x2="100" y2="60" stroke="#333" stroke-width="1.5"/>
<circle cx="100" cy="60" r="15" fill="#3498db" stroke="#2980b9" stroke-width="2"/>
<text x="100" y="65" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white">1</text>
<!-- Callout 2: Brake Caliper -->
<line x1="400" y1="140" x2="480" y2="80" stroke="#333" stroke-width="1.5"/>
<circle cx="480" cy="80" r="15" fill="#3498db" stroke="#2980b9" stroke-width="2"/>
<text x="480" y="85" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white">2</text>
<!-- Callout 3: Brake Pads -->
<line x1="307" y1="250" x2="250" y2="320" stroke="#333" stroke-width="1.5"/>
<circle cx="250" cy="320" r="15" fill="#3498db" stroke="#2980b9" stroke-width="2"/>
<text x="250" y="325" text-anchor="middle" font-family="Arial" font-size="14" font-weight="bold" fill="white">3</text>
<!-- Legend -->
<rect x="440" y="300" width="150" height="90" fill="white" stroke="#ccc" stroke-width="1" rx="5"/>
<text x="515" y="320" text-anchor="middle" font-family="Arial" font-size="12" font-weight="bold" fill="#333">Parts / Partes</text>
<text x="450" y="340" font-family="Arial" font-size="11" fill="#333">1. Brake Rotor / Disco</text>
<text x="450" y="358" font-family="Arial" font-size="11" fill="#333">2. Brake Caliper / Caliper</text>
<text x="450" y="376" font-family="Arial" font-size="11" fill="#333">3. Brake Pads / Balatas</text>
</svg>