143 lines
3.1 KiB
Markdown
143 lines
3.1 KiB
Markdown
# Export Formats - VoIdea
|
||
|
||
**Дата:** 2026-05-10
|
||
**Статус:** Backlog (часть WebUI)
|
||
|
||
---
|
||
|
||
## Обзор
|
||
|
||
Экспорт идей в различных форматах для резервного копирования и интеграции.
|
||
|
||
---
|
||
|
||
## Поддерживаемые форматы
|
||
|
||
### 1. JSON
|
||
|
||
**Использование:** Резервное копирование, импорт в другие системы
|
||
|
||
```json
|
||
{
|
||
"version": "1.0.0",
|
||
"exported_at": "2026-05-10T12:00:00Z",
|
||
"ideas": [
|
||
{
|
||
"id": "uuid",
|
||
"title": "Моя идея",
|
||
"content": "Описание",
|
||
"created_at": "2026-05-01T10:00:00Z",
|
||
"updated_at": "2026-05-05T15:30:00Z",
|
||
"analysis": {
|
||
"coordinator": {...},
|
||
"organizer": {...}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 2. Markdown
|
||
|
||
**Использование:** Интеграция с Obsidian, Notion, блогами
|
||
|
||
```markdown
|
||
# Моя идея
|
||
|
||
## Описание
|
||
Текст идеи
|
||
|
||
## Анализ
|
||
|
||
### Координатор
|
||
...
|
||
|
||
### Организатор
|
||
...
|
||
|
||
*Экспортировано: 2026-05-10*
|
||
```
|
||
|
||
### 3. PDF
|
||
|
||
**Использование:** Печать, отчёты, презентации
|
||
|
||
- Титульный лист с датой
|
||
- Оглавление
|
||
- Каждая идея — отдельная секция
|
||
- Анализ ИИ-агентов
|
||
|
||
### 4. CSV (опционально)
|
||
|
||
**Использование:** Аналитика, таблицы
|
||
|
||
```csv
|
||
id,title,created_at,analysis_count
|
||
uuid,Моя идея,2026-05-01,5
|
||
```
|
||
|
||
---
|
||
|
||
## API
|
||
|
||
```python
|
||
# Экспорт всех идей пользователя
|
||
GET /api/v1/export?format=json|markdown|pdf
|
||
|
||
# Экспорт одной идеи
|
||
GET /api/v1/ideas/{id}/export?format=json|markdown|pdf
|
||
|
||
# Параметры
|
||
?include_analysis=true # Включить ИИ-анализ
|
||
?include_metadata=true # Включить метаданные
|
||
```
|
||
|
||
---
|
||
|
||
## Обработка больших объёмов
|
||
|
||
1. **Асинхронная генерация** — Celery task
|
||
2. **Progress tracking** — WebSocket/SSE
|
||
3. **Download link** — после завершения
|
||
|
||
```python
|
||
# Celery task
|
||
@celery.task
|
||
def generate_export(user_id: UUID, format: str):
|
||
# 1. Создать задачу
|
||
export_task = create_export_task(user_id, format)
|
||
|
||
# 2. Генерация
|
||
result = await generate_file(export_task)
|
||
|
||
# 3. Уведомление
|
||
await notify_user(user_id, export_task.id)
|
||
|
||
return result
|
||
```
|
||
|
||
---
|
||
|
||
## Права доступа
|
||
|
||
- Экспорт только своих идей
|
||
- Анализ доступен только владельцу
|
||
- Логирование всех экспортов
|
||
|
||
---
|
||
|
||
## TODO
|
||
|
||
- [ ] Создать export service
|
||
- [ ] Реализовать JSON export
|
||
- [ ] Реализовать Markdown export
|
||
- [ ] Реализовать PDF export (weasyprint)
|
||
- [ ] Асинхронная генерация
|
||
- [ ] UI (кнопка экспорта)
|
||
- [ ] Тесты
|
||
- [ ] Документация
|
||
|
||
---
|
||
|
||
*Создано: 2026-05-10*
|
||
*Часть WebUI (Block 4)* |