Научный редактор Connect.Software — редактор форматированного текста на базе Tiptap для академического письма. Он поддерживает формулы LaTeX, автоматическое сохранение, историю версий и сохранение публикаций через слой базы данных Ring Platform.
Статус: Фаза 2 (спринты 2.1–2.3) завершены. Поддержка рисунков/таблиц и экспорт запланированы в спринтах 2.4–2.5.
| Возможность | Описание |
|---|---|
| Форматированный текст | Заголовки (H1–H6), жирный, курсив, подчёркивание, списки, цитаты, блоки кода, таблицы, ссылки, изображения |
| LaTeX | Инлайн и блочные формулы через KaTeX; модальное окно формул с предпросмотром и шаблонами |
| Автосохранение | Сохранение с задержкой 30 с; первое сохранение создаёт публикацию, далее обновление через PUT |
| История версий | Снимки и восстановление версий; список версий с датами и опциональными описаниями |
| Публикации | Содержимое хранится как Tiptap JSON; загрузка по или создание новой |
Научный редактор Connect.Software — редактор форматированного текста на базе Tiptap для академического письма. Он поддерживает формулы LaTeX, автоматическое сохранение, историю версий и сохранение публикаций через слой базы данных Ring Platform.
Статус: Фаза 2 (спринты 2.1–2.3) завершены. Поддержка рисунков/таблиц и экспорт запланированы в спринтах 2.4–2.5.
| Возможность | Описание |
|---|---|
| Форматированный текст | Заголовки (H1–H6), жирный, курсив, подчёркивание, списки, цитаты, блоки кода, таблицы, ссылки, изображения |
| LaTeX | Инлайн и блочные формулы через KaTeX; модальное окно формул с предпросмотром и шаблонами |
| Автосохранение | Сохранение с задержкой 30 с; первое сохранение создаёт публикацию, далее обновление через PUT |
| История версий | Снимки и восстановление версий; список версий с датами и опциональными описаниями |
| Публикации | Содержимое хранится как Tiptap JSON; загрузка по или создание новой |
Научный редактор Connect.Software — редактор форматированного текста на базе Tiptap для академического письма. Он поддерживает формулы LaTeX, автоматическое сохранение, историю версий и сохранение публикаций через слой базы данных Ring Platform.
Статус: Фаза 2 (спринты 2.1–2.3) завершены. Поддержка рисунков/таблиц и экспорт запланированы в спринтах 2.4–2.5.
| Возможность | Описание |
|---|---|
| Форматированный текст | Заголовки (H1–H6), жирный, курсив, подчёркивание, списки, цитаты, блоки кода, таблицы, ссылки, изображения |
| LaTeX | Инлайн и блочные формулы через KaTeX; модальное окно формул с предпросмотром и шаблонами |
| Автосохранение | Сохранение с задержкой 30 с; первое сохранение создаёт публикацию, далее обновление через PUT |
| История версий | Снимки и восстановление версий; список версий с датами и опциональными описаниями |
| Публикации | Содержимое хранится как Tiptap JSON; загрузка по или создание новой |
?id=...?id=...?id=...Редактор использует Tiptap с StarterKit и расширениями для научного письма:
Редактор использует Tiptap с StarterKit и расширениями для научного письма:
Редактор использует Tiptap с StarterKit и расширениями для научного письма:
Содержимое хранится как Tiptap JSON в поле публикации content; редактор принимает начальное содержимое как строку HTML или JSON для загрузки сохранённых публикаций.
Содержимое хранится как Tiptap JSON в поле публикации content; редактор принимает начальное содержимое как строку HTML или JSON для загрузки сохранённых публикаций.
Содержимое хранится как Tiptap JSON в поле публикации content; редактор принимает начальное содержимое как строку HTML или JSON для загрузки сохранённых публикаций.
Формулы хранятся как собственные узлы Tiptap (mathBlock) с атрибутами latex и display.
Формулы хранятся как собственные узлы Tiptap (mathBlock) с атрибутами latex и display.
Формулы хранятся как собственные узлы Tiptap (mathBlock) с атрибутами latex и display.
?id= в URL; первое «Сохранить» или первое автосохранение создаёт публикацию через POST /api/publications и устанавливает id публикации для последующих сохранений.?id=<publicationId>; страница загружает публикацию и устанавливает заголовок и содержимое (JSON). Автосохранение и ручное «Сохранить» используют PUT /api/publications/:id.?id= в URL; первое «Сохранить» или первое автосохранение создаёт публикацию через POST /api/publications и устанавливает id публикации для последующих сохранений.?id=<publicationId>; страница загружает публикацию и устанавливает заголовок и содержимое (JSON). Автосохранение и ручное «Сохранить» используют PUT /api/publications/:id.?id= в URL; первое «Сохранить» или первое автосохранение создаёт публикацию через POST /api/publications и устанавливает id публикации для последующих сохранений.?id=<publicationId>; страница загружает публикацию и устанавливает заголовок и содержимое (JSON). Автосохранение и ручное «Сохранить» используют PUT /api/publications/:id.Публикации и версии используют абстракцию базы данных Ring Platform (PostgreSQL с JSONB):
Публикации и версии используют абстракцию базы данных Ring Platform (PostgreSQL с JSONB):
Публикации и версии используют абстракцию базы данных Ring Platform (PostgreSQL с JSONB):
publications: id, data (JSONB), created_at, updated_at.data содержит: user_id, title, content (Tiptap JSON), status, template_id.publication_versions: id, data (JSONB), created_at, updated_at.data содержит: publication_id, version_number, content, change_summary, created_by.publications: id, data (JSONB), created_at, updated_at.data содержит: user_id, title, content (Tiptap JSON), status, template_id.publication_versions: id, data (JSONB), created_at, updated_at.data содержит: publication_id, version_number, content, change_summary, created_by.publications: id, data (JSONB), created_at, updated_at.data содержит: user_id, title, content (Tiptap JSON), status, template_id.publication_versions: id, data (JSONB), created_at, updated_at.data содержит: publication_id, version_number, content, change_summary, created_by.Схема определена в data/schema.sql; адаптер PostgreSQL имеет fieldMappings для обеих коллекций.
Схема определена в data/schema.sql; адаптер PostgreSQL имеет fieldMappings для обеих коллекций.
Схема определена в data/schema.sql; адаптер PostgreSQL имеет fieldMappings для обеих коллекций.
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/publications | Список публикаций текущего пользователя |
| POST | /api/publications | Создать публикацию (body: title, content, status, template_id) |
| GET | /api/publications/[id] | Получить публикацию (проверка владения) |
| PUT | /api/publications/[id] | Обновить публикацию (проверка владения) |
| DELETE | /api/publications/[id] | Удалить публикацию (проверка владения) |
| GET | /api/publications/[id]/versions | Список версий публикации |
| POST | /api/publications/[id]/versions | Снимок (action: snapshot) или восстановление (action: restore, versionId) |
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/publications | Список публикаций текущего пользователя |
| POST | /api/publications | Создать публикацию (body: title, content, status, template_id) |
| GET | /api/publications/[id] | Получить публикацию (проверка владения) |
| PUT | /api/publications/[id] | Обновить публикацию (проверка владения) |
| DELETE | /api/publications/[id] | Удалить публикацию (проверка владения) |
| GET | /api/publications/[id]/versions | Список версий публикации |
| POST | /api/publications/[id]/versions | Снимок (action: snapshot) или восстановление (action: restore, versionId) |
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/publications | Список публикаций текущего пользователя |
| POST | /api/publications | Создать публикацию (body: title, content, status, template_id) |
| GET | /api/publications/[id] | Получить публикацию (проверка владения) |
| PUT | /api/publications/[id] | Обновить публикацию (проверка владения) |
| DELETE | /api/publications/[id] | Удалить публикацию (проверка владения) |
| GET | /api/publications/[id]/versions | Список версий публикации |
| POST | /api/publications/[id]/versions | Снимок (action: snapshot) или восстановление (action: restore, versionId) |
Все маршруты требуют аутентификации; для get/update/delete и версий проверяется владение.
Все маршруты требуют аутентификации; для get/update/delete и версий проверяется владение.
Все маршруты требуют аутентификации; для get/update/delete и версий проверяется владение.
| Область | Путь |
|---|---|
| Страница редактора | app/(authenticated)/[locale]/editor/page.tsx |
| Научный редактор | components/editor/scientific-editor.tsx |
| Панель инструментов | components/editor/editor-toolbar.tsx |
| Расширение LaTeX | components/editor/extensions/latex-extension.tsx |
| Модальное окно формул | components/editor/equation-editor.tsx |
| Панель истории версий | components/editor/version-history-panel.tsx |
| Хук автосохранения | hooks/use-auto-save.ts |
| Типы публикаций | features/publications/types/index.ts |
| Сервис публикаций | features/publications/services/publication-service.ts |
| API-маршруты | app/(public)/api/publications/ |
| Область | Путь |
|---|---|
| Страница редактора | app/(authenticated)/[locale]/editor/page.tsx |
| Научный редактор | components/editor/scientific-editor.tsx |
| Панель инструментов | components/editor/editor-toolbar.tsx |
| Расширение LaTeX | components/editor/extensions/latex-extension.tsx |
| Модальное окно формул | components/editor/equation-editor.tsx |
| Панель истории версий | components/editor/version-history-panel.tsx |
| Хук автосохранения | hooks/use-auto-save.ts |
| Типы публикаций | features/publications/types/index.ts |
| Сервис публикаций | features/publications/services/publication-service.ts |
| API-маршруты | app/(public)/api/publications/ |
| Область | Путь |
|---|---|
| Страница редактора | app/(authenticated)/[locale]/editor/page.tsx |
| Научный редактор | components/editor/scientific-editor.tsx |
| Панель инструментов | components/editor/editor-toolbar.tsx |
| Расширение LaTeX | components/editor/extensions/latex-extension.tsx |
| Модальное окно формул | components/editor/equation-editor.tsx |
| Панель истории версий | components/editor/version-history-panel.tsx |
| Хук автосохранения | hooks/use-auto-save.ts |
| Типы публикаций | features/publications/types/index.ts |
| Сервис публикаций | features/publications/services/publication-service.ts |
| API-маршруты | app/(public)/api/publications/ |
/editor (или /[locale]/editor). Редактор загружается с типовым научным шаблоном; id публикации устанавливается при первом сохранении./editor?id=<publicationId>. Страница получает публикацию и устанавливает заголовок и содержимое (Tiptap JSON) в редакторе./editor (или /[locale]/editor). Редактор загружается с типовым научным шаблоном; id публикации устанавливается при первом сохранении./editor?id=<publicationId>. Страница получает публикацию и устанавливает заголовок и содержимое (Tiptap JSON) в редакторе./editor (или /[locale]/editor). Редактор загружается с типовым научным шаблоном; id публикации устанавливается при первом сохранении./editor?id=<publicationId>. Страница получает публикацию и устанавливает заголовок и содержимое (Tiptap JSON) в редакторе.Восстановление не удаляет версии; оно обновляет содержимое публикации, история версий сохраняется.
Восстановление не удаляет версии; оно обновляет содержимое публикации, история версий сохраняется.
Восстановление не удаляет версии; оно обновляет содержимое публикации, история версий сохраняется.
Подробный разбор спринтов: Фаза 2: Улучшение научного редактора.
Подробный разбор спринтов: Фаза 2: Улучшение научного редактора.
Подробный разбор спринтов: Фаза 2: Улучшение научного редактора.
| Схема | data/schema.sql |
| Схема | data/schema.sql |
| Схема | data/schema.sql |