# Project Map: InsuRo
> Generated: 2026-04-24 18:20:36
> Path: /home/jay/projects/InsuRo

## Directory Tree (depth: 2)
```
InsuRo/
├── config/
│   ├── fixed_keywords.txt
│   ├── keyword_config.yaml
│   ├── negative_words.json
│   └── synonyms.json
├── docs/
│   ├── ANTHROPIC_KEY_SETUP.md
│   ├── api-reference.md
│   ├── components.md
│   ├── d4-production-checklist.md
│   ├── db-schema.md
│   ├── feature-flags-experiment-guide.md
│   ├── pii-analytics-guidelines.md
│   └── posthog-kpi-dashboard-guide.md
├── public/
│   ├── apple-touch-icon.png
│   ├── design-philosophy.md
│   ├── favicon-16.png
│   ├── favicon-32.png
│   ├── favicon-64.png
│   ├── favicon.ico
│   ├── insuro-logo-new.jpg
│   ├── offline.html
│   ├── placeholder.svg
│   ├── pwa-192.png
│   ├── pwa-512.png
│   ├── robots.txt
│   └── sw-push.js
├── scripts/
│   ├── convert-to-webp.sh
│   ├── generate_favicons.py
│   └── run_migrations.py
├── server/
│   ├── collectors/
│   ├── migrations/
│   ├── schemas/
│   ├── scripts/
│   ├── systemd/
│   ├── tests/
│   ├── utils/
│   ├── .env.example
│   ├── ai_parser.py
│   ├── analytics.py
│   ├── anu_provider.py
│   ├── crypto.py
│   ├── gdrive.py
│   ├── gdrive_sync.py
│   ├── ingest_fcpa.py
│   ├── main.py
│   ├── pipeline.py
│   ├── pyproject.toml
│   ├── pyrightconfig.json
│   ├── requirements.txt
│   ├── run.sh
│   └── trend_collector.py
├── src/
│   ├── assets/
│   ├── components/
│   ├── config/
│   ├── data/
│   ├── hooks/
│   ├── integrations/
│   ├── lib/
│   ├── pages/
│   ├── test/
│   ├── App.css
│   ├── App.tsx
│   ├── index.css
│   ├── main.tsx
│   └── vite-env.d.ts
├── supabase/
│   ├── functions/
│   ├── migrations/
│   ├── combined-migration.sql
│   └── config.toml
├── tests/
│   ├── cta-exposure-policy.test.ts
│   ├── plan-feature-matrix.test.ts
│   ├── smoke-routes.test.tsx
│   ├── test_task542_1.py
│   └── useOnboardingRedirect.test.ts
├── .env.example
├── .env.production
├── .gitignore
├── capacitor.config.json
├── components.json
├── db-changes-task-2118.md
├── eslint.config.js
├── index.html
├── package-lock.json
├── package.json
├── postcss.config.js
├── README.md
├── tailwind.config.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
├── vite.config.ts
├── vite.log
└── vitest.config.ts
```

## Types & Interfaces
- `src/components/image-generator/types.ts`: `RatioOption`, `ConceptOption`, `LayoutOption`, `TextDensityOption`, `AlignmentOption`, `BackgroundPatternOption`, `ImagePurposeOption`, `SlideContent`, `FontSizeOption`, `ImageGenSettings`
- `src/components/navigation/navigationConfig.ts`: `DomainTabId`, `SubMenuItem`, `DomainTab`, `AdminMenuItem`
- `src/config/cta-config.ts`: `CtaTextEntry`
- `src/config/planFeatureMap.ts`: `FeatureConfig`
- `src/config/routes.ts`: `RouteConfig`, `MenuSection`, `SidebarOnlyItem`
- `src/data/generateOptions.ts`: `SelectOption`, `ModelTier`, `AiModelOption`, `GenerateSettings`
- `src/data/insurance-companies.ts`: `Category`, `InsuranceCompany`
- `src/hooks/use-fcpa-config.ts`: `FcpaChecklistItem`, `FcpaConfig`
- `src/hooks/use-preview-mode.ts`: `PreviewModeConfig`
- `src/hooks/use-pricing-data.ts`: `PricingPlan`, `FeatureDefinition`, `TokenConfig`, `PlanAIModel`, `PricingData`
- `src/hooks/use-remaining-seats.ts`: `RemainingSeatsData`
- `src/hooks/use-setting-presets.ts`: `SettingPreset`
- `src/hooks/use-user-plan.ts`: `PlanTier`, `UserPlanInfo`
- `src/hooks/use-user-tokens.ts`: `UserTokenInfo`
- `src/hooks/use-wiki-performance.ts`: `WikiPerformanceData`
- `src/hooks/use-wiki-rankings.ts`: `WikiRankingEntry`, `WikiRankingsData`
- `src/hooks/useAnalytics.ts`: `AnalyticsEvent`
- `src/hooks/useBehaviorCta.ts`: `BehaviorCtaState`
- `src/hooks/usePlanFeatures.ts`: `PlanFeaturesInfo`
- `src/integrations/supabase/types.ts`: `Json`, `Database`, `Tables`, `TablesInsert`, `TablesUpdate`, `Enums`, `CompositeTypes`
- `src/lib/recruitingFunnel.ts`: `FunnelStep`
- `supabase/functions/_shared/ai-provider.ts`: `AIProvider`, `AICallOptions`, `AICallResult`

## API Routes
_(API 라우트 없음)_

## Components
- `ActivityTimelineTab` → `src/components/crm/ActivityTimelineTab.tsx`
- `AIUsageTab` → `src/components/AIUsageTab.tsx`
- `AppSidebar` → `src/components/AppSidebar.tsx`
- `AudioRecorder` → `src/components/crm/AudioRecorder.tsx`
- `AuthForm` → `src/components/AuthForm.tsx`
- `AuthGuard` → `src/components/AuthGuard.tsx`
- `AutomationStepper` → `src/components/AutomationStepper.tsx`
- `CallLogTab` → `src/components/crm/CallLogTab.tsx`
- `ChatNotificationListener` → `src/components/ChatNotificationListener.tsx`
- `CommunityBoard` → `src/components/CommunityBoard.tsx`
- `ComparisonSection` → `src/components/ComparisonSection.tsx`
- `ConsentTab` → `src/components/crm/ConsentTab.tsx`
- `ConsultationEval` → `src/components/crm/ConsultationEval.tsx`
- `ContentCalendarTab` → `src/components/ContentCalendarTab.tsx`
- `ContentHistoryTab` → `src/components/ContentHistoryTab.tsx`
- `ContextSubMenu` → `src/components/navigation/ContextSubMenu.tsx`
- `CopilotPanel` → `src/components/crm/CopilotPanel.tsx`
- `CustomerExport` → `src/components/crm/CustomerExport.tsx`
- `CustomerImport` → `src/components/crm/CustomerImport.tsx`
- `DashboardLayout` → `src/components/DashboardLayout.tsx`
- `DifferentiationSection` → `src/components/DifferentiationSection.tsx`
- `FeatureGate` → `src/components/FeatureGate.tsx`
- `FloatingGuide` → `src/components/FloatingGuide.tsx`
- `GenerateSettingsPanel` → `src/components/GenerateSettingsPanel.tsx`
- `ImageGeneratorPanel` → `src/components/ImageGeneratorPanel.tsx`
- `ImageResults` → `src/components/image-generator/ImageResults.tsx`
- `KakaoAnalysis` → `src/components/crm/KakaoAnalysis.tsx`
- `LayoutPreview` → `src/components/image-generator/LayoutPreview.tsx`
- `LockedFeatureOverlay` → `src/components/LockedFeatureOverlay.tsx`
- `MobileBottomNav` → `src/components/navigation/MobileBottomNav.tsx`
- `NavLink` → `src/components/NavLink.tsx`
- `OptimizedImage` → `src/components/ui/optimized-image.tsx`
- `OptionSelector` → `src/components/image-generator/OptionSelector.tsx`
- `PageViewTracker` → `src/components/PageViewTracker.tsx`
- `ParticleBackground` → `src/components/ParticleBackground.tsx`
- `PlanGuard` → `src/components/PlanGuard.tsx`
- `PlanUpgradeDialog` → `src/components/PlanUpgradeDialog.tsx`
- `PostHogProvider` → `src/components/PostHogProvider.tsx`
- `PremiumCtaCard` → `src/components/navigation/PremiumCtaCard.tsx`
- `PreviewGuard` → `src/components/crm/PreviewGuard.tsx`
- `PushNotificationToggle` → `src/components/PushNotificationToggle.tsx`
- `PwaInstallPrompt` → `src/components/PwaInstallPrompt.tsx`
- `RegenerateFeedbackModal` → `src/components/image-generator/RegenerateFeedbackModal.tsx`
- `SavingsCalculator` → `src/components/calculators/SavingsCalculator.tsx`
- `SlideEditor` → `src/components/image-generator/SlideEditor.tsx`
- `SummaryTab` → `src/components/crm/SummaryTab.tsx`
- `TokenBalance` → `src/components/TokenBalance.tsx`
- `TokenUsageHistory` → `src/components/TokenUsageHistory.tsx`
- `TopNavBar` → `src/components/navigation/TopNavBar.tsx`
- `UpgradeModal` → `src/components/UpgradeModal.tsx`
- `WikiRankingSection` → `src/components/wiki/WikiRankingSection.tsx`

## Configuration Summary
### package.json
- **Name**: vite_react_shadcn_ts
- **Version**: 0.0.0
- **Scripts**: dev, build, build:dev, lint, preview, test, test:watch
- **Dependencies**: @capacitor/cli, @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities, @hookform/resolvers, @radix-ui/react-accordion, @radix-ui/react-alert-dialog, @radix-ui/react-aspect-ratio, @radix-ui/react-avatar, @radix-ui/react-checkbox, @radix-ui/react-collapsible, @radix-ui/react-context-menu, @radix-ui/react-dialog, @radix-ui/react-dropdown-menu, @radix-ui/react-hover-card, @radix-ui/react-label, @radix-ui/react-menubar, @radix-ui/react-navigation-menu, @radix-ui/react-popover, @radix-ui/react-progress, @radix-ui/react-radio-group, @radix-ui/react-scroll-area, @radix-ui/react-select, @radix-ui/react-separator, @radix-ui/react-slider, @radix-ui/react-slot, @radix-ui/react-switch, @radix-ui/react-tabs, @radix-ui/react-toast, @radix-ui/react-toggle, @radix-ui/react-toggle-group, @radix-ui/react-tooltip, @supabase/supabase-js, @tanstack/react-query, class-variance-authority, clsx, cmdk, date-fns, embla-carousel-react, framer-motion, input-otp, lucide-react, next-themes, posthog-js, react, react-day-picker, react-dom, react-hook-form, react-markdown, react-resizable-panels, react-router-dom, recharts, rehype-raw, remark-gfm, sonner, tailwind-merge, tailwindcss-animate, vaul, vite-plugin-pwa, web-push, zod
- **DevDependencies**: @eslint/js, @tailwindcss/typography, @testing-library/jest-dom, @testing-library/react, @testing-library/user-event, @types/node, @types/react, @types/react-dom, @vitejs/plugin-react-swc, autoprefixer, eslint, eslint-plugin-react-hooks, eslint-plugin-react-refresh, globals, jsdom, postcss, tailwindcss, typescript, typescript-eslint, vite, vitest

### tsconfig.json
- **paths**:
  - `@/*` → `./src/*`

## Recently Modified Files (Top 20)
1. `server/tests/test_e2e_flows.py` (2026-04-24)
2. `server/main.py` (2026-04-24)
3. `server/requirements.txt` (2026-04-24)
4. `public/insuro-logo-new.jpg` (2026-04-24)
5. `server/tests/test_google_trends.py` (2026-04-24)
6. `src/hooks/use-feature-access.ts` (2026-04-23)
7. `src/components/FeatureGate.tsx` (2026-04-23)
8. `src/pages/KeywordAnalysis.tsx` (2026-04-23)
9. `server/collectors/base.py` (2026-04-23)
10. `server/tests/test_naver_collector.py` (2026-04-23)
11. `server/tests/test_normalizer_filter.py` (2026-04-23)
12. `server/tests/test_scoring.py` (2026-04-23)
13. `server/collectors/fixed.py` (2026-04-23)
14. `server/collectors/naver.py` (2026-04-23)
15. `server/collectors/__init__.py` (2026-04-23)
16. `config/fixed_keywords.txt` (2026-04-23)
17. `config/keyword_config.yaml` (2026-04-23)
18. `config/negative_words.json` (2026-04-23)
19. `config/synonyms.json` (2026-04-23)
20. `server/migrations/003_keyword_hybrid.sql` (2026-04-23)
