Update all project documentation
This commit is contained in:
70
AGENTS.md
70
AGENTS.md
@@ -13,32 +13,51 @@ python -m app.komAI
|
|||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
- `app/` - application entry point (komAI.py expected)
|
- `app/` - application entry point (komAI.py expected)
|
||||||
- `src/` - source code, `src/__init__.py` exposes centralized API
|
- `src/` - source code
|
||||||
|
- `src/utils/` - utilities (config_manager, log_manager)
|
||||||
- `config/` - YAML configuration; `config/global.yaml` is the main config
|
- `config/` - YAML configuration; `config/global.yaml` is the main config
|
||||||
- `modules/` - pluggable modules, configured via `global.modules`
|
- `modules/` - pluggable modules
|
||||||
|
- `tests/` - standalone unit tests
|
||||||
- `log/` - runtime logs
|
- `log/` - runtime logs
|
||||||
- `tests/` - standalone unit tests (executable from CLI)
|
|
||||||
|
|
||||||
## Config System
|
## Config System
|
||||||
|
|
||||||
Modules register parameters at initialization via `config.register()`.
|
Access via:
|
||||||
|
|
||||||
Access global config:
|
|
||||||
```python
|
```python
|
||||||
import src.utils.config_manager
|
import src.utils.config_manager as config
|
||||||
config = src.utils.config_manager.config
|
config = config.config
|
||||||
```
|
```
|
||||||
|
|
||||||
Save config: `config.save()`
|
Key APIs:
|
||||||
|
- `config.register(name, val, default, desc, cat, env, validator)`
|
||||||
|
- `config.get(name, cat)` / `config.getraw(key)`
|
||||||
|
- `config.set(name, value, cat)` / `config.setraw(key, value)`
|
||||||
|
- `config.getall(name, cat)` / `config.getrawall(cat)`
|
||||||
|
- `config.load()` / `config.save()` / `config.reset()`
|
||||||
|
|
||||||
|
Constants: `ROOT_KEY = "$root$"`, `DEFAULT_CATEGORY = "global"`
|
||||||
|
|
||||||
## Logging
|
## Logging
|
||||||
|
|
||||||
All console output is duplicated to log files. Configure in `config/global.yaml`.
|
Access via:
|
||||||
|
```python
|
||||||
|
import src.utils.log_manager as log
|
||||||
|
```
|
||||||
|
|
||||||
|
Key APIs:
|
||||||
|
- `log.register_global_params()` - register global logging params
|
||||||
|
- `log.register(module, log_console, log_stderr, log_file, log_level)` - register module
|
||||||
|
- `log.setup()` - initialize logging
|
||||||
|
- `log.get_logger(module)` - get logger instance
|
||||||
|
- `logger.print(msg, level)` - print to console (use instead of print())
|
||||||
|
|
||||||
|
**Rule: Never use `print()` - always use `logger.print()`**
|
||||||
|
|
||||||
|
Constants: `LOG_CATEGORY`, `LOG_CONSOLE`, `LOG_STDERR`, `LOG_FILE`, `LOG_LEVEL`, etc.
|
||||||
|
|
||||||
## Env Vars (see `.env.example`)
|
## Env Vars (see `.env.example`)
|
||||||
|
|
||||||
- `KOMAI_CONFIG` - path to config file (optional)
|
- `KOMAI_CONFIG_FILE` - path to config file (optional)
|
||||||
- `LOGGING_LOG_PATH`, `LOGGING_LOG_FILE`, `LOGGING_LEVEL`
|
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
@@ -47,7 +66,26 @@ All console output is duplicated to log files. Configure in `config/global.yaml`
|
|||||||
## Module Development
|
## Module Development
|
||||||
|
|
||||||
When creating new modules:
|
When creating new modules:
|
||||||
- Register parameters with `config.register(name=..., val=..., cat="module_name", ...)`
|
|
||||||
- Use categories to organize params
|
1. Register parameters:
|
||||||
- All param changes trigger validators if set
|
```python
|
||||||
- Use `getall()` / `getrawall()` for nested param groups
|
import src.utils.config_manager as config
|
||||||
|
config.register(name="param", val="value", cat="module_name", ...)
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Use logging:
|
||||||
|
```python
|
||||||
|
import src.utils.log_manager as log
|
||||||
|
log.register(module="module_name", log_console=True, ...)
|
||||||
|
logger = log.get_logger("module_name")
|
||||||
|
logger.print("message") # never print()
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Never use `print()` directly - use `logger.print()` instead
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m tests.test_config_manager
|
||||||
|
python -m tests.test_log_manager
|
||||||
|
```
|
||||||
25
README.md
25
README.md
@@ -35,16 +35,11 @@ python -m app.komAI
|
|||||||
Модуль `config_manager` управляет конфигурацией с регистрацией параметров.
|
Модуль `config_manager` управляет конфигурацией с регистрацией параметров.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
import src.utils.config_manager
|
import src.utils.config_manager as config
|
||||||
config = src.utils.config_manager.config
|
config = config.config
|
||||||
|
|
||||||
# Регистрация параметра
|
|
||||||
config.register(name="app_name", val="komAI", desc="Наименование проекта", cat="app")
|
config.register(name="app_name", val="komAI", desc="Наименование проекта", cat="app")
|
||||||
|
|
||||||
# Получение значения
|
|
||||||
config.get("app_name", cat="app")
|
config.get("app_name", cat="app")
|
||||||
|
|
||||||
# Сохранение в файл
|
|
||||||
config.save()
|
config.save()
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -52,10 +47,24 @@ config.save()
|
|||||||
|
|
||||||
## Логирование
|
## Логирование
|
||||||
|
|
||||||
Все консольные выводы дублируются в логах. Настройка логирования в `config/global.yaml`.
|
Модуль `log_manager` обеспечивает логирование с выводом в консоль и файл.
|
||||||
|
|
||||||
|
```python
|
||||||
|
import src.utils.log_manager as log
|
||||||
|
|
||||||
|
log.register_global_params()
|
||||||
|
log.register(module="app", log_console=True, log_file="app.log")
|
||||||
|
log.setup()
|
||||||
|
|
||||||
|
logger = log.get_logger("app")
|
||||||
|
logger.print("Сообщение") # вместо print()
|
||||||
|
```
|
||||||
|
|
||||||
|
См. [doc/src.utils.log_manager.md](doc/src.utils.log_manager.md) для подробной документации.
|
||||||
|
|
||||||
## Тесты
|
## Тесты
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python -m tests.test_config_manager
|
python -m tests.test_config_manager
|
||||||
|
python -m tests.test_log_manager
|
||||||
```
|
```
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
# Каталог хранения конфигурационных файлов проекта.
|
# config - YAML конфигурация
|
||||||
|
|
||||||
Глобальный конфигурационный файл: `global.yaml`
|
Основной файл: `global.yaml`
|
||||||
|
|
||||||
|
Загружается через `config.load()`.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# Каталог для хранения логов.
|
# log - файлы логов
|
||||||
|
|
||||||
Параметр конфига: `global.log_path`
|
Путь настраивается через `logger.log_path` в конфиге.
|
||||||
|
|
||||||
`(gitignored)`
|
gitignored
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
# Каталог модулей проекта
|
# modules - подключаемые модули
|
||||||
|
|
||||||
Параметр конфига: `global.modules`
|
Модули регистрируют свои параметры в `config_manager` и настраивают логирование через `log_manager`.
|
||||||
|
|
||||||
|
См. `src/utils/log_manager/README.md` для правил написания модулей.
|
||||||
@@ -1,7 +1,11 @@
|
|||||||
# src - основные исходники
|
# src - основные исходники
|
||||||
|
|
||||||
## Централизованный API
|
|
||||||
|
|
||||||
## Утилиты
|
## Утилиты
|
||||||
|
|
||||||
- `config_manager/` - управление конфигурацией
|
- `config_manager/` - управление конфигурацией
|
||||||
|
- `config.config` - глобальный экземпляр ConfigManager
|
||||||
|
- API: `register()`, `get()`, `set()`, `getall()`, `getrawall()`, `load()`, `save()`, `reset()`
|
||||||
|
- `log_manager/` - логирование
|
||||||
|
- `log` - глобальные функции
|
||||||
|
- API: `register()`, `register_global_params()`, `setup()`, `get_logger()`
|
||||||
|
- `LoggerPrint.print()` - для вывода вместо print()
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
# src/utils - утилиты
|
# src/utils - утилиты
|
||||||
|
|
||||||
- `config_manager/` - ConfigManager
|
- `config_manager/` - управление конфигурацией
|
||||||
|
- `log_manager/` - логирование
|
||||||
Reference in New Issue
Block a user