Чек-лист: размещение контента (политика и правила) и проверка

Портал: https://lms.cdto.life
Контент: Политика конфиденциальности, Правила использования портала (курс «Академия CDTO Права и обязанности», блок на главной)
Дата: 2026-02-13

Используйте этот чек-лист при каждом размещении или обновлении разрешительных/уведомительных документов на lms.cdto.life. Содержит подготовку, размещение, автоматическую и ручную проверку.


Блок A. Подготовка контента

Действие Статус Примечание
A.1 Открыть исходники в репозитории docs/setup/portal-policies/privacy-policy.md, terms-of-use.md
A.2 Подставить реквизиты оператора (наименование, контакты) В политике конфиденциальности, п. 1 и 5
A.3 Проставить актуальные даты размещения В конце обоих файлов
A.4 Согласовать тексты с юристом (AI Denkart Юрист) При первом размещении и при существенных правках
A.5 Согласовать с владельцем продукта (CDTO) при необходимости Формулировки, ссылки на контакты
A.6 Сохранить изменения в репозитории (git add, commit) Чтобы публикация брала актуальные версии

Блок B. Предусловия перед размещением

Действие Статус Проверка
B.1 Контейнер Moodle запущен lxc list \| grep moodle — статус RUNNING
B.2 Доступ к lms.cdto.life с хоста (для проверки) curl -sI https://lms.cdto.life \| head -1 — 200 или 301/302
B.3 На хосте установлен python3-markdown (для публикации) python3 -c "import markdown" — без ошибки
B.4 Опционально: в config/secrets заданы MOODLE_ADMIN_USER, MOODLE_ADMIN_PASSWORD Для автоматической проверки с авторизацией

Блок C. Размещение контента

Вариант 1 — одной командой (рекомендуется):

Действие Статус Команда / результат
C.1 Запустить полную настройку (курс + страницы + блок + проверка) cd /home/cdto/DENKART && ./scripts/setup-portal-policies-and-frontpage-block.sh
C.2 При повторном размещении только страниц (курс и блок уже есть) ./scripts/publish-portal-policies-to-moodle.sh --update
C.3 Убедиться, что скрипт завершился без ошибок Код выхода 0; в выводе нет [FAIL]

Вариант 2 — по шагам:

Действие Статус Команда
C.4 Создать курс «Академия CDTO Права и обязанности» (если ещё нет) lxc exec moodle -- sudo -u www-data php /tmp/moodle-create-course-prava.php --moodle-dir=/var/www/moodle (скрипт предварительно скопировать в контейнер)
C.5 Опубликовать страницы в курс ./scripts/publish-portal-policies-to-moodle.sh или ... --update
C.6 Добавить блок на главную (если ещё нет) lxc exec moodle -- sudo -u www-data php /tmp/moodle-add-frontpage-block-prava-links.php --moodle-dir=/var/www/moodle

Блок D. Автоматическая проверка размещения

Действие Статус Критерий успеха
D.1 Запустить проверку (если не вызывалась в конце C.1) ./scripts/verify-portal-policies-placement.sh
D.2 Главная страница: HTTP 200 В выводе: [OK] HTTP 200
D.3 Главная: в ответе есть фразы блока/ссылок «Права и обязанности» или «Политика конфиденциальности» / «правила использования» (или [WARN], если контент только после входа)
D.4 Курс: HTTP 200 В выводе: [OK] HTTP 200 для course/view.php?id=...
D.5 Курс: в ответе есть страницы политики/правил «Политика конфиденциальности» или «Правила использования портала» (или [WARN] при необходимости входа)
D.6 Проверка с авторизацией (если заданы MOODLE_ADMIN_*) Опционально: в разделе 3 вывода — «Главная: блок/ссылки найдены», «Курс: страницы … найдены»
D.7 Итог проверки: «Базовые проверки пройдены», код выхода 0 При [FAIL] — устранить причину и повторить размещение/проверку
D.8 Проверка соответствия контента (исходники vs опубликованные страницы) ./scripts/verify-portal-policies-placement.sh (п. 4 в выводе) или отдельно: python3 scripts/verify-portal-policies-content-match.py https://lms.cdto.life COURSE_ID (требуются MOODLE_ADMIN_* в config/secrets)
D.9 Контент соответствует: схожесть по отчёту ≥ порога, код выхода 0 При [ОТЛИЧИЕ] — перейти к блоку F

Блок E. Ручная (визуальная) проверка в браузере

Действие Статус Что проверить
E.1 Открыть главную страницу https://lms.cdto.life
E.2 На главной виден блок «Права и обязанности» (или аналог) Ссылка на курс или на страницы политики/правил
E.3 Перейти по ссылке из блока Открывается курс «Академия CDTO Права и обязанности» или страница политики/правил
E.4 В курсе отображаются две страницы «Политика конфиденциальности портала AI Академия CDTO (lms.cdto.life)» и «Правила использования портала …»
E.5 Тексты страниц соответствуют утверждённым шаблонам Реквизиты, даты, формулировки без ошибок
E.6 Проверить отображение без входа (гость) При включённом гостевом доступе к курсу — контент виден гостю
E.7 При необходимости — проверить на мобильном виде Блок и страницы читаемы с телефона/узкого экрана

Блок F. Проверка соответствия контента и действия при отличиях

Эталон — исходники в репозитории. При отличиях исправления вносятся на странице в Moodle с учётом рекомендаций сотрудников проектной команды (либо в исходник с последующей перепубликацией — по решению команды). Рекомендации сотрудников фиксируются в комментарии к коммиту. При правках учитывать маркетинговые требования к продвижению контента и SEO-оптимизацию.

Действие Статус Критерий / ответственный
F.0 Запустить проверку соответствия (исходники ↔ Moodle) ./scripts/verify-portal-policies-placement.sh (при заданных MOODLE_ADMIN_* выполняется п. 4) или python3 scripts/verify-portal-policies-content-match.py https://lms.cdto.life COURSE_ID
F.1 Если в отчёте [ОТЛИЧИЕ]: зафиксировать, какие страницы отличаются По выводу скрипта (privacy-policy.md и/или terms-of-use.md)
F.2 Провести сравнительный анализ: источник отличий (исходник устарел / публикация не обновлена / правки только в Moodle) Менеджер — координация; Аналитик или Разработчик — сравнение текстов, определение эталона
F.3 Привести в соответствие силами команды с учётом маркетинга и SEO См. таблицу ниже по ролям; рекомендации — в комментарий к коммиту
F.4 Исходник — эталон. После сверки исправления вносятся на странице (в Moodle) с учётом рекомендаций; затем повторная проверка До достижения «контент соответствует» (код 0). При необходимости — перепубликация из исходников после правок в репо. Рекомендации сотрудников — в комментарии к коммиту
F.5 Учтены маркетинговые требования к продвижению контента и SEO-оптимизация Заголовки, мета-описания, ключевые фразы; при необходимости — docs по SEO (moodle-seo-and-indexing.md и др.)

Приведение в соответствие по ролям (команда проекта):

Ситуация Действие Роль
Эталон — исходники в репо; на Moodle устаревшая версия Перепубликовать страницы из docs/setup/portal-policies/ Разработчик или Аналитик: ./scripts/publish-portal-policies-to-moodle.sh --update
Эталон — исходники; в них опечатки или устаревшие формулировки Править privacy-policy.md / terms-of-use.md, согласовать с юристом при необходимости, затем перепубликовать Аналитик — правки; AI Denkart Юрист — согласование формулировок; Разработчик — публикация
Правки вносились только в Moodle, исходников не обновляли Привести исходники в репо в соответствие с опубликованным текстом (или перепубликовать из репо, если эталон — репо) Аналитик — обновление .md; Менеджер — решение, что считать эталоном
Расхождение по юридическим формулировкам Согласовать текст с юристом, обновить исходник и Moodle AI Denkart Юрист — формулировки; Аналитик — правки в репо; Разработчик — публикация

Блок G. Фиксация и сопровождение

Действие Статус Ответственный
G.1 Зафиксировать в документации дату размещения/обновления Аналитик / исполнитель
G.2 При изменении текстов — обновить даты в docs/setup/portal-policies/*.md Исполнитель
G.3 Периодическая проверка актуальности (законодательство, условия сторонних продуктов) AI Denkart Юрист
G.4 При отказе от плагинов (например Brickfield) — обновить политику конфиденциальности и документацию Юрист, Аналитик

Краткая шпаргалка команд

# Полный цикл (курс + страницы + блок + проверка)
./scripts/setup-portal-policies-and-frontpage-block.sh

# Только публикация страниц (обновление)
./scripts/publish-portal-policies-to-moodle.sh --update

# Проверка размещения (включая соответствие контента при заданных MOODLE_ADMIN_*)
./scripts/verify-portal-policies-placement.sh
./scripts/verify-portal-policies-placement.sh --no-auth   # без входа и без проверки контента

# Только проверка соответствия контента (исходники vs Moodle)
python3 scripts/verify-portal-policies-content-match.py https://lms.cdto.life COURSE_ID

Связанные документы


Чек-лист можно распечатать или копировать в задачу Redmine (проект «Разрешительная документация»).

Технический директор: AI Denkart
Владелец ресурсов: CDTO Dkvark