Commit Graph

46 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
AutonetSellCar Deploy
718c5b0474 Add staging environment documentation and minor fixes
- Document staging vs production DB separation (autonet_staging)
- Add staging sync and deployment commands to CLAUDE.md
- Update changelog with 2025-01-03 changes

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 16:22:34 +09:00
AutonetSellCar Deploy
b0a78abeb3 Add directly purchased cars to My Requests page
- Add new /my-vehicles API endpoint returning both recommended and direct purchases
- Add DirectPurchasedCarResponse and MyVehiclesResponse schemas
- Update frontend to display directly purchased cars (from banners with 1CC)
- Show separate collapsible section for direct purchases

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 13:10:00 +09:00
AutonetSellCar Deploy
0e55ab201a Fix vehicle click issue in My Vehicle Requests page
- Use car_id or fallback to car_data.local_car_id or car_data.id
- Disable link if no valid car ID is available
- Show "Vehicle unavailable" message when car ID is missing

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 12:26:47 +09:00
AutonetSellCar Deploy
f452bbc03b Improve mobile responsiveness across the site
- Header: Hide notifications/auth on mobile, add to mobile menu, make hamburger more visible
- FilmStripSlider: Responsive image sizes (200-500px based on viewport)
- Home page: Smaller text, buttons, and spacing on mobile
- Car detail: Responsive image height, text sizes, and padding

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 10:35:04 +09:00
AutonetSellCar Deploy
b1afea79d9 Add SOLD OUT badge and improve deployment docs
- Add SOLD OUT overlay on car detail page image
- Add SOLD OUT badge next to car name
- Add Sold Out status in Admin Cars detail view
- Add soldout field to Car TypeScript interface
- Create PRODUCTION_VALUES.md for deployment reference
- Update CLAUDE.md with CRITICAL deployment section
- Update TROUBLESHOOTING.md with recurring errors

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-03 09:05:16 +09:00
AutonetSellCar Deploy
2a3d633e58 Fix cost page: unify background colors and width 2026-01-01 21:05:02 +09:00
AutonetSellCar Deploy
9853f0b4d5 Feat: 강력한 비밀번호 정책 및 로그인 보안 강화
- 비밀번호 최소 10자 이상, 특수문자 1개 이상 필수
- 20회 로그인 실패 시 비밀번호 재설정 필요
- 로그인 페이지에 남은 시도 횟수 경고 표시
- 계정 잠금 시 비밀번호 재설정 링크 제공
- 회원가입 페이지에 비밀번호 요구사항 체크리스트 UI

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 19:19:36 +09:00
AutonetSellCar Deploy
7f45de7a89 Add configurable CC cost for banner vehicle PDF/description view
- Add cc_per_banner_view setting to system_settings (default 0.1 CC)
- Update car detail page to use dynamic CC value from settings
- Add CC per Banner View field in admin settings page
- Replace hardcoded 0.1 CC with configurable value

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 09:41:18 +09:00
AutonetSellCar Deploy
0d807eccc6 Widen Cost Structure section to match Container Matching width
Changed max-w-4xl to max-w-5xl for consistent layout.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 20:31:34 +09:00
AutonetSellCar Deploy
612425a6c2 Add multi-language description for Korean Domestic + Export Customs
Added description text under the domestic cost field in both the cost
structure section and calculator results. Translated into Korean,
English, Mongolian, and Russian.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 20:27:59 +09:00
AutonetSellCar Deploy
2a8e32f427 feat: Add admin settings for dealer comment & domestic cost, enhance visitor country stats
- Add show_dealer_comment toggle to admin settings
- Add domestic_export_customs_krw setting for cost page
- Cost page now uses dynamic settings instead of hardcoded values
- Enhance Visitor Stats with dedicated Country Stats card with flags
- Fix hero_banners API route ordering (422 error fix)
- Fix banner toggle logic to check HeroBanner table instead of car.is_banner
- Add country flag emojis for 23+ countries

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-31 18:10:27 +09:00
AutonetSellCar Deploy
be7f12bbf3 Fix TypeScript Set iteration error 2025-12-31 17:14:47 +09:00
AutonetSellCar Deploy
bd6c05cc83 Add debug logs for banner update 2025-12-31 17:12:46 +09:00
AutonetSellCar Deploy
9265a823dc Fix Korean text in banner drag-and-drop section
- Translate car name to English using translateCarName
- Remove Korean year suffix (년)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 16:57:38 +09:00
AutonetSellCar Deploy
6cf2c69371 Fix loadLocalCars error handling for banner API failure
- Wrap banner API call in try-catch to prevent entire function failure
- Fall back to car.is_banner field if banner API returns error
- Local Cars tab now loads even if banner API fails

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 16:05:04 +09:00
AutonetSellCar Deploy
ea91e020b0 Implement batch banner update with drag-and-drop reordering
- Change banner checkbox from immediate toggle to local state management
- Add "Update Banner" button for batch saving changes
- Add draggable banner section at top using framer-motion Reorder
- Banner cars now sorted by display_order from server
- Checkboxes reflect current banner state from DB on page load

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 15:59:47 +09:00
AutonetSellCar Deploy
c9fd7611a7 feat: Add banner toggle and soldout tracking to Cars page
- Add is_banner, soldout fields to Car model
- Add banner toggle API (POST /hero-banners/admin/toggle/{car_id})
- Add soldout APIs (POST/DELETE /cars/{car_id}/soldout)
- Add nightly soldout checker in agent (runs at 3:00 AM)
- Update Local Cars UI with banner checkbox and status column
- Remove hero-banners admin page (functionality moved to Cars page)
- Banner cars sorted to top with purple background
- Soldout cars displayed with gray overlay

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 12:50:40 +09:00
AutonetSellCar Deploy
e661d91c72 fix: banner translations and deployment improvements
- Add translateCarName import from i18n.ts for proper multilingual support
- Change default API language from 'ko' to 'en' for hero banners
- Add checkbox column for Local Cars banner registration
- Update Dockerfile with Playwright dependencies
- Add PostgreSQL migration script
- Add banner translation fix script

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-31 10:41:42 +09:00
AutonetSellCar Deploy
898ab3a0eb Fix: Mongolian date format fallback to en-US
mn-MN locale is not supported in most browsers, causing dates to
display in Korean format. Changed to use en-US for Mongolian users.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 19:41:48 +09:00
AutonetSellCar Deploy
1d8e4435b3 Feature: Russian language support & Vehicle Requests improvements
- Add Russian language support (title_ru, subtitle_ru) for hero banners
- Add fuel/transmission translations for Mongolian (경유→Дизель, 오토→Автомат)
- Improve Vehicle Requests admin page:
  - Display real request ID and user email
  - Show detailed request info (maker, grade, year, fuel, mileage)
  - Replace modal search with Cars page integration
- Add "Add to Request" flow in Cars page for vehicle recommendations
- Fix image URL handling in FilmStripSlider and car detail page

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 18:56:28 +09:00
AutonetSellCar Deploy
0ccc2f75c5 Fix: Use NEXT_PUBLIC_API_URL for all image URLs 2025-12-30 16:09:06 +09:00
AutonetSellCar Deploy
1f0dcb1ddb Initial commit: AutonetSellCar platform with deployment system
- Frontend: Next.js 14 with TypeScript
- Backend: FastAPI with SQLAlchemy
- Agent: Carmodoo sync agent
- Deployment: Docker Compose based staging/production setup
- Scripts: Automated deployment with rollback support

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 13:24:39 +09:00