/doc

Документ

Форматы структурированного ввода

Живые правила runtime storage, flat-file форматы и исследовательские соглашения по TSV и odd-space вариантам.

Основной файл документа: index.md

- live runtime storage сайта
- documentation и исследовательские форматы для ручного ввода и сравнения

## Что является live storage сейчас

- `asset/data/static/plan.txt` — живая каноническая таблица плана в TXT-first режиме
- `asset/data/static/helper/plan.keys.csv` и `asset/data/static/helper/plan.extra.csv` — helper database для стабильных ключей, порядка, `task_uid` и расширенных полей плана
- `asset/data/static/project.csv` и `asset/data/static/customer.csv` — основные таблицы записей
- `asset/data/static/plan/*` — plan sidecars в формате `slug.kind.ext`
- `asset/data/static/task/*` — project/show sidecars, owner-local task files и share bundle items в формате `slug.kind.ext`
- `asset/data/static/customer/*` — customer sidecars в формате `slug.kind.ext`
- `asset/data/static/templates/*` — HTML-шаблоны в формате `domain.slug.html`
- `asset/data/static/privacy/resource.csv` — плоский справочный реестр компаний, правообладателей, производителей, партнеров и почтовых контактов; по умолчанию записи внутренние, а публикация отдельных полей идет через флаги
- `HTML` sidecars и upload metadata остаются в своих текущих форматах

Правило runtime storage:

- использовать только singular folder names
- owner folder определяет домен данных: `plan`, `task`, `customer`
- имя файла должно быть линейным и уникальным: `slug.kind.ext`
- одна живая сущность должна иметь один канонический файл; повторы допустимы только как read-only archive
- live placeholder dataset должен состоять только из одного нейтрального `test-*` thread, а не из набора branded demo-данных
- если одна и та же задача должна появиться у проекта или клиента, используйте link-table, а не вторую копию текста
- периодическая синхронизация дубликатов не считается нормальным runtime-механизмом
- исключение: HTML вынесен в `templates/` и именуется как `domain.slug.html`

Текущий live demo thread:

- `test-client` — единственная live customer card
- `test-project` — единственная live project card
- `test-share` — единственный live share bundle
- если нужен новый demo-сценарий, заменяйте этот thread целиком, а не добавляйте соседний placeholder

## Локальные owner-планы

- глобальные переиспользуемые задачи живут только в `asset/data/static/plan.txt`
- локальные строки владельца живут в `asset/data/static/task/show.<slug>.plan.txt` и `asset/data/static/task/customer.<key>.plan.txt`
- привязки к глобальным задачам живут в `asset/data/static/task/show.<slug>.plan-link.csv` и `asset/data/static/task/customer.<key>.plan-link.csv`
- локальный owner-план не является синхронизированной копией глобального плана
- `project_slug` и `customer_key` в глобальной задаче считаются metadata, а не автоматической командой на локальный вывод

## TSV

- `TSV` остается удобным внешним форматом обмена и импорта
- подходит для переноса в таблицы, редакторы и export/import сценарии

## OSSV

- `OSSV` = `Odd Space Separated Values`
- это project-local исследовательский формат, а не текущий live standard
- он остается полезным как лаборатория для будущих flat-table попыток, но сейчас не должен управлять runtime планом

## Где идет исследование OSSV

- весь текущий архив попыток перенесен в `doc/ossv-file-format/`
- там лежат:
  - сравнение `plan.txt` и `plan.csv`
  - пример sidecar `plan/media-portfolio.links.csv`
  - архивный `plan-from-plan-csv.ossv`
  - sample-файлы и заметки отката

## Активные правила ручного ввода

- для `plan.txt` и owner-local `*.plan.txt` первый токен строки всегда является идентификатором задачи: `[1]`, `[3][1]`, `[1][queue]`
- повтор одного и того же numeric id, например `[1]` + `[1]`, трактуется как combo-группа отдельных строк; дочерняя строка должна иметь numeric descendant вида `[1][2]`
- для admin textarea-редакторов канонический разделитель колонок — `3` пробела
- legacy `TAB` и другие нечетные серии пробелов по-прежнему читаются, но при повторном открытии textarea нормализуются в `3` пробела
- для `plan.txt` active body пустая строка означает новую группу задач по порядку
- все завершенные строки `plan.txt` должны лежать в одном нижнем footer-блоке, а не смешиваться с active body
- для `links_editor` канонический ручной формат: `url   title   text   kind   sort_order`
- для длительностей поддерживаются минуты, часы, дни, месяцы, сезоны и годы; большие единицы переводятся в минуты по рабочему профилю проекта
- профиль по умолчанию: `8 часов/день`, `20 рабочих дней/месяц`, `3 месяца/сезон`, `4 сезона/год`
- расчет billable amount по задачам идет от `2/3` часовой ставки, если запись не имеет ручного override
- это правило относится к ручному вводу в редакторах, а не к тому, что все runtime файлы должны быть переведены в `OSSV`

## Практический вывод

- если нужен надежный live flat-table storage для плана, используйте текущие `plan.txt` + helper CSV; для остальных модулей пока остаются `CSV` и `.env`
- если нужен переносимый обмен, используйте `TSV`
- если нужен новый лаконичный flat-format для будущей миграции, сначала оформляйте попытки в `doc/ossv-file-format/`, а не в live runtime
- если нужно перенести промежуточный static layout в singular folders, используйте repo-root команду `php migrate-static-layout.php --mode=dry-run|apply`

## Как ставить UI-правки быстрее

Для визуальных и usability-правок не описывайте задачу общими словами. Передавайте фикс как короткий структурированный блок:

- `Page:` точный URL страницы
- `Selector:` точный CSS selector или имя блока
- `Current:` что сломано сейчас
- `Expected:` что должно быть после правки
- `Priority:` high / medium / low
- `Scope:` visual-only или visual+data
- `Screenshot:` если есть

Пример:

```text
Page: /admin/record-edit.php?module=plan&id=plan-96743f811b2b
Selector: body > main > section > div > label > textarea
Current: пустое поле выглядит как белый провал без явной границы, секции слипаются
Expected: textarea с явной рамкой, компактной стартовой высотой, секции в отдельных bordered blocks
Priority: high
Scope: visual-only
Remove actions: preview_public, preview_private from top action row
Move to: Identity and Access -> preview block
```

Файлы и ссылки

Справочные материалы документа

Откройте основной материал или другой файл документа как ссылочный источник.