Blame

aafe1b Dima 2026-02-18 14:31:55
123
1
# Руководство по написанию технической документации SKIF.PRO
2
3
> **Для кого этот документ:** авторы статей (техподдержка, продакт-менеджеры, разработчики, аналитики) и AI-агент первичной проверки.
4
>
5
> **Почему это важно:** статья работает правильно только если автор точно знает, кто её будет читать и зачем. От этого зависят структура, язык и глубина проработки.
6
>
7
> **Связанные документы:**
8
> - `wiki-structure-guidelines.md` — правила размещения статьи в структуре Wiki
9
> - `ai-checklist.md` — единый чек-лист для AI-агента проверки
10
11
---
12
13
## Часть 1. Принцип «От кого → Кому»: фундамент качества статьи
14
15
Каждая статья в вики — это **канал коммуникации между двумя конкретными сторонами**. Перед началом работы автор обязан ответить на два вопроса:
16
17
1. **Кто источник информации?** (кто владеет знанием)
18
2. **Кто получатель?** (кто будет читать и зачем)
19
20
Качество статьи измеряется тем, насколько точно она закрывает потребность получателя — не больше и не меньше.
21
22
---
23
24
### 1.1. Матрица стейкхолдеров
25
26
#### Получатели (читатели)
27
28
| ID | Роль | Кто это | Контекст чтения |
29
|----|------|---------|-----------------|
30
| `R1` | **Конечный клиент** | Пользователь продукта SKIF.PRO: диспетчер, логист, руководитель автопарка | Решает конкретную задачу прямо сейчас. Не знает технических деталей. Ожидает пошаговые инструкции. |
31
| `R2` | **Интегратор** | Технический специалист компании-партнёра, который внедряет или настраивает SKIF.PRO у клиента | Ищет точные технические параметры: форматы, схемы, ограничения. Умеет читать технические тексты. |
32
33
#### Источники (авторы и владельцы информации)
34
35
| ID | Роль | Кто это | Что может рассказать |
36
|----|------|---------|----------------------|
37
| `S1` | **Техподдержка** | Специалисты первой и второй линии поддержки | Типовые проблемы пользователей, сценарии ошибок, FAQ по реальным обращениям |
38
| `S2` | **Продакт-менеджер** | Владелец продукта или менеджер по продукту | Описание новых фич, бизнес-логика, критерии использования функций |
39
| `S3` | **Разработчик** | Backend/Frontend/DevOps инженер | Технические детали реализации, форматы данных, ограничения системы |
40
| `S4` | **Системный/бизнес-аналитик** | Аналитик, участвовавший в проектировании | Логика работы функциональности, граничные случаи, бизнес-правила |
41
| `S5` | **Технический писатель** | Специалист по документации | Структура, стиль, архитектура информации — не источник фактов, но имплементатор канала |
42
43
---
44
45
### 1.2. Определение пары «Источник → Получатель»
46
47
**Алгоритм выбора для автора:**
48
49
```
50
1. Кто инициировал создание статьи?
51
→ Это подсказка по источнику (S1–S4)
52
53
2. Кто будет читать эту статью?
54
→ Конечный клиент (R1) или интегратор (R2)?
55
56
3. Какую задачу решает читатель?
57
→ Одна задача = одна статья
58
```
59
60
**Типовые пары и их смысл:**
61
62
| Пара | Когда используется | Пример статьи |
63
|------|--------------------|---------------|
64
| `S1 → R1` | Техподдержка передаёт решение частой проблемы клиенту | «Почему трекер не отображается на карте» |
65
| `S2 → R1` | Продакт рассказывает клиенту о новой функции | «Как использовать автоматические отчёты» |
66
| `S2 → R2` | Продакт объясняет интегратору логику новой фичи | «Модель данных объектов: структура и ограничения» |
67
| `S3 → R2` | Разработчик документирует технические детали интеграции | «Протокол обмена данными с трекерами» |
68
| `S4 → R2` | Аналитик описывает бизнес-правила для интеграции | «Правила расчёта пробега: алгоритм и исключения» |
69
| `S1 → R2` | Поддержка описывает типовые ошибки при внедрении | «Частые ошибки при настройке CAN-шины» |
70
71
> ⚠️ **Запрещённые ситуации:**
72
> - Статья адресована «всем» — это означает, что она не адресована никому
73
> - Один документ одновременно объясняет концепцию клиенту и содержит технический справочник для интегратора
74
> - Автор пишет то, что знает сам, не думая о получателе
75
76
---
77
78
## Часть 2. Типы статей и их структуры
79
80
Тип статьи определяется **парой «Источник → Получатель»** и **задачей читателя**.
81
82
В Wiki SKIF.PRO используются **четыре типа статей**:
83
84
| Тип | Название | Отвечает на вопрос | Аудитория |
85
|-----|----------|-------------------|-----------|
86
| **A** | Инструкция | «Как сделать X?» | R1 |
87
| **B** | Концепция | «Что это и зачем?» | R1 или R2 |
88
| **C** | Справочник интерфейса | «Что означают эти поля/настройки?» | R1 |
89
| **D** | Troubleshooting | «Почему не работает и что делать?» | R1 или R2 |
90
91
> **Вне scope этого документа:**
92
> - API-документация ведётся в Postman (отдельный workflow)
93
> - Release Notes публикуются на сайте (отдельный workflow)
94
95
---
96
97
### Тип A: Инструкция для конечного клиента
98
*Пары: `S1→R1`, `S2→R1`*
99
100
**Когда создаётся:** клиент должен самостоятельно выполнить задачу в интерфейсе системы.
101
102
**Признаки правильной статьи типа A:**
103
- Написана от второго лица («нажмите», «выберите», «перейдите»)
104
- Не содержит технических терминов без объяснения
105
- Каждый шаг — одно действие
106
- Есть скриншоты для неочевидных шагов
107
- Скриншоты сопровождаются текстовым описанием (AI-агент не видит изображения)
108
109
**Обязательная структура:**
110
111
| Секция | Обязательность | Назначение |
112
|--------|:---:|---|
113
| `# [Глагол + задача]` | ✅ обязательно | Заголовок = поисковый запрос |
114
| `## Когда это нужно` | ✅ обязательно | Жизненный сценарий, 1–3 предложения |
115
| `## Что потребуется` | ⚙️ условно | Только если есть предусловия (права, данные). Если нет — пропускается |
116
| `## Пошаговая инструкция` | ✅ обязательно | Нумерованные шаги, одно действие на шаг |
117
| `## Частые вопросы и ошибки` | ✅ обязательно | Симптом → причина → решение |
118
| `## Что дальше` | 💡 рекомендуемо | 2–3 ссылки на следующие действия |
119
120
**Пример:**
121
122
```markdown
123
# Как добавить транспортное средство
124
125
## Когда это нужно
126
Вы приобрели новый трекер и хотите начать отслеживать транспортное средство в системе SKIF.PRO.
127
128
## Что потребуется
129
- Роль «Редактор» или выше
130
- IMEI-номер трекера (указан на корпусе устройства или в документации к нему)
131
132
## Пошаговая инструкция
133
134
1. Перейдите в раздел **Объекты**.
135
2. Нажмите кнопку **Создать объект** в правом верхнем углу.
136
3. В поле **Название** введите имя транспортного средства.
137
Используйте описательное название, например, «МАЗ-5440 А123ВС» вместо «М1».
138
4. В поле **IMEI** введите номер трекера.
139
5. Нажмите **Сохранить**.
140
141
## Частые вопросы и ошибки
142
143
**Не вижу кнопку «Создать объект».**
144
Кнопка доступна только пользователям с ролью «Редактор» и выше. Обратитесь к администратору аккаунта.
145
146
**После сохранения объект не появляется на карте.**
147
Объект появится на карте после того, как трекер передаст первые координаты. Убедитесь, что трекер включен и настроен на сервер SKIF.PRO.
148
149
## Что дальше
150
- Настройте датчики объекта — см. статью «Карточка объекта — вкладка Датчики»
151
- Добавьте объект в группу — см. статью «Как добавить объект в группу»
152
```
153
154
---
155
156
### Тип B: Концепция (описание функциональности)
157
*Пары: `S2→R1`, `S2→R2`, `S4→R2`*
158
159
**Когда создаётся:** нужно объяснить, *что* делает функция и *зачем*, прежде чем показывать *как*.
160
161
**Признаки правильной статьи типа B:**
162
- Отвечает на вопрос «зачем это нужно» и «как это устроено», а не «как нажать»
163
- Описывает бизнес-логику и сценарии применения
164
- Может содержать схемы и диаграммы
165
- Не дублирует пошаговые инструкции — даёт ссылки на них
166
- Для R1 — аналогии и примеры из жизни, для R2 — логика системы и модели данных
167
168
**Обязательная структура:**
169
170
| Секция | Обязательность | Назначение |
171
|--------|:---:|---|
172
| `# [Название функциональности]` | ✅ обязательно | Для R1: «Что такое X в SKIF.PRO». Для R2: «X: модель данных и логика» |
173
| `## Для чего это нужно` | ✅ обязательно | Бизнес-задача языком получателя |
174
| `## Как это работает` | ✅ обязательно | Принцип работы. Для R1 — простым языком. Для R2 — техническая логика |
175
| `## Сценарии применения` | ✅ обязательно | 2–4 сценария использования |
176
| `## Ограничения и важные условия` | ✅ обязательно | Граничные случаи, зависимости от тарифа/настроек |
177
| `## Связанные инструкции` | 💡 рекомендуемо | Ссылки на статьи типа A |
178
179
---
180
181
### Тип C: Справочник интерфейса
182
*Пары: `S2→R1`, `S3→R1`*
183
184
**Когда создаётся:** нужно описать конкретный экран, вкладку или форму — перечислить все поля с их назначением и допустимыми значениями.
185
186
**Признаки правильной статьи типа C:**
187
- Привязана к одному конкретному экрану или вкладке (одна вкладка = одна статья)
188
- Перечисляет поля, их назначение, допустимые значения, значения по умолчанию
189
- Не учит «как», описывает «что» — пошаговые действия выносятся в тип A
190
- Содержит скриншот экрана с текстовым описанием
191
192
**Обязательная структура:**
193
194
| Секция | Обязательность | Назначение |
195
|--------|:---:|---|
196
| `# [Название экрана — вкладка/форма]` | ✅ обязательно | Точное название как в интерфейсе |
197
| `## Назначение` | ✅ обязательно | 1–2 предложения: для чего используется экран |
198
| `## Как открыть` | ✅ обязательно | Краткий путь навигации (без полной инструкции) |
199
| `## Описание полей` | ✅ обязательно | Таблица: поле, описание, допустимые значения, по умолчанию |
200
| `## Связанные инструкции` | 💡 рекомендуемо | Ссылки на статьи типа A, которые используют этот экран |
201
202
**Пример:**
203
204
```markdown
205
# Карточка объекта — вкладка «Основные»
206
207
## Назначение
208
Вкладка содержит базовые параметры объекта мониторинга: название, тип, привязку к трекеру.
209
210
## Как открыть
211
**Объекты** → выберите объект → вкладка **Основные**.
212
213
## Описание полей
214
215
| Поле | Описание | Допустимые значения | По умолчанию |
216
|------|----------|---------------------|--------------|
217
| **Название** | Отображаемое имя объекта на карте и в отчётах | Текст, до 100 символов | — |
218
| **IMEI** | Идентификатор трекера | 15 цифр | — |
219
| **Тип объекта** | Категория транспорта | Легковой, Грузовой, Спецтехника, Человек | Легковой |
220
| **Иконка** | Значок объекта на карте | Выбор из библиотеки | Автомобиль |
221
222
## Связанные инструкции
223
- Как создать объект — см. статью «Как добавить транспортное средство»
224
- Как изменить тип объекта — см. статью «Как редактировать объект»
225
```
226
227
---
228
229
### Тип D: Устранение неполадок (Troubleshooting)
230
*Пары: `S1→R1`, `S1→R2`, `S3→R2`*
231
232
**Когда создаётся:** техподдержка или разработчики фиксируют повторяющиеся проблемы с решениями.
233
234
**Признаки правильной статьи типа D:**
235
- Заголовок — описание симптома словами получателя, а не технической причиной
236
- Решения идут от простого к сложному
237
- Есть явный раздел «когда обращаться в поддержку»
238
- Для R2: допустимы технические детали (коды ошибок, логи, curl-примеры)
239
240
**Обязательная структура:**
241
242
| Секция | Обязательность | Назначение |
243
|--------|:---:|---|
244
| `# [Симптом словами получателя]` | ✅ обязательно | Для R1: «Трекер не выходит на связь». Для R2: «Запрос возвращает ошибку 502» |
245
| `## Симптом` | ✅ обязательно | Точное описание: что видит получатель |
246
| `## Возможные причины и решения` | ✅ обязательно | H3 для каждой причины: диагностика + решение |
247
| `## Если ничего не помогло` | ✅ обязательно | Что сообщить в поддержку, какие данные подготовить |
248
249
**Пример для R1:**
250
251
```markdown
252
# Трекер не выходит на связь
253
254
## Симптом
255
Объект на карте отображается серым. В карточке объекта в поле **Последняя связь** указано время более 30 минут назад.
256
257
## Возможные причины и решения
258
259
### Причина 1: Трекер выключен или разряжен
260
Проверьте, горит ли индикатор питания на трекере.
261
**Решение:** Подключите трекер к питанию и дождитесь загрузки (1–3 минуты).
262
263
### Причина 2: Нет покрытия GSM-сети
264
Трекер находится в зоне без мобильной связи (подземная парковка, удалённая территория).
265
**Решение:** Переместите транспорт в зону покрытия. Данные передадутся автоматически.
266
267
## Если ничего не помогло
268
Обратитесь в техподдержку и сообщите:
269
- IMEI трекера
270
- Время последней связи из карточки объекта
271
- Какие шаги уже выполнены
272
```
273
274
**Пример для R2:**
275
276
```markdown
277
# Webhook не доставляет события
278
279
## Симптом
280
Настроенный webhook-эндпоинт не получает POST-запросы от SKIF.PRO при наступлении события.
281
282
## Возможные причины и решения
283
284
### Причина 1: Эндпоинт недоступен извне
285
SKIF.PRO не может установить TCP-соединение с указанным URL.
286
**Решение:** Убедитесь, что URL доступен из интернета. Проверьте командой:
287
`curl -X POST https://your-endpoint.com/webhook -d '{"test": true}'`
288
289
### Причина 2: Эндпоинт отвечает не 200
290
SKIF.PRO считает доставку успешной только при HTTP 200.
291
**Решение:** Убедитесь, что ваш сервер возвращает именно статус 200 (не 201, не 204).
292
293
## Если ничего не помогло
294
Обратитесь в техподдержку и сообщите:
295
- URL webhook-эндпоинта
296
- Тип события, на которое подписаны
297
- Логи вашего сервера за последний час
298
```
299
300
---
301
302
## Часть 3. Требования к тексту
303
304
### 3.1. Заголовки
305
306
| Правило | Правильно | Неправильно |
307
|---------|-----------|-------------|
308
| Для инструкций (A) — начинать с глагола | «Как создать геозону» | «Геозоны. Создание» |
309
| Для концепций (B) — R1: «Что такое…»; R2: объект + контекст | «Что такое геозоны в SKIF.PRO» / «Геозоны: модель данных и ограничения» | «Введение в геозоны» |
310
| Для справочников (C) — название экрана | «Карточка объекта — вкладка Основные» | «Основные настройки объекта» |
311
| Для troubleshooting (D) — симптом словами получателя | «Почему трекер офлайн» | «Статус трекера» |
312
| Не использовать аббревиатуры без расшифровки | «Настройка CAN-шины (бортовой сети)» | «Настройка CAN» |
313
314
### 3.2. Язык для R1 (конечный клиент)
315
316
- Одна мысль — одно предложение. Ориентир: не более 25 слов на предложение.
317
- Нет жаргона: вместо «задеплоить» → «применить изменения»
318
- Нет пассивного залога: вместо «значение должно быть введено» → «введите значение»
319
- Названия кнопок и разделов — **жирным**, точь-в-точь как в интерфейсе
320
- Каждый шаг — одно действие
321
322
### 3.3. Язык для R2 (интегратор)
323
324
- Технические термины допустимы и ожидаемы
325
- Все типы данных указываются явно: `string`, `integer`, `boolean`, `ISO 8601`
326
- Граничные случаи и исключения — обязательны
327
- Конкретные значения вместо абстрактных описаний
328
329
### 3.4. Атомарность
330
331
**Одна статья = один вопрос читателя.**
332
333
Статья нарушает принцип атомарности, если:
334
- В ней несколько заголовков уровня H2, которые могут быть самостоятельными статьями
335
- Она одновременно объясняет концепцию И содержит пошаговую инструкцию (разбить на тип B + тип A)
336
- Она одновременно описывает «как сделать» И перечисляет все поля формы (разбить на тип A + тип C)
337
- Она адресована и R1, и R2 одновременно
338
339
### 3.5. Глубина заголовков
340
341
Максимальная глубина заголовков внутри статьи — **H3** (`###`). Если требуется более глубокая вложенность — это сигнал, что статья нарушает атомарность и должна быть разделена.
342
343
Исключение: тип D (Troubleshooting) использует H3 для отдельных причин внутри секции «Возможные причины и решения». Вложенность внутри причины не допускается.
344
345
### 3.6. Самодостаточность секций (для AI-агента)
346
347
AI-агент техподдержки извлекает фрагменты статей, а не читает их целиком. Поэтому:
348
349
- Каждая секция (блок под H2) должна быть понятна без чтения остальных секций
350
- Запрещены ссылки «как описано выше», «см. предыдущий раздел»
351
- Называйте сущности явно: вместо «эта функция» → «функция геозон»
352
- Короткие повторяющиеся факты (роль доступа, версия) дублируйте в каждой статье
353
- Развёрнутые блоки (описание алгоритма, большая таблица) не дублируйте — давайте ссылку с кратким резюме в 1 предложение
354
355
### 3.7. Скриншоты
356
357
- Каждый скриншот обязательно сопровождается текстовым описанием действия. AI-агент не видит изображения.
358
- Скриншот размещается непосредственно после шага, который он иллюстрирует
359
- Критичную информацию из таблиц на скриншотах дублируйте в текстовой таблице
360
361
### 3.8. Перекрёстные ссылки
362
363
**Внутри одной аудитории (R1→R1 или R2→R2):** свободно, по полному названию статьи.
364
365
**Между аудиториями (R1↔R2):** допустимы, но обязательно маркируются:
366
367
```markdown
368
> 🔧 Техническая статья для интеграторов: [Протокол обмена данными с трекерами](ссылка)
369
```
370
371
```markdown
372
> 📱 Статья для пользователей: [Как добавить транспортное средство](ссылка)
373
```
374
375
**Формат ссылок:**
376
- ✅ `см. статью «Как создать объект»`
377
- ❌ `см. здесь`
378
- ❌ `подробнее по ссылке`
379
380
---
381
382
## Часть 4. Чек-лист перед публикацией
383
384
Используется автором при самопроверке. Полный машиночитаемый чек-лист для AI-агента — в файле `ai-checklist.md`.
385
386
### Блок 1: Стейкхолдеры (критично)
387
388
- [ ] Указана пара «Источник → Получатель» в метаданных
389
- [ ] Получатель однозначно определён: `R1` (клиент) или `R2` (интегратор), не оба
390
- [ ] Содержание соответствует нуждам указанного получателя
391
- [ ] Тип статьи (A/B/C/D) соответствует паре и задаче читателя
392
393
### Блок 2: Место в структуре Wiki (критично)
394
395
- [ ] Определён раздел верхнего уровня (Объекты / Геозоны / Отчёты / ...)
396
- [ ] Определён подраздел, статья размещена в правильном месте иерархии (см. `wiki-structure-guidelines.md`)
397
- [ ] Название статьи соответствует правилам именования для её типа
398
- [ ] Статья не дублирует уже существующую — при пересечении тем используется ссылка
399
400
### Блок 3: Структура и содержание (критично)
401
402
- [ ] Используется обязательная структура для данного типа статьи
403
- [ ] Все обязательные секции присутствуют
404
- [ ] Статья атомарна: одна задача — один документ
405
- [ ] Заголовки не глубже H3
406
- [ ] Для типа A: каждый шаг проверяем в реальном интерфейсе
407
- [ ] Для типа C: все поля имеют описание и допустимые значения
408
- [ ] Для типа D: решения идут от простого к сложному
409
410
### Блок 4: Язык и оформление (важно)
411
412
- [ ] Язык соответствует аудитории (простой для R1, технический для R2)
413
- [ ] Названия элементов интерфейса выделены жирным и совпадают с реальным UI
414
- [ ] Нет пассивного залога в инструкциях для R1
415
- [ ] Нет неопределённых местоимений («это», «данный», «соответствующий»)
416
- [ ] Скриншоты сопровождаются текстовым описанием
417
- [ ] Перекрёстные ссылки R1↔R2 маркированы
418
419
### Блок 5: Тестирование (критично для типов A, D)
420
421
**Каждая статья, содержащая шаги, должна пройти практическое тестирование до публикации.** Тестирование проводит тестировщик или ответственный стейкхолдер — не автор.
422
423
**Как проводится тестирование:**
424
425
1. Тестировщик открывает статью и выполняет все описанные шаги в реальной системе — строго по тексту, без использования других источников.
426
2. Каждый шаг должен воспроизводиться точно так, как написано: кнопка с указанным названием существует, поле называется именно так, переход происходит туда, куда указано.
427
3. По итогу тестировщик должен получить тот результат, который заявлен в статье.
428
429
**Результат тестирования:**
430
431
- `✅ Пройдено` — все шаги воспроизводятся, результат достигнут. Статья может быть опубликована.
432
- `❌ Возвращено на доработку` — тестировщик фиксирует, на каком шаге возникло расхождение, и возвращает статью автору с конкретными замечаниями.
433
434
**Чек-лист тестировщика:**
435
436
- [ ] Все шаги выполнены в реальном интерфейсе системы
437
- [ ] Названия всех кнопок, полей и разделов совпадают с реальным UI
438
- [ ] Итоговый результат соответствует заявленному в статье
439
- [ ] Раздел «Частые ошибки» проверен: описанные ошибки реально воспроизводятся и решаются указанным способом
440
441
> **Обязательность тестирования по типам:**
442
> - Тип A (Инструкция) — **обязательно**
443
> - Тип D (Troubleshooting) — **обязательно**
444
> - Тип B (Концепция) — не требуется (нет шагов)
445
> - Тип C (Справочник интерфейса) — **рекомендуется** (проверить, что описания полей соответствуют реальному UI)
446
447
### Блок 6: AI-специфические требования (для агента поддержки)
448
449
- [ ] Каждый раздел самодостаточен при извлечении фрагментами
450
- [ ] Симптомы и ошибки описаны словами пользователя, а не техническими кодами
451
- [ ] Нет ссылок вида «как описано выше» или «см. предыдущий раздел»
452
- [ ] Ключевые термины и синонимы присутствуют в тексте (не только в заголовке)
453
454
---
455
456
## Часть 5. Метаданные статьи
457
458
Каждая статья должна начинаться с блока метаданных (YAML front matter):
459
460
```yaml
461
---
462
type: A | B | C | D # Тип статьи
463
source: S1 | S2 | S3 | S4 # Роль источника информации
464
audience: R1 | R2 # Получатель (только один)
465
section: [раздел/подраздел] # Место в структуре Wiki (из wiki-structure-guidelines.md)
466
owner: [имя или команда] # Кто отвечает за актуальность
467
last_verified: ГГГГ-ММ-ДД # Дата последней проверки на актуальность
468
tested_by: [имя тестировщика] # Кто провёл практическое тестирование (обязательно для A, D)
469
version: [версия продукта] # Версия, к которой относится
470
---
471
```
472
473
**Правила заполнения:**
474
475
- Поле `audience` принимает **только одно значение**. Если информация нужна обеим аудиториям — создаются два документа.
476
- Поле `section` должно точно соответствовать разделу/подразделу из `wiki-structure-guidelines.md`.
477
- Поле `tested_by` обязательно для типов A и D. Пустое поле блокирует публикацию.
478
479
---
480
481
## Часть 6. Жизненный цикл статьи
482
483
Каждая статья проходит следующие обязательные этапы перед публикацией:
484
485
```
486
[1] ПОСТАНОВКА ЗАДАЧИ
487
Определить: пару Source→Receiver, тип статьи, место в структуре Wiki.
488
Заполнить: шаблон задачи на документирование (см. раздел 6.1).
489
↓
490
[2] НАПИСАНИЕ
491
Автор создаёт черновик по обязательной структуре для своего типа.
492
↓
493
[3] РЕВЬЮ
494
├── Фактчекинг: стейкхолдер-источник проверяет точность данных
495
├── Структура и стиль: технический писатель проверяет соответствие гайду
496
└── AI-агент: первичная автоматическая проверка по чек-листу (ai-checklist.md)
497
↓
498
[4] ТЕСТИРОВАНИЕ (обязательно для типов A, D; рекомендуется для C)
499
Тестировщик проходит все шаги в реальной системе строго по тексту статьи.
500
Результат: ✅ Пройдено → переход к публикации
501
❌ Возвращено → автор дорабатывает → повторное тестирование
502
↓
503
[5] ПУБЛИКАЦИЯ
504
Статья размещается в правильном разделе/подразделе Wiki.
505
↓
506
[6] АКТУАЛИЗАЦИЯ (ongoing)
507
Владелец обновляет статью при каждом изменении функциональности.
508
```
509
510
### 6.1. Шаблон задачи на документирование
511
512
При постановке задачи на создание или обновление статьи инициатор заполняет:
513
514
| Поле | Описание | Пример |
515
|------|----------|--------|
516
| **Триггер** | Что вызвало необходимость | «Добавлена фича X в релизе 2.5» |
517
| **Стейкхолдеры** | Источник → Получатель | `S2 → R1` |
518
| **Тип статьи** | A / B / C / D | A (Инструкция) |
519
| **Объём** | Какая функциональность покрывается | «Создание геозоны через UI» |
520
| **Эксперт для интервью** | Кто владеет знанием | «Иванов И.И., backend-разработчик» |
521
| **Дедлайн** | Когда нужна готовая статья | «До конца спринта 14» |
522
523
---
524
525
## Часть 7. Правила актуализации
526
527
**Статья устаревает в момент, когда:**
528
- Изменился интерфейс или поведение функции
529
- Изменились бизнес-правила или логика работы
530
- Пользователи задают вопросы, ответы на которые должны быть в статье
531
532
**Ответственность за актуализацию:**
533
534
| Триггер | Кто обновляет | Срок |
535
|---------|--------------|------|
536
| Новый релиз с изменением фичи | Автор статьи (владелец) | В рамках спринта релиза |
537
| Сигнал от техподдержки (статья вводит в заблуждение) | Техписатель + владелец | Не позднее 2 рабочих дней |
538
| Плановая проверка | Технический писатель | Ежеквартально |
539
540
**Признак «протухшей» документации:** пользователи или интеграторы задают вопросы, ответы на которые должны быть в статье. Если этот паттерн возникает — статья требует ревизии.