Files
PerfReviewSummarizer/OPENAI_INTEGRATION.md
ZakirovT 057e1f526b init
2026-01-22 00:45:41 +03:00

152 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## OpenAI Интеграция - Резюме изменений
### 📋 Что было добавлено
#### 1. **OpenAI Сервис** (`Services/OpenAiService.cs`)
- Сервис для работы с OpenAI API
- Метод `GenerateSummaryFromCommitMessagesAsync()` - генерирует резюме на основе сообщений коммитов
- Использует GPT-3.5-turbo модель для анализа
- Автоматическая обработка ошибок и валидация API ключа
#### 2. **Интерфейс OpenAI Сервиса** (`Services/IOpenAiService.cs`)
- `GenerateSummaryFromCommitsAsync()` - принимает список CommitInfo объектов
- `GenerateSummaryFromCommitMessagesAsync()` - принимает список строк с сообщениями коммитов
#### 3. **Модели данных** (`Models/OpenAiSummaryRequest.cs`, `Models/OpenAiSummaryResponse.cs`)
- `OpenAiSummaryRequest` - модель для запроса AI саммари с параметрами периода
- `OpenAiSummaryResponse` - модель для ответа с резюме, информацией о периоде и количеством коммитов
#### 4. **API Endpoint** (`POST /api/summary/ai`)
- Новый endpoint для получения AI summary
- Принимает те же параметры, что и традиционный `/api/summary`
- Возвращает саммари от OpenAI вместе с метаданными
#### 5. **Веб-интерфейс**
- **Новые вкладки**: "Traditional Summary" и "AI Summary (OpenAI)"
- **Форма AI Summary**: идентична традиционной форме для удобства
- **Результаты AI Summary**: специальное оформление с блоком для резюме
- **JavaScript логика табов**: переключение между вкладками и обработка двух разных API
#### 6. **Стили**
- CSS для табов (`.tabs`, `.tab-button`, `.tab-content`)
- CSS для AI саммари блока (`.ai-summary-box`, `.ai-summary-text`, `.commits-count`)
- Адаптивный дизайн для мобильных устройств
#### 7. **Конфигурация**
- Добавлена секция `"OpenAI": { "ApiKey": "..." }` в `appsettings.json`
- Пример конфигурации для OpenAI API
#### 8. **Документация** (`README.md`)
- Подробное описание нового функционала
- Инструкции по получению OpenAI API ключа
- Примеры использования нового endpoint через curl и PowerShell
- Информация о конфигурации через переменные окружения
### 🔧 Технические детали
#### Используемый пакет
- OpenAI 2.8.0 (версия совместима с .NET 10)
#### API Model
- Модель: `gpt-3.5-turbo`
- Температура: 0.7 (баланс между креативностью и точностью)
- Макс токены: 1000 (достаточно для полного резюме)
#### Формат запроса к OpenAI
```
POST https://api.openai.com/v1/chat/completions
Authorization: Bearer {API_KEY}
Content-Type: application/json
{
"model": "gpt-3.5-turbo",
"messages": [...],
"temperature": 0.7,
"max_tokens": 1000
}
```
### ✅ Как использовать
#### 1. Настройка API ключа
```json
// appsettings.json
{
"OpenAI": {
"ApiKey": "sk-... (ваш OpenAI API ключ)"
}
}
```
#### 2. Через веб-интерфейс
- Откройте `http://localhost:5000`
- Выберите вкладку "AI Summary (OpenAI)"
- Укажите параметры (путь к репо, период)
- Нажмите "Получить AI Summary"
- Получите резюме от GPT
#### 3. Через API
```bash
curl -X POST http://localhost:5000/api/summary/ai \
-H "Content-Type: application/json" \
-d '{"period": "quarter"}'
```
#### 4. Через PowerShell
```powershell
$body = @{ period = "quarter" } | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/summary/ai" `
-Method Post -Body $body -ContentType "application/json"
```
### 📝 Пример результата
```json
{
"summary": "За текущий квартал была проведена активная разработка с фокусом на новые функции и улучшение производительности. Основные направления работы включили...",
"periodInfo": {
"startDate": "2024-01-01T00:00:00",
"endDate": "2024-03-31T00:00:00",
"description": "С 2024-01-01 по 2024-03-31"
},
"commitsCount": 150,
"commitMessages": ["Fix: ...", "Feat: ...", ...]
}
```
### 🎯 Преимущества
1. **Автоматическое резюме** - GPT анализирует все коммиты и создаёт связный текст
2. **Быстрая обработка** - результат за несколько секунд
3. **Русский язык** - резюме на русском для удобства
4. **Простая интеграция** - используется стандартный OpenAI API
5. **Надёжная обработка ошибок** - информативные сообщения об ошибках
6. **Конфигурируемо** - можно менять модель, температуру и другие параметры
### 🔐 Безопасность
- API ключ хранится в конфигурации (не в коде)
- Используется HTTPS для коммуникации с OpenAI
- Поддержка переменных окружения для CI/CD
- Валидация наличия API ключа при инициализации сервиса
### 📦 Изменённые файлы
1. `PerfReviewSummarizer.Api.csproj` - добавлен пакет OpenAI
2. `Program.cs` - регистрация OpenAI сервиса
3. `appsettings.json` - конфигурация OpenAI
4. `wwwroot/index.html` - новые вкладки и формы
5. `wwwroot/styles.css` - стили для табов и AI блока
6. `wwwroot/app.js` - логика табов и обработка новых форм
7. `README.md` - обновленная документация
### ✨ Новые файлы
1. `Services/IOpenAiService.cs` - интерфейс сервиса
2. `Services/OpenAiService.cs` - реализация сервиса
3. `Models/OpenAiSummaryRequest.cs` - модели для OpenAI
---
**Проект успешно компилируется и готов к использованию!**