Adds a green button below the vehicle list that approves all vehicles
and sends notification to the user. Status changes to Completed.
Previously there was no way to trigger the approve + notify flow from UI.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Backend: Include car_name in skipped response
- Frontend: Display skip details (car name + reason like "Already imported (ID: 123)")
- Frontend: Display error details with error message
- Add import process description during loading
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sample car images (Tesla, Sportage etc.) now only appear as fallback
when the API fails to respond within 3 seconds. During normal loading,
a pulse-animated skeleton is shown instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Backend: Review model, full API (public/user/admin endpoints)
- Frontend: list, detail, write/edit pages, admin management
- 1 CC reward for writing a review on completed vehicle requests
- Navigation updates (Header + admin sidebar)
- "Write Review" button on my-request page for completed requests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Detect GoLogin redirect response (126 bytes) when session cookies expire,
automatically re-login and retry the search once.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Analytics.tsx component for tracking with Umami (self-hosted) and Microsoft Clarity
- Update layout.tsx to include Analytics component
- Environment variables: NEXT_PUBLIC_UMAMI_WEBSITE_ID, NEXT_PUBLIC_CLARITY_ID
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added complex_code parameter to search_cars method
- Added /api/carmodoo/complexes endpoint with list of Korean auto complexes
- Added Complex dropdown as first filter in admin Cars search
- Passes complex_code to Carmodoo API as c_danji parameter
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The margin input was making API calls on every keystroke, causing race
conditions and making it difficult to edit values (especially to 0).
Changed to:
- Use defaultValue + key pattern for uncontrolled input
- Save only onBlur (when user clicks away)
- Only call API if value actually changed
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Carmodoo HTML response sometimes contains invalid EUC-KR byte
sequences (e.g., 0xA4 followed by ASCII 'F'). This caused the decoder
to fall back to Latin-1, corrupting all Korean text.
Fixed by using errors='replace' which preserves Korean text while
replacing only the invalid byte sequences with replacement characters.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
lxml was re-encoding already decoded UTF-8 HTML based on charset="euc-kr"
meta tag. Fixed by removing charset meta tags and explicitly setting
UTF-8 encoding in HTMLParser.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fetch vehicles from user's MyRequest
- Show dropdown with vehicle names and prices
- Auto-select first vehicle if available
- Show 'Example: 20,000,000 KRW' if no vehicles
- Add checkbox selection for cars in All Cars tab when requestId is present
- Add "Add to Request" button with selection count
- Add select all/deselect all functionality
- Highlight selected cars with blue ring
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed from { car_ids: [...] } to { cars: [...] } format
- Now includes full car details required by backend ImportCarsRequest schema
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added 'cho': '' parameter to enable searching both domestic and import cars
- This fixes Toyota Prius (and other import cars) not appearing in search results
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- About page: CarsImage as large hero with company intro below
- Contact page: HandShakeImage as semi-transparent hero background
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add handshake image to About page Company Introduction section
- Add cars-export image as background in Contact page Business Partnership section
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Backend: Include promo_preferred_maker, promo_preferred_model, promo_email_enabled in admin/users API
- Frontend: Add AdminUser interface fields
- Admin UI: Display Promo Interest column with maker/model and email alert status
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed from carsApi to carmodooApi for maker/model data
- Now shares same data source as vehicle-request page
- Added CarmodooMaker and CarmodooModel types
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Adjust layout to center Request Vehicle with PromoPreference on right
- Use translateCarName for maker/model names in combo boxes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
FastAPI's redirect_slashes was causing /makers/ to redirect to /makers
which then didn't match the route definition.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move /makers/ and /models/ routes before /{car_id} to fix route conflict
- Center Request Vehicle button, move PromoPreference to the right
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add promo preference fields to User model (promo_preferred_maker,
promo_preferred_model, promo_email_enabled)
- Create API endpoints for getting/updating promo preferences
- Create PromoPreference component with maker/model selection
- Show login prompt for non-logged-in users when interacting
- Add promo notification service to send emails when matching vehicles
are added to promotion
- Add multi-language translations (en, mn, ru, ko)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add BoardCategory and BoardPost models with multi-language support
- Add bulletin API endpoints (CRUD, notice toggle, pin toggle)
- Add board_enabled setting to control menu visibility
- Create frontend board pages (list, detail, write, edit)
- Create admin board management and category management pages
- Update Header.tsx with conditional Board menu between Inquiry and Contact Us
- Update admin settings with board_enabled toggle
- Add Board menu to admin sidebar
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Document git hook vs manual docker run conflict issue
- Add resolution steps for container name conflicts
- Reinforce: always use docker-compose for staging
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add rule #5: Never use manual docker run for staging deployment
- Document 2025-01-05 incident where wrong volume mount caused missing images
- Add correct docker-compose commands for staging deployment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add latitude/longitude columns to visitor_logs model
- Update visitor_service to fetch and store coordinates from ip-api.com
- Add /admin/map-data API endpoint for map visualization
- Create VisitorMap component using Leaflet/OpenStreetMap
- Integrate map into visitor-stats admin page
- 30-second auto-refresh with animation for new visitors
- Color-coded markers (red: active, blue: recent)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add daily scheduled check for Carmodoo car availability
- Add manual trigger button in admin settings
- Mark sold cars as soldout=True automatically
- Add settings for check time and enable/disable toggle
- Display check status and statistics in admin UI
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add fonts-noto-cjk and fontconfig to backend Dockerfile
- Fixes garbled Korean text in performance check PDFs
- Update SERVER_INFRASTRUCTURE_PLAN.md with actual infrastructure
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add server roles (Server1: Master, Server2/3: Workers)
- Add nginx-proxy-manager info (port 81, SSL management)
- Add registered domains table
- Add database info (autonet, autonet_staging)
- Link to SERVER_INFRASTRUCTURE_PLAN.md for details
This ensures infrastructure context is always available in sessions.
- Add CI/CD auto-deployment flow diagram
- Add 'Claude Code 작업 규칙' section (no direct server edits)
- Update deployment commands to use CI/CD
- Add DB schema change process with ALTER TABLE examples
- Document deploy.sh promote/rollback/status commands
- Add change history for CI/CD implementation
- Share production uploads directory for staging
- Ensures image files are available in staging environment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use mongolcar-network (external) for DB/Redis access
- Add NEXT_PUBLIC_API_URL as build arg
- Simplify configuration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>