Commit Graph

70 Commits

Author SHA1 Message Date
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
AutonetSellCar Deploy
9a3a6dc8eb Add translation for 마이스터 (Meister) grade
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 09:50:14 +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
ce35017d4f Translate Korean car names in homepage banner
Apply translateCarName to banner titles and subtitles to show
translated text instead of Korean when hovering over banners.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 17:06:30 +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
d902f920b3 Fix 422 error on /admin/banner-cars endpoint
Move /admin/banner-cars route before /admin/{banner_id} to fix route
matching order. FastAPI was matching "banner-cars" as a path parameter
and failing to convert it to an integer.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 16:45:47 +09:00