3.1 KiB
3.1 KiB
Export Formats - VoIdea
Дата: 2026-05-10 Статус: Backlog (часть WebUI)
Обзор
Экспорт идей в различных форматах для резервного копирования и интеграции.
Поддерживаемые форматы
1. 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, блогами
# Моя идея
## Описание
Текст идеи
## Анализ
### Координатор
...
### Организатор
...
*Экспортировано: 2026-05-10*
3. PDF
Использование: Печать, отчёты, презентации
- Титульный лист с датой
- Оглавление
- Каждая идея — отдельная секция
- Анализ ИИ-агентов
4. CSV (опционально)
Использование: Аналитика, таблицы
id,title,created_at,analysis_count
uuid,Моя идея,2026-05-01,5
API
# Экспорт всех идей пользователя
GET /api/v1/export?format=json|markdown|pdf
# Экспорт одной идеи
GET /api/v1/ideas/{id}/export?format=json|markdown|pdf
# Параметры
?include_analysis=true # Включить ИИ-анализ
?include_metadata=true # Включить метаданные
Обработка больших объёмов
- Асинхронная генерация — Celery task
- Progress tracking — WebSocket/SSE
- Download link — после завершения
# 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)