Commit Graph

80 Commits

Author SHA1 Message Date
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
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
6ba254bfeb Export new schema classes from schemas package
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 13:12:55 +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
ef729ee384 Add recommended vehicle check to car view access
Cars that were recommended to the user (via vehicle request with 1CC payment)
should be accessible without additional CC payment.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 12:42:30 +09:00
AutonetSellCar Deploy
80d2e82922 Add car_id column to RequestVehicle model
- Add car_id foreign key to link recommended vehicles to cars table
- Add car relationship for easier access

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 12:40:40 +09:00
AutonetSellCar Deploy
c0187d233b Add car_id field to RequestVehicleResponse schema
This field was missing, causing the API to not return car_id
for approved vehicles in My Vehicle Requests page.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 12:38:57 +09:00
AutonetSellCar Deploy
757241bb4e Add car_id field to RequestVehicle interface
- Add optional car_id field for linking to cars table
- Add regenerateSingle function to adminPdfApi

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 12:28:13 +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
51d36566d1 Fix SidebarLayout mobile responsiveness
- Move mobile tabs outside flex container to prevent layout conflict
- Add sticky positioning for mobile tabs
- Add min-w-0 to main content to prevent overflow
- Reduce padding on mobile screens

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 12:11:36 +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
f37f66a9d4 Add deployment workflow section to CLAUDE.md
- Add staging/production server URLs
- Add step-by-step deployment order (staging first!)
- Add Git repository info
- Add staging and production deployment commands

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-03 09:44:35 +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
2da464694b Change Mongolian Fee to Local Dealer Fee in cost calculator 2026-01-01 21:37:28 +09:00
AutonetSellCar Deploy
582ddf1e70 Update DEPLOYMENT.md with comprehensive deployment guide 2026-01-01 21:22:25 +09:00
AutonetSellCar Deploy
2a3d633e58 Fix cost page: unify background colors and width 2026-01-01 21:05:02 +09:00
AutonetSellCar Deploy
ca20a099a2 Fix: 삭제된 사용자 이메일 인증 허용
- verification.py의 send-preregister 엔드포인트에서 deleted_at 체크 추가
- 삭제된 사용자가 동일 이메일로 재가입 가능하도록 수정

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 19:33:24 +09:00
AutonetSellCar Deploy
c0ceade463 Docs: 변경 이력에 비밀번호 보안 강화 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 19:22:47 +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
1e3ad2fa65 Docs: 변경 이력 테이블 정리
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 18:48:54 +09:00
AutonetSellCar Deploy
648c2be1b0 Docs: .env 파일 관리 섹션 추가 및 변경 이력 업데이트
- 운영서버 .env 파일 위치 및 관리 방법 문서화
- inquiries 테이블 누락 컬럼 추가 기록
- 삭제된 사용자 재가입 수정 기록

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 17:53:39 +09:00
AutonetSellCar Deploy
de06404d0f Fix: 삭제된 사용자 재가입 허용 및 로그인 차단
- 소프트 삭제된 사용자도 재가입 가능하도록 수정
- 재가입 시 기존 삭제된 사용자 데이터 완전 삭제
- 삭제된/비활성화된 사용자 로그인 차단

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 17:40:47 +09:00
AutonetSellCar Deploy
1818f0229c Add DEPLOYMENT.md guide for deployment and DB migration
- Document server structure and deployment flow
- Add DB schema change checklist (SQLite ALTER TABLE)
- Include common troubleshooting and rollback commands
- Reference in CLAUDE.md for new sessions

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

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