Requirements » History » Version 1
Hardelele User, 02/16/2026 11:21 AM
User requirements
| 1 | 1 | Hardelele User | # Пользовательские требования |
|---|---|---|---|
| 2 | |||
| 3 | > Требования сформулированы с позиции заказчика (пользователя продукта). |
||
| 4 | > Формат: User Story + статус реализации. |
||
| 5 | > Источники: frontend-issues.md, backend-issues.md, narrator-ai-issues.md, feature-roadmap.md, architecture-review.md |
||
| 6 | |||
| 7 | --- |
||
| 8 | |||
| 9 | ## Сводка по доменам |
||
| 10 | |||
| 11 | | Домен | Реализовано | Открыто | Всего | |
||
| 12 | |-------|-------------|---------|-------| |
||
| 13 | | Story Management | 14 | 2 | 16 | |
||
| 14 | | AI Narrator | 17 | 2 | 19 | |
||
| 15 | | Characters & World | 8 | 1 | 9 | |
||
| 16 | | Auth & Accounts | 5 | 4 | 9 | |
||
| 17 | | Export & Analytics | 3 | 0 | 3 | |
||
| 18 | | Collaboration | 0 | 2 | 2 | |
||
| 19 | | Quality (NFR) | 22 | 6 | 28 | |
||
| 20 | | **Итого** | **69** | **17** | **86** | |
||
| 21 | |||
| 22 | --- |
||
| 23 | |||
| 24 | ## 1. Story Management (Управление историей) |
||
| 25 | |||
| 26 | ### Реализованные |
||
| 27 | |||
| 28 | - **REQ-SM-01** ✅ Как писатель, я хочу создавать проекты с главами и блоками текста, чтобы структурировать историю. |
||
| 29 | - **REQ-SM-02** ✅ Как писатель, я хочу перетаскивать блоки (drag-and-drop) для изменения порядка. |
||
| 30 | *FR5, F5* |
||
| 31 | - **REQ-SM-03** ✅ Как писатель, я хочу редактировать текст блоков inline и сохранять по Ctrl+S. |
||
| 32 | - **REQ-SM-04** ✅ Как писатель, я хочу видеть подтверждение перед удалением блока. |
||
| 33 | *F11* |
||
| 34 | - **REQ-SM-05** ✅ Как писатель, я хочу вставлять блоки в середину главы, а не только в конец. |
||
| 35 | *Narrator issue #28* |
||
| 36 | - **REQ-SM-06** ✅ Как писатель, я хочу разделять блоки (split) и объединять (merge). |
||
| 37 | *Narrator issue #23, #28* |
||
| 38 | - **REQ-SM-07** ✅ Как писатель, я хочу видеть историю версий блока и восстанавливать предыдущие. |
||
| 39 | *FR12* |
||
| 40 | - **REQ-SM-08** ✅ Как писатель, я хочу мягкое удаление проектов/глав с возможностью восстановления. |
||
| 41 | *Architecture D3* |
||
| 42 | - **REQ-SM-09** ✅ Как писатель, я хочу изменять размер панели чата (drag-to-resize). |
||
| 43 | *FR6, F24* |
||
| 44 | - **REQ-SM-10** ✅ Как писатель, я хочу управлять сессиями чата: переключать, создавать, удалять. |
||
| 45 | *FR7, F25, F26* |
||
| 46 | - **REQ-SM-11** ✅ Как писатель, я хочу видеть количество слов при наведении на блок. |
||
| 47 | *F30* |
||
| 48 | - **REQ-SM-12** ✅ Как писатель, я хочу видеть подсветку блоков, изменённых AI. |
||
| 49 | *F34, F35* |
||
| 50 | - **REQ-SM-13** ✅ Как писатель, я хочу видеть табы чатов (как в Cursor/браузере) для быстрого переключения. |
||
| 51 | *F33* |
||
| 52 | - **REQ-SM-14** ✅ Как писатель, я хочу кликабельные quick-action кнопки в пустом чате. |
||
| 53 | *F32* |
||
| 54 | |||
| 55 | ### Открытые |
||
| 56 | |||
| 57 | - **REQ-SM-15** 🔴 Как писатель, я хочу видеть diff-отображение AI-правок в стиле Git с возможностью частичного принятия. |
||
| 58 | *F36, NAI-7* |
||
| 59 | - **REQ-SM-16** 🔴 Как писатель, я хочу экспорт в EPUB и PDF (помимо TXT/DOCX). |
||
| 60 | *FR10 follow-up* |
||
| 61 | |||
| 62 | --- |
||
| 63 | |||
| 64 | ## 2. AI Narrator (AI-ассистент) |
||
| 65 | |||
| 66 | ### Реализованные |
||
| 67 | |||
| 68 | - **REQ-AI-01** ✅ Как писатель, я хочу чтобы AI писал прозу по моему запросу, создавая блоки текста 800-2000 слов. |
||
| 69 | *Narrator #12, #13* |
||
| 70 | - **REQ-AI-02** ✅ Как писатель, я хочу чтобы AI автоматически создавал персонажей, лор и события при генерации прозы. |
||
| 71 | *Narrator #21* |
||
| 72 | - **REQ-AI-03** ✅ Как писатель, я хочу чтобы AI НЕ изобретал детали мира, а спрашивал меня. |
||
| 73 | *Narrator #20* |
||
| 74 | - **REQ-AI-04** ✅ Как писатель, я хочу видеть процесс работы AI в реальном времени (стриминг). |
||
| 75 | *Narrator #1, #22, #27* |
||
| 76 | - **REQ-AI-05** ✅ Как писатель, я хочу останавливать AI в любой момент (Stop button). |
||
| 77 | *Narrator #4* |
||
| 78 | - **REQ-AI-06** ✅ Как писатель, я хочу чтобы AI привязывал события к таймлайну. |
||
| 79 | *Narrator #29, F41* |
||
| 80 | - **REQ-AI-07** ✅ Как писатель, я хочу чтобы AI соблюдал причинно-следственную связь (персонаж не реагирует на неизвестное). |
||
| 81 | *Narrator #30, NAI-9* |
||
| 82 | - **REQ-AI-08** ✅ Как писатель, я хочу чтобы AI отслеживал местоположение персонажей. |
||
| 83 | *Narrator #26* |
||
| 84 | - **REQ-AI-09** ✅ Как писатель, я хочу чтобы AI расширял слишком короткие блоки (auto-expand). |
||
| 85 | *Narrator #12* |
||
| 86 | - **REQ-AI-10** ✅ Как писатель, я хочу давать AI пользовательские инструкции (стиль, правила). |
||
| 87 | *FR9* |
||
| 88 | - **REQ-AI-11** ✅ Как писатель, я хочу получать AI-подсказки для улучшения блоков (improve, expand, alternatives, plot hooks). |
||
| 89 | *FR13* |
||
| 90 | - **REQ-AI-12** ✅ Как писатель, я хочу чтобы AI не дублировал себя и не зацикливался. |
||
| 91 | *Narrator #16, #17* |
||
| 92 | - **REQ-AI-13** ✅ Как писатель, я хочу чтобы AI знал, какую главу я сейчас редактирую. |
||
| 93 | *Narrator #24* |
||
| 94 | - **REQ-AI-14** ✅ Как писатель, я хочу чтобы AI не создавал дубликатов персонажей при опечатках (fuzzy matching). |
||
| 95 | *Narrator #15, NAI-11* |
||
| 96 | - **REQ-AI-15** ✅ Как писатель, я хочу чтобы AI извлекал упомянутые сущности из моего запроса для контекста. |
||
| 97 | *F37* |
||
| 98 | - **REQ-AI-16** ✅ Как писатель, я хочу чтобы AI обновлял сущности напрямую, а не создавал новые блоки. |
||
| 99 | *F40* |
||
| 100 | - **REQ-AI-17** ✅ Как писатель, я хочу чтобы AI учился на моих правках (Project Style Memory). |
||
| 101 | *NAI-3* |
||
| 102 | |||
| 103 | ### Открытые |
||
| 104 | |||
| 105 | - **REQ-AI-18** 🔴 Как писатель, я хочу выбирать между разными AI-моделями (GPT vs Claude) и сравнивать результаты. |
||
| 106 | *F38* |
||
| 107 | - **REQ-AI-19** 🔴 Как писатель, я хочу чтобы AI использовал multi-agent orchestrator для сложных задач. |
||
| 108 | *NAI-12* |
||
| 109 | |||
| 110 | --- |
||
| 111 | |||
| 112 | ## 3. Characters & World (Персонажи и мир) |
||
| 113 | |||
| 114 | ### Реализованные |
||
| 115 | |||
| 116 | - **REQ-CW-01** ✅ Как писатель, я хочу создавать/редактировать/удалять персонажей с трейтами и фрагментами. |
||
| 117 | *FR4* |
||
| 118 | - **REQ-CW-02** ✅ Как писатель, я хочу создавать/редактировать/удалять события на таймлайне. |
||
| 119 | *FR4* |
||
| 120 | - **REQ-CW-03** ✅ Как писатель, я хочу создавать/редактировать/удалять лор-записи с категориями и тегами. |
||
| 121 | *FR4* |
||
| 122 | - **REQ-CW-04** ✅ Как писатель, я хочу видеть локации как страницу проекта. |
||
| 123 | *F29* |
||
| 124 | - **REQ-CW-05** ✅ Как писатель, я хочу чтобы сущности имели темпоральные рамки (что когда действительно). |
||
| 125 | - **REQ-CW-06** ✅ Как писатель, я хочу чтобы AI использовал лор с учётом таймлайна. |
||
| 126 | *Narrator #25* |
||
| 127 | - **REQ-CW-07** ✅ Как писатель, я хочу inline-редактирование на страницах сущностей. |
||
| 128 | *FR4, F28* |
||
| 129 | - **REQ-CW-08** ✅ Как писатель, я хочу видеть health-отчёт по персонажам без фрагментов, блокам без событий и т.д. |
||
| 130 | *NAI-1* |
||
| 131 | |||
| 132 | ### Открытые |
||
| 133 | |||
| 134 | - **REQ-CW-09** 🔴 Как писатель, я хочу задавать правила для книги (Book Rules) в структурированном виде, которые AI обязан соблюдать. |
||
| 135 | *FR17* |
||
| 136 | |||
| 137 | --- |
||
| 138 | |||
| 139 | ## 4. Auth & Accounts (Авторизация и аккаунты) |
||
| 140 | |||
| 141 | ### Реализованные |
||
| 142 | |||
| 143 | - **REQ-AU-01** ✅ Как пользователь, я хочу регистрироваться и входить по email + пароль. |
||
| 144 | *FR1* |
||
| 145 | - **REQ-AU-02** ✅ Как пользователь, я хочу подписки с лимитами (Free / Pro / Enterprise). |
||
| 146 | *FR2* |
||
| 147 | - **REQ-AU-03** ✅ Как пользователь, я хочу настройки профиля, темы и языка. |
||
| 148 | *FR3* |
||
| 149 | - **REQ-AU-04** ✅ Как пользователь, я хочу сброс пароля. |
||
| 150 | *AUTH3* |
||
| 151 | - **REQ-AU-05** ✅ Как пользователь, я хочу чтобы мои данные были защищены (авторизация на все endpoints). |
||
| 152 | *B1, B2, S1* |
||
| 153 | |||
| 154 | ### Открытые |
||
| 155 | |||
| 156 | - **REQ-AU-06** 🔴 Как пользователь, я хочу входить через Google OAuth. |
||
| 157 | *AUTH1* |
||
| 158 | - **REQ-AU-07** 🔴 Как пользователь, я хочу подтверждение email при регистрации. |
||
| 159 | *AUTH2* |
||
| 160 | - **REQ-AU-08** 🔴 Как пользователь, я хочу видеть пользовательское соглашение и политику конфиденциальности. |
||
| 161 | *AUTH4 — Critical для продакшена* |
||
| 162 | - **REQ-AU-09** 🔴 Как пользователь, я хочу лендинг-страницу продукта. |
||
| 163 | *PROD1* |
||
| 164 | |||
| 165 | --- |
||
| 166 | |||
| 167 | ## 5. Export & Analytics (Экспорт и аналитика) |
||
| 168 | |||
| 169 | ### Реализованные |
||
| 170 | |||
| 171 | - **REQ-EA-01** ✅ Как писатель, я хочу экспортировать историю в TXT и DOCX. |
||
| 172 | *FR10* |
||
| 173 | - **REQ-EA-02** ✅ Как писатель, я хочу видеть статистику: слова, главы, персонажи, прогресс по дням. |
||
| 174 | *FR14* |
||
| 175 | - **REQ-EA-03** ✅ Как писатель, я хочу видеть мини-статистику прямо на канвасе. |
||
| 176 | *FR14* |
||
| 177 | |||
| 178 | --- |
||
| 179 | |||
| 180 | ## 6. Collaboration (Совместная работа) |
||
| 181 | |||
| 182 | ### Открытые |
||
| 183 | |||
| 184 | - **REQ-CO-01** 🔴 Как писатель, я хочу делиться проектами с другими пользователями (роли: owner, editor, viewer). |
||
| 185 | *FR11* |
||
| 186 | - **REQ-CO-02** 🔴 Как писатель, я хочу видеть присутствие других пользователей в проекте в реальном времени. |
||
| 187 | *FR16* |
||
| 188 | |||
| 189 | --- |
||
| 190 | |||
| 191 | ## 7. Quality — Non-Functional Requirements (Нефункциональные) |
||
| 192 | |||
| 193 | ### Реализованные |
||
| 194 | |||
| 195 | - **REQ-NF-01** ✅ Система должна обрабатывать ошибки API с уведомлением пользователя. |
||
| 196 | *F4, F5, FE8* |
||
| 197 | - **REQ-NF-02** ✅ WebSocket должен автоматически переподключаться. |
||
| 198 | *F10* |
||
| 199 | - **REQ-NF-03** ✅ Система должна работать на мобильных устройствах (responsive layout). |
||
| 200 | *FR15* |
||
| 201 | - **REQ-NF-04** ✅ Стримы должны иметь timeout (5 минут). |
||
| 202 | *F7* |
||
| 203 | - **REQ-NF-05** ✅ Должна быть защита от race condition при быстрой отправке команд. |
||
| 204 | *F3* |
||
| 205 | - **REQ-NF-06** ✅ Должна быть защита от дублирования запросов. |
||
| 206 | *Narrator #17* |
||
| 207 | - **REQ-NF-07** ✅ API endpoints должны валидировать UUID. |
||
| 208 | *S3, A4* |
||
| 209 | - **REQ-NF-08** ✅ API должно иметь rate limiting (60 req/min global, 10 req/min AI). |
||
| 210 | *S2* |
||
| 211 | - **REQ-NF-09** ✅ Ошибки OpenAI не должны раскрывать API ключ. |
||
| 212 | *S4* |
||
| 213 | - **REQ-NF-10** ✅ Должна быть единая CORS конфигурация. |
||
| 214 | *S5* |
||
| 215 | - **REQ-NF-11** ✅ Должен быть health check endpoint. |
||
| 216 | *B6* |
||
| 217 | - **REQ-NF-12** ✅ Должны быть индексы на FK в PostgreSQL. |
||
| 218 | *D1, D2* |
||
| 219 | - **REQ-NF-13** ✅ Должна быть Error Boundary в React. |
||
| 220 | *F2* |
||
| 221 | - **REQ-NF-14** ✅ Должно быть структурированное логирование запросов. |
||
| 222 | *B10* |
||
| 223 | - **REQ-NF-15** ✅ Должен быть graceful shutdown. |
||
| 224 | *R1* |
||
| 225 | - **REQ-NF-16** ✅ Ретраи при ошибках OpenAI (429, 500, 502, 503). |
||
| 226 | *R2* |
||
| 227 | - **REQ-NF-17** ✅ Stores должны очищаться при смене проекта. |
||
| 228 | *FE2* |
||
| 229 | - **REQ-NF-18** ✅ mergeBlocks/splitBlock должны сохранять junction-связи. |
||
| 230 | *R3* |
||
| 231 | - **REQ-NF-19** ✅ ARIA labels для доступности. |
||
| 232 | *F16* |
||
| 233 | - **REQ-NF-20** ✅ Мемоизация компонентов (React.memo). |
||
| 234 | *F19* |
||
| 235 | - **REQ-NF-21** ✅ Чат не должен зависать при недоступном сервере (10с timeout). |
||
| 236 | *F31* |
||
| 237 | - **REQ-NF-22** ✅ Валидация temporal данных (validFrom <= validUntil). |
||
| 238 | *A5* |
||
| 239 | |||
| 240 | ### Открытые |
||
| 241 | |||
| 242 | - **REQ-NF-23** 🔴 Мобильный UI требует глубокой доработки: hover→touch, bottom-sheet NarratorPanel, touch targets >=48px. |
||
| 243 | *F39* |
||
| 244 | - **REQ-NF-24** 🔴 N+1 запросы в CharactersService требуют оптимизации. |
||
| 245 | *A3* |
||
| 246 | - **REQ-NF-25** 🔴 Temporal data consistency: блоки могут ссылаться на невалидные трейты. |
||
| 247 | *Backend D1* |
||
| 248 | - **REQ-NF-26** 🔴 fullStory endpoint загружает весь граф проекта — нужна пагинация/lazy loading. |
||
| 249 | *Architecture P2* |
||
| 250 | - **REQ-NF-27** 🔴 Abort mid-tool может оставлять orphaned entities. |
||
| 251 | *Architecture B1* |
||
| 252 | - **REQ-NF-28** 🔴 Нет shared types между frontend и backend. |
||
| 253 | *Architecture A1* |
||
| 254 | |||
| 255 | --- |
||
| 256 | |||
| 257 | ## Фичи для будущих версий (Backlog) |
||
| 258 | |||
| 259 | - **REQ-BL-01** 🔮 Аудио-ввод через Whisper API. *FEAT1* |
||
| 260 | - **REQ-BL-02** 🔮 Story Health Report в контексте AI. *NAI-1 (реализовано backend, можно расширять)* |
||
| 261 | - **REQ-BL-03** 🔮 Project metadata: жанр, формат, целевой объём, акты. *NAI-8* |
||
| 262 | |||
| 263 | --- |
||
| 264 | |||
| 265 | *Последнее обновление: 2026-02-16* |