Commit Graph

102 Commits

Author SHA1 Message Date
AutonetSellCar Deploy
d98e9287d3 fix: Show skeleton instead of sample images during banner loading
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>
2026-02-18 08:58:57 +09:00
AutonetSellCar Deploy
8e230c537c feat: Add Review (사용후기) board system with CC reward
- 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>
2026-02-18 08:42:35 +09:00
AutonetSellCar Deploy
30888c1434 fix: Carmodoo session expiry causing all searches to return 0 results
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>
2026-02-18 08:42:27 +09:00
AutonetSellCar Deploy
fb3f3f6127 feat: Add Analytics component with Umami and Clarity support
- 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>
2026-02-08 20:14:36 +09:00
AutonetSellCar Deploy
346018c4fb feat: Add Complex (단지선택) filter to Carmodoo search
- 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>
2026-02-01 23:00:35 +09:00
AutonetSellCar Deploy
a65c4bbfcf fix: Margin input not saving - change onChange to onBlur
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>
2026-02-01 22:31:15 +09:00
AutonetSellCar Deploy
209c63e463 fix: EUC-KR decoding failure causing garbled Korean text
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>
2026-02-01 22:24:00 +09:00
AutonetSellCar Deploy
bea89d0580 fix: Carmodoo search encoding issue - Korean car names garbled
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>
2026-02-01 22:11:06 +09:00
AutonetSellCar Deploy
ed48cac820 feat: Show user's recommended vehicles in Cost Calculator dropdown
- 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
2026-02-01 21:42:11 +09:00
AutonetSellCar Deploy
6209f88a7b fix: Allow PDF access for users with recommended vehicles 2026-02-01 21:36:17 +09:00
AutonetSellCar Deploy
f785e85270 fix: Prevent duplicate car creation when adding from All Cars tab
- Backend: Check local_car_id first before creating new car
- Frontend: Pass local_car_id to indicate car already exists in DB
2026-02-01 21:29:51 +09:00
AutonetSellCar Deploy
fd0a480ed2 fix: Add getImageUrl to handle relative image paths in MyRequest page 2026-02-01 21:25:24 +09:00
AutonetSellCar Deploy
b340d338ff fix: Remove car_id property from adminAddVehicle call to fix TypeScript error 2026-02-01 21:16:03 +09:00
AutonetSellCar Deploy
5881126408 feat: Add Request functionality to All Cars tab
- 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>
2026-02-01 21:13:55 +09:00
AutonetSellCar Deploy
c9f03c1f86 fix: Remove non-existent dealer_description property from car object 2026-02-01 20:53:17 +09:00
AutonetSellCar Deploy
ef0e25aff6 fix: Correct variable name from searchResults to cars 2026-02-01 20:52:11 +09:00
AutonetSellCar Deploy
feb32a8cb6 fix: Fix handleImport to send correct data format
- 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>
2026-02-01 20:50:58 +09:00
AutonetSellCar Deploy
d4bbcfa621 fix: Add cho parameter to search_cars for import car search
- 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>
2026-02-01 20:42:11 +09:00
AutonetSellCar Deploy
37ee4cff1d feat: Swap images between About and Contact pages
- 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>
2026-01-15 22:38:42 +09:00
AutonetSellCar Deploy
b97ea784b0 feat: Add images to About and Contact pages
- 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>
2026-01-15 22:32:22 +09:00
AutonetSellCar Deploy
7c97d9aecb feat: Add Promo Interest column to admin users page
- 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>
2026-01-13 07:51:55 +09:00
AutonetSellCar Deploy
25caadde95 feat: Use carmodooApi for PromoPreference to share data with Request Vehicle
- 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>
2026-01-13 00:19:08 +09:00
AutonetSellCar Deploy
d1b14f8b76 fix: Center Request Vehicle button and translate maker/model names
- 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>
2026-01-13 00:07:18 +09:00
AutonetSellCar Deploy
cc1022aae3 fix: Position PromoPreference next to Request Vehicle button
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 23:56:58 +09:00
AutonetSellCar Deploy
800b2b4c61 fix: Remove trailing slashes from makers/models routes
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>
2026-01-12 23:52:16 +09:00
AutonetSellCar Deploy
3bd1e49699 fix: Reorder API routes and update main page layout
- 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>
2026-01-12 23:48:06 +09:00
AutonetSellCar Deploy
2354ee8bbb fix: Remove duplicate saving key from i18n interface
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 23:41:57 +09:00
AutonetSellCar Deploy
0cac315818 fix: Remove duplicate selectMaker/selectModel from i18n
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 23:40:12 +09:00
AutonetSellCar Deploy
305aa2a470 fix: Use register instead of signUp in PromoPreference
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 23:38:37 +09:00
AutonetSellCar Deploy
2720689515 feat: Add promo preference survey on main page
- 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>
2026-01-12 23:37:31 +09:00
AutonetSellCar Deploy
2378392f95 fix: Wrap useSearchParams in Suspense boundary for board page
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 01:40:56 +09:00
AutonetSellCar Deploy
0b6bdf44e3 fix: Add board_enabled to SystemSettings interface
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 01:39:20 +09:00
AutonetSellCar Deploy
b86e50e734 fix: Import useLanguageStore for language property in board pages
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 01:38:03 +09:00
AutonetSellCar Deploy
d4b32794dc fix: Replace isLoggedIn with token/user check in board pages
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 01:36:14 +09:00
AutonetSellCar Deploy
e0c1f4540b feat: Add bulletin board system
- 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>
2026-01-10 01:34:41 +09:00
AutonetSellCar Deploy
04bec0d2c7 docs: Add manual/auto deployment conflict warning
- 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>
2026-01-05 23:32:28 +09:00
AutonetSellCar Deploy
2cbec43590 docs: Add staging deployment warning to prevent volume mount errors
- 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>
2026-01-05 23:11:36 +09:00
AutonetSellCar Deploy
b8f0ae4d28 feat: Add real-time visitor map with IP geolocation
- 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>
2026-01-05 18:31:22 +09:00
AutonetSellCar Deploy
4858965087 feat: Add car availability check feature
- 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>
2026-01-05 08:01:40 +09:00
AutonetSellCar Deploy
1c45840c70 fix: Add Korean fonts to Docker image for PDF capture
- 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>
2026-01-04 13:20:23 +09:00
AutonetSellCar Deploy
90202bee34 docs: Add Grantech Docker info to CLAUDE.md
- Add grantech database to DB list
- Add Docker container management commands for Server2/Server3
- Add container table (grantech-frontend, grantech-backend, nextcloud)
2026-01-04 11:17:11 +09:00
AutonetSellCar Deploy
8ba68a62b2 docs: Add server infrastructure summary to CLAUDE.md
- 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.
2026-01-04 10:53:49 +09:00
AutonetSellCar Deploy
27f7c81aaa docs: Update CLAUDE.md with CI/CD workflow documentation
- 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
2026-01-04 10:24:37 +09:00
AutonetSellCar Deploy
15dc8e563c Sync docker-compose.staging.yml with server
- 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>
2026-01-04 10:20:12 +09:00
AutonetSellCar Deploy
0a4cef27b4 Update docker-compose.production.yml for CI/CD
- 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>
2026-01-04 09:56:48 +09:00
AutonetSellCar Deploy
9dafe48473 Add CORS for staging domain and update docker-compose
- Add https://staging.autonetsellcar.com to CORS allowed origins
- Update docker-compose.staging.yml to use .env file and correct paths

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 09:49:01 +09:00
AutonetSellCar Deploy
b8cab29ed2 Add 'Seed Defaults' button to load all predefined translations
- Add /translations/seed-all-defaults API endpoint
- Loads all DEFAULT_TRANSLATIONS (makers, models, colors, fuels, transmissions)
- Includes 100+ predefined translations (Mohave, Sonata, colors, etc.)
- Add 'Seed Defaults' button to admin translations page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 20:53:14 +09:00
AutonetSellCar Deploy
2d7e144a21 Fix duplicate key error in translations auto-extract
- Add tracking set to prevent duplicate entries within same batch
- Refactor to use helper function for consistent duplicate checking

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 20:30:06 +09:00
AutonetSellCar Deploy
77e707167f Fix Mixed Content issue on staging (HTTPS/HTTP mismatch)
- Add Next.js API rewrites to proxy /api and /uploads requests
- Update docker-compose.staging.yml to use relative API paths
- Set NEXT_PUBLIC_API_URL to empty for staging (use rewrites)
- Add BACKEND_URL env var for Next.js server-side proxying
- Update all files to use relative paths when API_URL is empty

This fixes the issue where the staging site (HTTPS) was trying to
load resources from HTTP backend, causing Mixed Content errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 18:32:00 +09:00
AutonetSellCar Deploy
7c943d8553 Add SNS Marketing Campaign feature
- Add cash_cc_balance to User model (withdrawable CC)
- Create SnsShareSubmission model for SNS share verification
- Add marketing campaign settings to SystemSettings
- Add reward_type to ReferralReward model
- Create /api/sns-share endpoints for submission and verification
- Add referral signup reward logic (10CC on signup)
- Create /sns-share user page for SNS sharing
- Create /admin/sns-shares management page
- Add marketing settings UI to admin settings page
- Add SNS Shares menu to admin sidebar

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 18:21:17 +09:00