From 7e02694cb0b51b38b84f19f3abac229a64d05a57 Mon Sep 17 00:00:00 2001 From: kolo Date: Sun, 2 Nov 2025 01:19:59 +0300 Subject: [PATCH] docs --- docs/conf.py | 3 ++ docs/index.rst | 60 ++++++++++++++++++++++++++++++++++++++++ docs/root/quickstart.rst | 2 +- 3 files changed, 64 insertions(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index fb36af9..5a84b8c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,6 +17,9 @@ root_doc = "index" locale_dirs = ['locales/'] gettext_compact = False +extensions = [ + "sphinx.ext.graphviz" +] templates_path = ["_templates"] exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] diff --git a/docs/index.rst b/docs/index.rst index 311acd8..061f51c 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -26,6 +26,66 @@ Argenta предназначена для создания приложений, * **Автоматическая валидация и парсинг**. Библиотека берёт на себя обработку флагов и аргументов командной строки, включая их парсинг, валидацию и преобразование типов. * **Гибкая настройка**. Вы можете легко кастомизировать системные сообщения, форматирование вывода и даже перенаправлять стандартный вывод (stdout) в свои обработчики. +Архитектура и жизненный цикл +----------------------------- + +Следующая диаграмма иллюстрирует, как компоненты Argenta взаимодействуют друг с другом, обрабатывая ввод пользователя. + +.. graphviz:: + + digraph "Request Lifecycle" { + rankdir=LR; + node [shape=box, style=rounded, fontname="sans-serif"]; + edge [fontname="sans-serif"]; + + subgraph cluster_input { + label = "Пользовательский ввод"; + style=filled; + color=lightgrey; + node [style=filled,color=white]; + "User Input" [label="Ввод команды"]; + } + + subgraph cluster_core { + label = "Ядро Argenta"; + style=filled; + color=lightblue; + node [style=filled,color=white]; + "Orchestrator"; + "App"; + "Router"; + "Command Handler" [label="Обработчик команды"]; + } + + subgraph cluster_di { + label = "Внедрение зависимостей"; + style=filled; + color=lightgreen; + node [style=filled,color=white]; + "DI Container (dishka)" [label="DI-контейнер (dishka)"]; + "Dependencies" [label="Зависимости (напр., Repository)"]; + } + + subgraph cluster_output { + label = "Вывод"; + style=filled; + color=lightgrey; + node [style=filled,color=white]; + "User Output" [label="Вывод результата"]; + } + + "User Input" -> "Orchestrator" [label="1. Запуск и парсинг"]; + "Orchestrator" -> "App" [label="2. Передача управления"]; + "App" -> "Router" [label="3. Поиск нужного роутера"]; + "Router" -> "Command Handler" [label="4. Вызов обработчика"]; + "Command Handler" -> "DI Container (dishka)" [label="5. Запрос зависимостей"]; + "DI Container (dishka)" -> "Dependencies" [label="6. Создание и предоставление"]; + "Dependencies" -> "Command Handler" [label="7. Внедрение"]; + "Command Handler" -> "App" [label="8. Формирование ответа"]; + "App" -> "User Output" [label="9. Отображение результата"]; + } + + .. toctree:: :hidden: :caption: Контент: diff --git a/docs/root/quickstart.rst b/docs/root/quickstart.rst index 0a1681c..9ea8815 100644 --- a/docs/root/quickstart.rst +++ b/docs/root/quickstart.rst @@ -47,5 +47,5 @@ Теперь вы можете запустить `main.py` и взаимодействовать с вашим новым CLI-приложением. -.. image:: https://github.com/koloideal/Argenta/blob/main/imgs/mock_app_preview4.png?raw=True +.. image:: https://i.ibb.co/hxNdbyKB/2025-11-02-005919.png :alt: Task Manager Example