Науковий редактор 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 |