Skip to content

Latest commit

 

History

History
157 lines (128 loc) · 13.7 KB

File metadata and controls

157 lines (128 loc) · 13.7 KB

Файлы для локальной сборки сайта

Состав проверен 17 сентября 2026 года. Реестр определяет границу сборки сайта после разделения каталогов разработки, сборки и поставки. Целевая поставка описана в delivery-target.md.

Это инвентаризация текущей реализации, а не новая структура каталогов. «Не требуется для сборки сайта» не означает «не нужно проекту» или «удалить». Согласованные перемещения выполнены; текущее размещение и оставшиеся работы описаны в плане.

Что считаем локальной сборкой

Сборка текущего сайта из контента и шаблонов на машине разработчика, без MCP-сервера, VPS, Docker и CI. Входная команда — scripts/zensical_docs.sh. Результат — site/; для разработки предусмотрена команда serve. Это отличается от сборки поставляемого Docker-образа локального сайта.

Обязательные входы текущей команды

Пути указаны относительно корня репозитория. Каталоги перечислены как группы входов: это список для сборки всего сайта, а не одной выбранной страницы.

Файл или группа Зачем нужны
Отслеживаемые Git файлы docs/ Публикуемый контент: страницы, изображения, CSS, JavaScript и прочие статические ресурсы; 1762 существующих отслеживаемых файла на дату проверки
zensical.toml Настройки сайта, навигация, тема, Markdown-расширения
overrides/home.html Шаблон главной страницы
overrides/main.html Общий шаблон сайта
overrides/partials/social_meta.html Метаданные страниц
data/diagnostic-sources.json, data/acc-diagnostics.json Каталоги диагностик для дополнения sitemap
retrieval-rules.yml Правила и псевдонимы для создаваемого AI-корпуса
LICENSES/EPL-2.0.txt Публикуемый текст лицензии
LICENSES/GPL-3.0.txt Публикуемый текст лицензии
LICENSES/LGPL-3.0.txt Публикуемый текст лицензии

В docs/ необходимы и изображения логотипов, включая docs/assets/images/logo-social.png: их используют настройки и генератор карточек. Готовые статьи находятся в docs/, но два перечисленных каталога из data/ также читаются при сборке sitemap. Остальные файлы data в этот маршрут не входят.

Код сборки: 14 файлов

Файл в scripts/ Роль
zensical_docs.sh Запускает генераторы, Zensical и обработку результата; поддерживает build и serve
zensical-version.sh Закреплённая версия Zensical: 0.0.47
generate_social_cards.py Карточки, метаданные страниц и robots.txt
generate_ai_artifacts.py AI-корпус, llms-файлы и Markdown-копии страниц
generate_search_vectors.py Поисковые векторы
v8std_retrieval_rules.py Чтение retrieval-rules.yml и токенизация
v8std_search_features.py Формирование поисковых псевдонимов
v8std_mcp_chunks.py Разбиение страниц для поисковых векторов; нужен сборке, несмотря на MCP в имени
atomic_files.py Запись результатов генерации
v8std_markdown.py Markdown-расширение, подключённое в zensical.toml
check_article_html.py Проверка HTML, обязательная внутри текущей команды build
diagnostic_inventory.py Читает два каталога data для построения адресов диагностик
publish_diagnostic_sitemap.py Обработка sitemap после сборки
publish_license_texts.py Копирование и проверка текстов лицензий

Это минимальный набор зависимостей существующего маршрута, выявленный по вызовам и импортам. Он сохраняет его поведение целиком. Теоретический минимум для вывода HTML без AI-файлов и карточек потребует изменения самого маршрута.

Окружение и установка

  • Python 3.12+, Bash и установленные Python-зависимости сборки.
  • requirements-build.lock — закреплённые зависимости сборки, включая Zensical. Для отдельного окружения достаточно установки этого файла; MCP-зависимости не требуются.
  • Альтернативный существующий установщик: scripts/install_zensical.sh, scripts/zensical-version.sh и requirements.txt. Он устанавливает Zensical отдельно, остальные зависимости — через requirements.txt. Это альтернативный путь установки, а не дополнительные обязательные входы установленной сборки.
  • Шрифт для социальных карточек: генератор ищет системные DejaVu/Arial. Воспроизводимый внешний вид требует одинаковых шрифтов; контейнер CI закрепляет DejaVu, локальная macOS-сборка может использовать Arial.

После подготовки окружения, из корня проекта:

VIRTUAL_ENV="$PWD/.venv" bash scripts/zensical_docs.sh build --strict
VIRTUAL_ENV="$PWD/.venv" bash scripts/zensical_docs.sh serve --dev-addr=127.0.0.1:8000

serve запускает предварительную генерацию и наблюдение за результатом сборки. Полнота обновления всех AI-файлов при каждом редактировании отдельно не проверена.

Производные файлы — не исходные входы

Путь Кто создаёт
docs/assets/social/ generate_social_cards.py
docs/robots.txt generate_social_cards.py
overrides/partials/page_meta.html generate_social_cards.py
docs/llms.txt, docs/llms-full.txt, docs/ai/ AI-генератор и генератор векторов
.cache/site-markdown-pages.jsonl Кэш для переноса Markdown-страниц в результат
.cache/ и site/ Кэши инструментов и собранный сайт
.venv/, __pycache__/ Локальное окружение и кэш Python

Сейчас генерация пишет часть результатов внутрь docs/ и overrides/. Это фактическое смешение исходников и результатов, которое надо учесть при будущем разделении каталогов. Кэши и готовый site/ не должны быть необходимы для первой сборки из исходников.

За пределами этого минимума

Группа Назначение и дальнейшее решение
tests/, dev/requirements-test.lock, benchmark/check-скрипты вне списка выше Проверка качества и разработка; находятся вне обязательных входов сборки
spec/, AGENTS.md, README.md Внутренние описания; не нужны для генерации сайта
dev/content/, включая dev/content/data/ Подготовка и обновление контента; отделены от сборки уже подготовленного контента
MCP-сервер, runtime, snapshot consumer, release controller, MCP-зависимости Выполнение MCP и управление поставкой; не нужны для сборки сайта
.github/workflows/, delivery/ci/Dockerfile, публикация и настройки VPS Автоматизация проверки и поставки
delivery/site/Dockerfile, delivery/site/site.conf, delivery/site/build_local_site.py Упаковка локального сайта для пользователя; это часть целевой поставки
delivery/index/generate_mcp_snapshot.py, runtime/v8std_mcp_snapshot_format.py, runtime/v8std_mcp_presentation.py Дополнительные зависимости упаковки индекса для локального образа сайта
delivery/mcp/Dockerfile, delivery/local/compose.yaml Поставляемый MCP и совместный запуск контейнеров
LICENSE, .gitignore, .dockerignore Лицензирование проекта и управление содержимым репозитория/контекста Docker; сохранять по назначению, даже если команда HTML-сборки их не читает

Что осталось разделить

  1. Генерация всё ещё пишет производные файлы в docs/ и overrides/. Вынос выходов сборки выполняется отдельным этапом; набор исходных входов при этом должен остаться проверяемым.
  2. delivery/site/build_local_site.py принимает подготовленные AI-файлы, меняет настройки на локальный адрес и упаковывает snapshot индекса. Передача одного готового артефакта индекса на VPS и в образ сайта ещё требует отдельного изменения этого маршрута.
  3. delivery/local/compose.yaml связывает MCP с сайтом через depends_on и выводит MCP наружу через контейнер сайта. Самостоятельный Compose MCP ещё надо отделить от совместного режима.
  4. scripts/v8std_mcp_chunks.py остаётся общей зависимостью создания индекса и runtime. MCP в имени не означает, что этот файл нужен только серверу.

Код уже разнесён по назначению согласно плану. Файлы вне минимума HTML-сборки сохранены для остальных результатов поставки.

Проверка списка

При составлении реестра 16 сентября достаточность набора проверена strict-сборкой во временном каталоге только с перечисленными входами. Использовалось установленное Python-окружение рабочего checkout; установка зависимостей с нуля, Docker и интерактивный просмотр в эту проверку не входили.

17 сентября пути и состав реестра повторно сверены с текущим рабочим деревом. После удаления внутренней инструкции контейнерной установки из docs/ число отслеживаемых файлов контента уменьшилось на один. Прежний прогон подтверждает проверенный тогда набор, а не готовность текущего кандидата к выпуску.

После разделения каталогов

Входы из основного реестра остаются на месте. Остальные исходники распределены между runtime, delivery и dev; четыре вспомогательных data-файла находятся в dev/content/data. Старые инструменты и документы удалены после согласования атомарных правил. Docker-окружение разработки удалено; сайт разрабатывается в нативном Python-окружении. Описанные выше смешение выходов с исходниками и ограничение самостоятельного Compose MCP пока сохраняются.