feat(admin): ручные варианты UTM и независимый редактор config (#30)
This commit is contained in:
1 parent
47405b27d8
commit
941a4f01aa
28 files changed
+108
-174
No files matched your search
+24
-13
@@ -13,13 +13,13 @@
|
||||
## Сводка и конструктор ссылки
|
||||
|
||||
Первый экран — редактор фактических конфигов всех подключений. Основной сайт,
|
||||
варианты, веса и default редактируются в соответствующей колонке. Доля вычисляется
|
||||
автоматически:3:1 →75%/25%; нулевые веса дают0%. Default выбирается radio обычного
|
||||
веса и default редактируются в соответствующей колонке. Веса хранятся в процентах:
|
||||
0..100 с двумя знаками; сумма группы — 100% либо все веса — 0%. Default выбирается radio обычного
|
||||
начертания. Отсутствующая группа добавляется только явно. «Сохранить» и «Отмена»
|
||||
работают отдельно для каждого домена; ошибка и конфликт сохраняют черновик.
|
||||
Перечитывание другой колонки сохраняет DOM, фокус и курсор. После конфликта нужно
|
||||
явно загрузить сохранённое либо отменить черновик. Версии CAS остаются внутренними;
|
||||
даты заметок и версии конфигов в таблице не показываются.
|
||||
даты заметок и версии конфигов в таблице не показываются. Дата последнего чтения с хостинга видна у каждого домена.
|
||||
|
||||
Под таблицей — копирование сохранённых host и восьми канонических UTM из одного
|
||||
источника в несколько получателей. Источник исключён из получателей. Черновики
|
||||
@@ -39,7 +39,7 @@
|
||||
`{target,selection}` с ровно восемью каноническими UTM-ключами. Действуют общий вход
|
||||
и CSRF. Состояние находится в приватном `state/link-builder-ID.json` с режимом0600.
|
||||
При переименовании домена меняется origin ссылки, выбор и сохранённые метки остаются.
|
||||
Неизвестная в текущем runtime/catalog группа сопровождается предупреждением;
|
||||
Неизвестный в текущем config номер сопровождается предупреждением;
|
||||
конструктор не исправляет конфигурацию автоматически.
|
||||
|
||||
## Компактная сводка и заметки — preland#23 / #24
|
||||
@@ -123,15 +123,27 @@ Imagick не нужен. Замена реквизитов сбрасывает
|
||||
Имена numeric/legacy UTM адаптируются отдельно для каждой цели, конфликтующие aliases
|
||||
блокируются. Удаление набора из реестра оставляет файлы; используемый номер удалить нельзя.
|
||||
|
||||
## Каталог групп и приватная публикация
|
||||
## Ручные варианты и независимость — preland#30
|
||||
|
||||
`deploy/export-catalog.php` выполняется внутри существующего API-контейнера минимальным
|
||||
Yii bootstrap, в read-only DB-транзакции. Он экспортирует только номера/названия degr/tp/cons,
|
||||
не выдавая приложению доступ к БД. `deploy/refresh-catalog.sh` запускается host cron раз
|
||||
в минуту от root. Подготовка/проверка/chown происходят в root-only `secrets/`, затем
|
||||
`mv -fT` заменяет фиксированный `state/catalog.json` без следования ссылке назначения.
|
||||
Снимок действует180секунд только для совпадающего основного host. Недоступный/старый
|
||||
каталог даёт явную пометку непроверенного существования групп, а не выдуманный список.
|
||||
Во всех восьми UTM ссылка «Добавить вариант» создаёт пустую строку: номер, вес и
|
||||
неотмеченный default. До нажатия пустых строк нет. Существующие номера показаны
|
||||
текстом; новые вводятся вручную (1–9). После сохранения новый номер тоже становится
|
||||
обычным текстом. Нулевой вес сохраняется. Отсутствующую группу можно создать через
|
||||
ту же ссылку; для неё default выбирается явно. «Отмена» возвращает последний прочитанный конфиг.
|
||||
|
||||
Редактор не обращается к каталогу основной админки и не проверяет реализацию номера
|
||||
на сайте: можно записать theme=3 или indpic=9 независимо от наличия темы/файлов.
|
||||
Соответствие номера содержимому сайта обеспечивает пользователь. Формат номера,
|
||||
дубликаты, aliases, проценты и CAS проверяются; конфиг не нормализуется автоматически.
|
||||
Сохранение, копирование и восстановление одинаково независимы от каталога/наборов.
|
||||
|
||||
Новый сет загружается отдельно: выбрать домены, вручную указать номер, выбрать ZIP,
|
||||
нажать «Загрузить сет». Для существующего номера нужно подтвердить замену.
|
||||
Проверка ZIP и изображений сохраняется, как и проверка файлов, загруженных по SFTP.
|
||||
Загрузка не меняет config.json. После неё пользователь сам добавляет вариант indpic,
|
||||
заполняет вес/default и сохраняет настройки. Автоматической связи нет.
|
||||
|
||||
## Приватное состояние и публикация наборов
|
||||
|
||||
Резервы и journal локального транспорта хранятся в приватном state. Для exact bind mount
|
||||
папка подготовки `.preland-admin-staging` создаётся внутри корня с0700; публичный веб-сервер
|
||||
@@ -151,7 +163,6 @@ supervisor сразу пытается восстановить полный п
|
||||
```sh
|
||||
docker build -t preland-admin:<git-sha> -f admin/Dockerfile admin
|
||||
docker run --rm --entrypoint composer -v "$PWD:/work:ro" -w /work/admin preland-admin:<git-sha> test
|
||||
docker run --rm --entrypoint bash -v "$PWD:/work:ro" preland-admin:<git-sha> -c 'sed "s/\r$//" /work/admin/tests/catalog-publish.sh | bash'
|
||||
```
|
||||
|
||||
Дополнительные Docker проверки: `tests/backend-sftp.Dockerfile` — настоящий SSH/SFTP,
|
||||
|
||||
Reference in new issue
Block a user