diff --git a/README.md b/README.md
index f727489..aa287e2 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@
```mermaid
graph TB
- subgraph "Основной цикл (app/main.py)"
+ subgraph "Основной цикл"
A[main() - основной цикл] --> B{Режим активации}
B -->|Ожидание wake word| C[wait_for_wakeword()]
B -->|Режим диалога| D[listen() в режиме follow-up]
@@ -38,23 +38,22 @@ graph TB
E --> F[Анализ команды]
end
- subgraph "Аудио подсистема (app/audio/)"
- C1[wakeword.py
- wait_for_wakeword()
- check_wakeword_once()]
- E1[stt.py
- listen()
- get_recognizer()]
- G1[tts.py
- speak()
- initialize()]
- H1[sound_level.py
- parse_volume_text()
- set_volume()]
+ subgraph "Аудио подсистема"
+ C1[wait_for_wakeword()
wakeword.py
check_wakeword_once()]
+ E1[listen()
stt.py
get_recognizer()]
+ G1[speak()
tts.py
initialize()]
+ H1[parse_volume_text()
sound_level.py
set_volume()]
C1 -.-> E1
E1 -.-> G1
H1 -.-> G1
end
- subgraph "Ядро (app/core/)"
- F1[commands.py
- is_stop_command()
- _normalize_text()]
- F2[ai.py
- ask_ai_stream()
- translate_text()]
- F3[cleaner.py
- clean_response()]
- F4[config.py
- Настройки проекта]
- F5[smalltalk.py
- get_smalltalk_response()]
+ subgraph "Ядро"
+ F1[is_stop_command()
commands.py
_normalize_text()]
+ F2[ask_ai_stream()
ai.py
translate_text()]
+ F3[clean_response()
cleaner.py]
+ F5[get_smalltalk_response()
smalltalk.py]
F --> F1
F --> F2
@@ -62,13 +61,13 @@ graph TB
F --> F5
end
- subgraph "Функции (app/features/)"
- I1[weather.py
- get_weather_report()]
- I2[timer.py
- get_timer_manager()]
- I3[alarm.py
- get_alarm_clock()]
- I4[stopwatch.py
- get_stopwatch_manager()]
- I5[music.py
- get_music_controller()]
- I6[cities_game.py
- get_cities_game()]
+ subgraph "Функции"
+ I1[get_weather_report()
weather.py]
+ I2[get_timer_manager()
timer.py]
+ I3[get_alarm_clock()
alarm.py]
+ I4[get_stopwatch_manager()
stopwatch.py]
+ I5[get_music_controller()
music.py]
+ I6[get_cities_game()
cities_game.py]
F --> I1
F --> I2
@@ -138,7 +137,7 @@ graph TB
```mermaid
graph TD
subgraph "Активация и распознавание"
- A[wakeword.py
wait_for_wakeword()] --> B[stt.py
listen()]
+ A[wait_for_wakeword()
wakeword.py] --> B[listen()
stt.py]
B --> C[Распознанный текст]
end
@@ -147,21 +146,21 @@ graph TD
end
subgraph "Обработка специфических команд"
- D -->|Small talk| E[smalltalk.py
get_smalltalk_response()]
- D -->|Стоп команда| F[commands.py
is_stop_command()]
- D -->|Таймер| G[timer.py
parse_command()]
- D -->|Будильник| H[alarm.py
parse_command()]
- D -->|Секундомер| I[stopwatch.py
parse_command()]
- D -->|Громкость| J[sound_level.py
parse_volume_text()
set_volume()]
- D -->|Погода| K[weather.py
get_weather_report()]
- D -->|Музыка| L[music.py
parse_command()]
- D -->|Перевод| M[ai.py
parse_translation_request()
translate_text()]
- D -->|Города| N[cities_game.py
handle()]
- D -->|Обычный вопрос| O[ai.py
ask_ai_stream()]
+ D -->|Small talk| E[get_smalltalk_response()
smalltalk.py]
+ D -->|Стоп команда| F[is_stop_command()
commands.py]
+ D -->|Таймер| G[parse_command()
timer.py]
+ D -->|Будильник| H[parse_command()
alarm.py]
+ D -->|Секундомер| I[parse_command()
stopwatch.py]
+ D -->|Громкость| J[parse_volume_text()
sound_level.py
set_volume()]
+ D -->|Погода| K[get_weather_report()
weather.py]
+ D -->|Музыка| L[parse_command()
music.py]
+ D -->|Перевод| M[parse_translation_request()
ai.py
translate_text()]
+ D -->|Города| N[handle()
cities_game.py]
+ D -->|Обычный вопрос| O[ask_ai_stream()
ai.py]
end
subgraph "Ответ пользователю"
- E --> P[cleaner.py
clean_response()]
+ E --> P[clean_response()
cleaner.py]
F --> P
G --> P
H --> P
@@ -172,7 +171,7 @@ graph TD
M --> P
N --> P
O --> P
- P --> Q[tts.py
speak()]
+ P --> Q[speak()
tts.py]
end
subgraph "Цикл управления"