import "https://deno.land/x/xhr@0.1.0/mod.ts"; import { serve } from "https://deno.land/std@0.168.0/http/server.ts"; const corsHeaders = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type', }; // Project documentation data const projectDocumentation = { title: "REFLY - Система контроля лётной годности", subtitle: "Техническая документация проекта", version: "1.0.0", date: new Date().toLocaleDateString('ru-RU'), overview: { title: "Обзор проекта", content: `REFLY — это ERP-система для авиационного бизнеса Mura Menasa FZCO. Система обеспечивает комплексный контроль лётной годности воздушных судов и включает модули для управления закупками, финансами, персоналом, документооборотом, контролем качества, безопасностью и нормативной базой (EASA, ICAO, FAA, ARMAK).` }, techStack: { title: "Технологический стек", items: [ { name: "React 18", description: "UI библиотека" }, { name: "Vite", description: "Сборщик и dev-сервер" }, { name: "TypeScript", description: "Типизация" }, { name: "React Router v6", description: "Маршрутизация" }, { name: "Tailwind CSS", description: "Стилизация" }, { name: "shadcn/ui", description: "Компоненты UI" }, { name: "TanStack Query", description: "Управление состоянием" }, { name: "Lucide React", description: "Иконки" }, { name: "Recharts", description: "Графики" }, { name: "Lovable Cloud", description: "Бэкенд (БД, Auth, Storage)" } ] }, architecture: { title: "Архитектура приложения", layers: [ { name: "Presentation Layer", components: ["Pages", "Layout Components", "UI Components"] }, { name: "Business Logic Layer", components: ["Hooks", "Utils", "Services"] }, { name: "Data Layer", components: ["TanStack Query", "Supabase Client", "API"] } ] }, modules: [ { name: "Dashboard", path: "/", description: "Главная панель с метриками и быстрыми действиями" }, { name: "Закупки и ТМЦ", path: "/procurement", description: "Управление заявками и товарно-материальными ценностями" }, { name: "Финансы", path: "/finance", description: "Платежи, бюджетирование, импорт/экспорт данных" }, { name: "Персонал", path: "/hr", description: "HR-процессы, отпуска, зарплата" }, { name: "Документооборот", path: "/documents", description: "Генерация и управление документами" }, { name: "ОТК", path: "/quality", description: "Контроль качества, фиксация дефектов, AI-анализ" }, { name: "Безопасность", path: "/safety", description: "Грузоподъемная техника, пожарная безопасность" }, { name: "Регламенты", path: "/regulations", description: "База регламентов ARMAK, EASA, ICAO, FAA" }, { name: "AI Помощник", path: "/ai-assistant", description: "Анализ документов, извлечение данных" }, { name: "AI Inbox", path: "/inbox", description: "Входящие AI-обработанные данные" }, { name: "Настройки", path: "/settings", description: "Конфигурация системы" } ], fileStructure: { title: "Структура проекта", tree: ` src/ ├── App.tsx # Конфигурация роутера ├── main.tsx # Точка входа ├── index.css # Глобальные стили + CSS токены │ ├── components/ │ ├── layout/ │ │ ├── AppLayout.tsx # Основной layout │ │ ├── Sidebar.tsx # Боковая навигация │ │ └── Header.tsx # Верхний header │ │ │ ├── dashboard/ │ │ ├── MetricCard.tsx # Карточки метрик │ │ ├── ModuleCard.tsx # Карточки модулей │ │ ├── ActivityFeed.tsx # Лента активности │ │ ├── QuickActions.tsx # Быстрые действия │ │ └── SystemStatus.tsx # Статус системы │ │ │ └── ui/ # 40+ shadcn компонентов │ ├── pages/ # Страницы приложения ├── hooks/ # Кастомные хуки └── lib/ # Утилиты ` }, designSystem: { title: "Дизайн-система REFLY", principles: [ "Светлая тема с минималистичным дизайном", "Синие градиенты (REFLY Sphere)", "Шрифт Inter для текста", "Скругленные углы (border-radius: 12-16px)", "Мягкие тени и анимации" ], colors: [ { name: "Primary", value: "hsl(217, 91%, 60%)", description: "Основной синий" }, { name: "Secondary", value: "hsl(220, 14%, 96%)", description: "Фоновый серый" }, { name: "Accent", value: "hsl(217, 91%, 60%)", description: "Акцентный" }, { name: "Success", value: "hsl(142, 76%, 36%)", description: "Успех" }, { name: "Warning", value: "hsl(38, 92%, 50%)", description: "Предупреждение" }, { name: "Destructive", value: "hsl(0, 84%, 60%)", description: "Ошибка" } ] }, diagrams: { routing: ` ┌─────────────────────────────────────────────────────────────┐ │ App.tsx │ │ ┌─────────────────────────────────────────────────────────┐│ │ │ BrowserRouter ││ │ │ ┌─────────────────────────────────────────────────────┐││ │ │ │ Routes │││ │ │ │ │││ │ │ │ / → Dashboard │││ │ │ │ /procurement → Procurement │││ │ │ │ /finance → Finance │││ │ │ │ /hr → HR │││ │ │ │ /documents → Documents │││ │ │ │ /quality → Quality │││ │ │ │ /safety → Safety │││ │ │ │ /regulations → Regulations │││ │ │ │ /ai-assistant → AIAssistant │││ │ │ │ /inbox → Inbox │││ │ │ │ /settings → Settings │││ │ │ │ * → NotFound │││ │ │ └─────────────────────────────────────────────────────┘││ │ └─────────────────────────────────────────────────────────┘│ └─────────────────────────────────────────────────────────────┘ `, components: ` ┌────────────────────────────────────────────────────────────────┐ │ AppLayout │ │ ┌──────────────┐ ┌──────────────────────────────────────────┐│ │ │ Sidebar │ │ Main Content ││ │ │ │ │ ┌────────────────────────────────────┐ ││ │ │ • Dashboard │ │ │ Header │ ││ │ │ • Закупки │ │ │ Title | Search | Theme | User │ ││ │ │ • Финансы │ │ └────────────────────────────────────┘ ││ │ │ • Персонал │ │ ┌────────────────────────────────────┐ ││ │ │ • Документы │ │ │ Page Content │ ││ │ │ • ОТК │ │ │ │ ││ │ │ • Безоп. │ │ │ (Dashboard, Procurement, etc.) │ ││ │ │ • Регламенты│ │ │ │ ││ │ │ • AI │ │ └────────────────────────────────────┘ ││ │ │ • Inbox │ │ ││ │ │ • Настройки │ │ ││ │ └──────────────┘ └──────────────────────────────────────────┘│ └────────────────────────────────────────────────────────────────┘ `, dataFlow: ` ┌─────────────────────────────────────────────────────────────────┐ │ Data Flow │ │ │ │ ┌──────────┐ ┌──────────────┐ ┌─────────────────┐ │ │ │ User │ ──── │ Components │ ──── │ TanStack Query │ │ │ │ Action │ │ (React) │ │ (Cache/Sync) │ │ │ └──────────┘ └──────────────┘ └─────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────┐ │ │ │ Supabase Client │ │ │ └─────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ Lovable Cloud │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │ │ │ │ │ Database │ │ Auth │ │ Storage │ │ Edge Fn │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ` } }; // Generate HTML content for PDF function generateHTMLDocument(): string { const doc = projectDocumentation; return `
${doc.overview.content}