Metadata-Version: 2.4
Name: python-rac
Version: 0.3.0
Summary: Клиент прямого протокола RAS 1С с интерфейсами CLI, веб-панели, настольной консоли и MCP
Author: Platform42
License-Expression: MIT
Project-URL: Repository, https://gitlab.com/platform42/python-rac
Project-URL: Issues, https://gitlab.com/platform42/python-rac/-/issues
Project-URL: Documentation, https://gitlab.com/platform42/python-rac/-/blob/beta/README.md
Keywords: 1c,ras,rac,administration,mcp
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: desktop
Requires-Dist: PySide6<7,>=6.8; extra == "desktop"
Provides-Extra: mcp
Requires-Dist: mcp<3,>=2; extra == "mcp"
Requires-Dist: pydantic<3,>=2; extra == "mcp"
Dynamic: license-file

# python-rac

Клиент администрирования кластеров 1С через RAS. Говорит с сервером администрирования **напрямую по TCP на Python**: бинарный `rac` из платформы не нужен. Одна библиотека и четыре интерфейса.

> Дистрибутив на PyPI называется `python-rac`, а в коде импортируется как `pyrac` (имя `pyrac` на PyPI принадлежит другому проекту).

## Возможности

- Протокол `16.0` (1С 8.5.1) — основной; узкий набор чтений для `10.0` (1С 8.3.11) и режим `auto` (только чтение).
- Чтение кластеров, серверов, процессов, ИБ, сеансов, соединений, блокировок, профилей безопасности, счётчиков, ограничений, правил и настроек сервисов.
- Защищённые изменения: каждое с повторным чтением и сверкой результата.
- Интерфейсы: библиотека `asyncio`, CLI, веб-консоль, настольная консоль, MCP-сервер.
- Несколько RAS в одной консоли (до 64).

## Установка

Python 3.11+.

```bash
python -m pip install python-rac                 # библиотека, CLI, веб-консоль
python -m pip install 'python-rac[desktop]'      # + настольная консоль (PySide6)
python -m pip install 'python-rac[mcp]'          # + MCP-сервер
```

## Быстрый старт

**Библиотека**

```python
import asyncio
from pyrac import RacClient

async def main():
    async with RacClient('127.0.0.1', 1545) as rac:
        print(await rac.list_clusters())

asyncio.run(main())
```

**CLI** — команды как у `rac`

```bash
pyrac --ras-host=127.0.0.1 cluster list
pyrac --ras-host=127.0.0.1 infobase --cluster=UUID summary list
```

**Веб-консоль** (Vue SPA, Node.js не нужен)

```bash
pyrac-web --ras-host=127.0.0.1        # http://127.0.0.1:8080/
```

**Настольная консоль**

```bash
pyrac-desktop --ras-host=127.0.0.1
```

**MCP-сервер** (stdio)

```bash
pyrac-mcp --ras-host=127.0.0.1
```

## Безопасность

- **Веб, desktop и MCP по умолчанию только читают.** Каждое изменение включается отдельным флагом `--allow-<операция>` (36 операций в web и desktop, 82 флага в MCP).
- Изменения возможны только по протоколу `16.0` (`auto` — только чтение), на любом RAS этого протокола, а в вебе — только на loopback.
- Перед выполнением нужно ввести точную строку подтверждения (например, UUID объекта); успех засчитывается после повторного чтения состояния.
- Пароли не вводятся и не хранятся; для аутентификации используются имена пользователей ОС (`--agent-user`, `--cluster-user`).
- **Исключение — CLI и библиотека:** там нет флагов и подтверждений, команды изменяют RAS сразу. Проверяйте изменения на собственном изолированном стенде, а не на производственном кластере.
- Покрытие команд `rac` неполное; многие операции проверены только на изолированном RAS 8.5.1, режим `10.0` — только тестами. Границы описаны в [rac-command-coverage.md](docs/rac-command-coverage.md) и [protocol.md](docs/protocol.md).

## Документация

| Документ | О чём |
| --- | --- |
| [docs/index.md](docs/index.md) | Карта документации |
| [docs/getting-started.md](docs/getting-started.md) | Установка и первый запуск |
| [docs/library.md](docs/library.md), [docs/cli.md](docs/cli.md) | Библиотека и командная строка |
| [docs/web.md](docs/web.md), [docs/desktop.md](docs/desktop.md), [docs/mcp.md](docs/mcp.md) | Веб-консоль, настольная консоль, MCP |
| [docs/operations.md](docs/operations.md) | Операции изменения и флаги `--allow-*` |
| [docs/protocol.md](docs/protocol.md), [docs/rac-command-coverage.md](docs/rac-command-coverage.md) | Протоколы и покрытие команд |
| [docs/architecture.md](docs/architecture.md), [docs/development.md](docs/development.md) | Устройство и разработка |
| [CHANGELOG.md](CHANGELOG.md) | История изменений |

## Разработка

```bash
python -m pip install -e '.[desktop,mcp]' pytest
python -m pytest tests/ -q          # для Qt: QT_QPA_PLATFORM=offscreen
```

Исходники интерфейса веб-консоли — в `web-ui/` (см. [web-ui/README.md](web-ui/README.md)). Выпуск на PyPI выполняется вручную: [docs/pypi-release.md](docs/pypi-release.md).

## Лицензия

[MIT](LICENSE)
