145 lines
6.2 KiB
Markdown
145 lines
6.2 KiB
Markdown
📊 Writer IDE — Summary проекта
|
||
🎯 Видение проекта
|
||
Локально-ориентированное веб-приложение (IDE для писателей), объединяющее rich-text редактирование, структурированное управление сюжетом и бесшовную интеграцию AI-ассистента для генерации, редактуры и анализа текста.
|
||
🛠️ Технологический стек
|
||
|
||
Frontend: Next.js 14+ (App Router), TypeScript, Tailwind CSS, Tiptap (редактор), Zustand (state management)
|
||
Backend: FastAPI (Python), Pydantic, Uvicorn
|
||
AI Интеграция: Ollama (локально), OpenRouter API (облачные модели)
|
||
Разработка: Zed IDE + AI-агенты (Qwen 2.5 Coder 7b/32b через OpenRouter)
|
||
|
||
✅ Что уже сделано (Этап 1: Фундамент)
|
||
Задача
|
||
|
||
Статус
|
||
|
||
Что реализовано
|
||
1.1 Инициализация Frontend
|
||
|
||
✅ Выполнено
|
||
|
||
Next.js + Tailwind + Tiptap + Zustand установлены
|
||
1.2 Zustand Store
|
||
|
||
✅ Выполнено
|
||
|
||
appStore.ts с управлением документами (id, title, content, type)
|
||
1.3 Layout (3 колонки)
|
||
|
||
✅ Выполнено
|
||
|
||
FileExplorer (слева), StoryExplorer (посередине), Editor (справа)
|
||
1.4 Tiptap Editor
|
||
|
||
✅ Выполнено
|
||
|
||
Rich-text редактор с расширениями: TextStyle, Color, Underline, Blockquote, интеграция с Zustand
|
||
1.5 Toolbar
|
||
|
||
✅ Выполнено
|
||
|
||
Панель форматирования: Bold, Italic, Underline, Quote, Color picker, Clear formatting, Font family, Font size
|
||
1.6 Backend инициализация
|
||
|
||
✅ Выполнено
|
||
|
||
FastAPI с CORS, health check endpoint, структура папок (routers, services, models)
|
||
1.7 Frontend-Backend интеграция
|
||
|
||
✅ Выполнено
|
||
|
||
API endpoints для документов, автосохранение с debounce, персистентность данных
|
||
Итог Этапа 1: Рабочее приложение с rich-text редактором, трехколоночным интерфейсом и синхронизацией с backend.
|
||
🟡 Что планируется (Этап 2: AI Интеграция)
|
||
Задача
|
||
|
||
Статус
|
||
|
||
Что будет реализовано
|
||
2.1 Backend AI сервис
|
||
|
||
⏳ Готово к началу
|
||
|
||
LLMRouter для Ollama и OpenRouter, эндпоинт /api/ai/generate
|
||
2.2 Система пресетов
|
||
|
||
⏳ Ожидает
|
||
|
||
Пресеты: Creative Draft (temp 0.85), Editor (temp 0.3), Brainstorm (temp 1.0)
|
||
2.3 Frontend AI клиент
|
||
|
||
⏳ Ожидает
|
||
|
||
Типизированный API клиент ai-api.ts для вызова генерации
|
||
2.4 Inline AI меню
|
||
|
||
⏳ Ожидает
|
||
|
||
Всплывающее меню при выделении текста с действиями: Переписать, Расширить, Упростить
|
||
2.5 Diff view
|
||
|
||
⏳ Ожидает
|
||
|
||
Визуальное сравнение оригинального текста и AI-предложения с кнопками Accept/Reject
|
||
2.6 Интеграция AI действий
|
||
|
||
⏳ Ожидает
|
||
|
||
Связывание AIMenu + AIDiffView + API для полноценного AI-редактирования
|
||
Цель Этапа 2: Пользователь может выделить текст, выбрать AI действие, увидеть предпросмотр изменений в diff view и принять/отклонить.
|
||
🟠 Что планируется (Этап 3: Контекст и Story Bible)
|
||
|
||
Автоматическое извлечение сущностей (персонажи, локации) из текста
|
||
Панель Story Bible для управления контекстом
|
||
Умная подача контекста в промпты для консистентности повествования
|
||
Фоновый агент для обновления Story Bible при сохранении глав
|
||
|
||
🔴 Что планируется (Этап 4: Экспорт)
|
||
|
||
Экспорт в PDF с форматированием (шрифты, отступы, оглавление)
|
||
Экспорт в EPUB/FB2 для читалок
|
||
Генерация иллюстраций (опционально)
|
||
|
||
🎯 Ключевые архитектурные решения
|
||
|
||
Local First: Данные пользователя хранятся локально (backend как прокси к файловой системе)
|
||
AI Router: Абстракция над Ollama и OpenRouter для гибкого переключения между локальными и облачными моделями
|
||
Presets System: Жесткое разделение параметров генерации в зависимости от задачи (творчество vs анализ)
|
||
Inline AI: AI-действия не прерывают поток писателя (встроенные меню, diff view вместо чата)
|
||
Type Safety: Строгая типизация на frontend (TypeScript) и backend (Pydantic)
|
||
|
||
📁 Структура проекта
|
||
|
||
1
|
||
2
|
||
3
|
||
4
|
||
5
|
||
6
|
||
7
|
||
8
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
16
|
||
17
|
||
18
|
||
19
|
||
|
||
🚀 Следующий шаг (завтра)
|
||
Задача 2.1: Backend AI сервис
|
||
|
||
Модель: qwen/qwen-2.5-coder-32b-instruct (через OpenRouter)
|
||
Что сделать: Создать backend/services/llm_router.py с поддержкой Ollama и OpenRouter
|
||
Критерий успеха: Эндпоинт POST /api/ai/generate принимает промпт и возвращает сгенерированный текст
|
||
|
||
💡 Важные заметки
|
||
|
||
Python 3.14 на сервере — используем пакеты без жестких версий в requirements.txt
|
||
Zed IDE вместо VS Code для экономии памяти (16 GB RAM)
|
||
Для разработки используем OpenRouter (Qwen 2.5 Coder), для тестирования функционала — локальную Ollama
|