Skip to content

m34959203/AI-Redactor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

266 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI-Редактор научного журнала

🚀 Автоматизация сборки выпусков научных журналов за 10 минут

🌐 Production: https://airesume.zhezu.kz — субдомен Жезказганского университета имени О.А. Байконурова

AI-powered редактор для научных журналов с автоматической обработкой статей, проверкой орфографии и генерацией рецензий.

🆕 v3.1: Мульти-провайдерная архитектура с автоматическим переключением!

  • OpenRouter (DeepSeek) — primary, лучший для JSON и инструкций
  • 🔄 Groq (Llama 3.3 70B) — fallback, быстрый и бесплатный
  • 🌐 Google Gemini — backup, надёжный резерв
  • 🌍 Мультиязычность — русский, казахский и английский
  • 📦 100% анализ — полный текст статьи без обрезки
  • 📊 Analytics — мониторинг confidence scores и A/B тестирование

✨ Возможности

  • 📄 Автоматическое извлечение метаданных - AI определяет название статьи и автора из DOCX файлов
  • 🔤 Автоматическая сортировка - статьи сортируются по языку (кириллица/латиница) и фамилии автора
  • Проверка орфографии - AI анализирует текст и находит ошибки
  • 📝 Рецензирование - генерация профессиональных рецензий с оценками по 5 критериям
  • 📚 Управление структурой - загрузка титульного листа, описания и заключительной страницы
  • 📦 Генерация PDF - автоматическая сборка выпуска с содержанием
  • 💾 Архив выпусков - хранение истории всех созданных выпусков

🛠️ Технологии

Frontend

  • React 18 - современный UI
  • Vite - быстрая сборка и разработка
  • Tailwind CSS - стилизация
  • Lucide React - иконки

Backend

  • Node.js + Express - API сервер
  • Мульти-провайдерная AI архитектура с автоматическим переключением

AI Провайдеры (приоритет)

# Провайдер Модель Free Tier
1 OpenRouter deepseek-r1t2-chimera 200 req/day
2 Groq llama-3.3-70b-versatile 100K tokens/day
3 Gemini gemini-2.0-flash-lite 1500 req/day

AI Архитектура

┌─────────────────┐     ┌─────────────────┐
│   Frontend      │────▶│   Backend API   │
│   (React)       │     │   (Express)     │
└─────────────────┘     └────────┬────────┘
                                 │
                    ┌────────────┼────────────┐
                    ▼            ▼            ▼
              ┌──────────┐ ┌──────────┐ ┌──────────┐
              │OpenRouter│ │   Groq   │ │  Gemini  │
              │(Primary) │ │(Fallback)│ │ (Backup) │
              │ DeepSeek │ │Llama 3.3 │ │  Flash   │
              └──────────┘ └──────────┘ └──────────┘

Автоматическое переключение: если primary недоступен → fallback → backup

📋 Требования

  • Node.js 18+
  • npm или yarn
  • Минимум один AI API ключ (рекомендуется все три для надёжности):
    • OpenRouter API — бесплатно, 200 req/day
    • Groq API — бесплатно, 100K tokens/day
    • Google Gemini API — бесплатно, 1500 req/day

🚀 Быстрый старт

1. Клонирование репозитория

git clone https://github.com/yourusername/AI-Redactor.git
cd AI-Redactor

2. Установка зависимостей

npm install
# или
yarn install

3. Настройка переменных окружения

Создайте файл .env в корне проекта:

cp .env.example .env

Откройте .env и добавьте API ключи:

# Primary: OpenRouter (DeepSeek) - лучший для JSON
OPENROUTER_API_KEY=your-openrouter-api-key-here

# Fallback: Groq (Llama 3.3 70B) - быстрый
GROQ_API_KEY=your-groq-api-key-here

# Backup: Google Gemini - надёжный резерв
GEMINI_API_KEY=your-gemini-api-key-here

Получение API ключей (все бесплатные):

Провайдер Ссылка Free Tier
OpenRouter openrouter.ai/keys 200 req/day
Groq console.groq.com 100K tokens/day
Gemini aistudio.google.com 1500 req/day

4. Запуск приложения

npm run dev
# или
yarn dev

Приложение откроется в браузере по адресу http://localhost:3000

📖 Использование

Шаг 1: Загрузка структуры журнала

  1. Титульный лист - обложка вашего журнала (формат: .docx или .pdf)
  2. Описание и редакция - информация о журнале и редколлегии
  3. Заключительная страница - финальная страница после содержания

Шаг 2: Загрузка статей

  • Перетащите .docx файлы в зону загрузки или выберите файлы вручную
  • AI автоматически извлечет название и автора
  • Статьи будут отсортированы по языку и автору
  • Запустится автоматическая проверка орфографии

Шаг 3: Редактирование

  • Отредактируйте названия и авторов при необходимости
  • Проверьте результаты орфографии во вкладке "Проверка орфографии"
  • Создайте рецензии для статей во вкладке "Рецензия"

Шаг 4: Генерация PDF

  • Убедитесь, что загружены все обязательные страницы
  • Нажмите кнопку "Сгенерировать PDF"
  • Выпуск будет сохранен в архиве

🏗️ Структура проекта

AI-Redactor/
├── src/                         # Frontend (React)
│   ├── components/
│   │   ├── Editor/              # Компоненты редактора
│   │   ├── SpellCheck/          # Проверка орфографии
│   │   ├── Review/              # Рецензирование
│   │   ├── Archive/             # Архив выпусков
│   │   └── UI/                  # Общие UI компоненты
│   ├── services/
│   │   └── aiApi.js             # Frontend API клиент
│   ├── constants/
│   │   └── sections.js          # Константы разделов
│   ├── utils/
│   │   ├── fileValidation.js    # Валидация файлов
│   │   ├── languageDetection.js # Определение языка
│   │   └── pdfGenerator.js      # Генерация PDF
│   ├── App.jsx                  # Главный компонент
│   ├── main.jsx                 # Точка входа
│   └── index.css                # Глобальные стили
│
├── server/                      # Backend (Express)
│   ├── config/
│   │   └── aiConfig.js          # Конфигурация AI провайдеров
│   ├── services/
│   │   └── aiService.js         # AI сервис (мульти-провайдер)
│   ├── routes/
│   │   └── ai.js                # API эндпоинты
│   └── index.js                 # Express сервер
│
├── public/                      # Статические файлы
├── .env.example                 # Пример переменных окружения
├── package.json                 # Зависимости
├── vite.config.js               # Конфигурация Vite
└── railway.json                 # Railway настройки

🔧 Скрипты

npm run dev        # Запуск frontend + backend
npm run build      # Сборка для production
npm run preview    # Предпросмотр production сборки
npm run lint       # Проверка кода
npm start          # Production запуск

📡 API Endpoints

AI Analysis

Endpoint Method Описание
/api/ai/analyze POST Анализ статьи (metadata + section + review)
/api/ai/analyze-batch POST Пакетный анализ (до 5 статей за запрос)
/api/ai/metadata POST Извлечение метаданных
/api/ai/section POST Определение раздела
/api/ai/spelling POST Проверка орфографии
/api/ai/review POST Генерация рецензии

Monitoring

Endpoint Method Описание
/api/ai/health GET Health check (для Kubernetes/Railway)
/api/ai/metrics GET Метрики использования
/api/ai/status GET Статус AI провайдера
/api/ai/test GET Тест подключения к AI

Cache

Endpoint Method Описание
/api/ai/cache/stats GET Статистика кэша
/api/ai/cache DELETE Очистка кэша

Analytics (A/B Testing & Monitoring)

Endpoint Method Описание
/api/ai/analytics/summary GET Полная сводка аналитики
/api/ai/analytics/confidence GET Распределение confidence scores
/api/ai/analytics/version GET Версия промптов (A/B тестирование)
/api/ai/analytics/logs GET Логи запросов (debug mode)
/api/ai/analytics/reset POST Сброс счётчиков

Пример ответа /api/ai/analytics/summary

{
  "promptVersion": "v2.1",
  "totalClassifications": 150,
  "avgConfidence": 0.78,
  "confidenceDistribution": {
    "high": "45%",
    "medium": "30%",
    "low": "15%",
    "veryLow": "5%",
    "needsReview": "5%"
  },
  "bySection": {
    "ТЕХНИЧЕСКИЕ НАУКИ": { "count": 60, "avgConfidence": 0.82 },
    "ПЕДАГОГИЧЕСКИЕ НАУКИ": { "count": 50, "avgConfidence": 0.75 }
  }
}

Пример ответа /api/ai/health

{
  "status": "healthy",
  "primaryProvider": "OpenRouter",
  "fallbackProvider": "Groq",
  "openrouter": { "configured": true, "model": "deepseek-r1t2-chimera" },
  "groq": { "configured": true, "model": "llama-3.3-70b-versatile" },
  "gemini": { "configured": true, "model": "gemini-2.0-flash-lite" },
  "cache": { "size": 15, "maxSize": 1000 },
  "timestamp": "2024-01-15T10:30:00.000Z"
}

📦 Деплой

Production (Жезказганский университет им. О.А. Байконурова)

Проект развёрнут и доступен по адресу: https://airesume.zhezu.kz

Это субдомен официального сайта Жезказганского университета имени О.А. Байконурова, используемый для AI-автоматизации сборки научного журнала «Вестник ЖезУ».

Railway.com (рекомендуется)

Быстрый деплой:

  1. Установите Railway CLI:
npm i -g @railway/cli
  1. Войдите и деплой:
railway login
railway init
railway up

Добавьте переменные окружения в Railway Dashboard:

  • OPENROUTER_API_KEY - OpenRouter API ключ (primary)
  • GROQ_API_KEY - Groq API ключ (fallback)
  • GEMINI_API_KEY - Google Gemini API ключ (backup)

Альтернативный способ - через GitHub:

  1. Откройте railway.app/new
  2. Выберите "Deploy from GitHub repo"
  3. Выберите репозиторий AI-Redactor
  4. Добавьте переменные в Settings → Variables

Подробнее см. RAILWAY_DEPLOY.md

Vercel (альтернатива)

См. DEPLOYMENT.md для инструкций по деплою на Vercel

🔐 Безопасность

  • ❌ Никогда не коммитьте файл .env в git (.env в .gitignore)
  • ✅ API ключи хранятся только на сервере (не на клиенте)
  • 🔒 Все AI запросы проходят через backend proxy
  • 🆓 Все три провайдера предоставляют бесплатные тарифы

⚡ Производительность

Метрика До (v1) После (v3.1) Улучшение
Запросов на статью 4 0.25 16x
Время на 30 статей ~4 мин ~40 сек 6x
Стабильность Частые 429 Авто-переключение надёжнее
Анализ контента 50% 100% полный

Оптимизации:

  • Пакетная обработка: 4 статьи за 1 API запрос
  • Кэширование: 30 минут TTL
  • Combined prompts: metadata + section + review в одном запросе
  • Мультиязычная поддержка (русский, казахский, английский)
  • 100% анализ — полный текст статьи без обрезки
  • Авто-fallback — переключение между провайдерами при ошибках

🐛 Известные ограничения

  • Максимальный размер файла: 50 МБ
  • Поддерживаемые форматы статей: .docx
  • Поддерживаемые форматы страниц: .docx, .pdf
  • PDF генерация пока является заглушкой (требуется интеграция с реальной библиотекой)

🛣️ Roadmap

  • Полноценная генерация PDF с библиотекой pdf-lib
  • Поддержка большего количества форматов (.doc, .odt)
  • Экспорт рецензий в PDF
  • Многопользовательский режим
  • База данных для хранения статей
  • API для интеграций
  • Поддержка изображений и формул в статьях

🤝 Вклад в проект

Мы приветствуем вклад в развитие проекта!

  1. Fork репозитория
  2. Создайте ветку для вашей фичи (git checkout -b feature/AmazingFeature)
  3. Закоммитьте изменения (git commit -m 'Add some AmazingFeature')
  4. Запушьте в ветку (git push origin feature/AmazingFeature)
  5. Откройте Pull Request

📄 Лицензия

Этот проект распространяется под лицензией MIT.

📞 Поддержка

Если у вас возникли вопросы или проблемы:

🙏 Благодарности

  • OpenRouter за доступ к DeepSeek и другим моделям
  • Groq за быстрый Llama 3.3 70B
  • Google AI за Gemini с мультиязычной поддержкой
  • Railway за простой и быстрый деплой
  • Tailwind CSS за отличный CSS фреймворк
  • Lucide за красивые иконки
  • Vite за быструю сборку

Развёрнуто на airesume.zhezu.kz — Жезказганский университет имени О.А. Байконурова

Сделано с ❤️ для научного сообщества

About

AI-pre-processing статей научного журнала «Вестник ЖезУ»: spell-check, рецензии, генерация выпуска. Vertex AI + multi-provider fallback.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors