152 lines
6.8 KiB
Markdown
152 lines
6.8 KiB
Markdown
## 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
|
||
|
||
---
|
||
|
||
**Проект успешно компилируется и готов к использованию!**
|