Об этом проекте
# PARTHA
Разведывательные данные по репозиториям для приватных и эволюционирующих кодовых баз.
## Что это такое
PARTHA берёт ревизию репозитория (импортированную как ZIP/TAR архив или публичный GitHub-репозиторий) и строит неизменяемый снимок его структуры. Из этого одного снимка она предоставляет:
- **Архитектура** — интерактивный график модулей и разрешённых связей; доказательства с ссылками на источники для поддерживаемых паттернов Python/FastAPI
- **График зависимостей** — декларации из `package.json`, `pyproject.toml` и `requirements.txt`, с разрешёнными pins из двух форматов lock-файлов, записанными отдельно
- **Инженерный обзор** — выводы, каждый с хранимыми доказательственными спанами; неассessed категории остаются видимыми; нет агрегатного балла или процента здоровья
- **Аналитика репозитория** — количества, соотношения, диагностика и покрытие исключительно из снимка
- **Родословная репозитория** — повторяющиеся импорты одного и того же репозитория и ветви сгруппированы в долговременную историю
- **Документация и экспорт** — структурная документация плюс обзор/документация/архитектура/зависимости экспортируются как JSON, Markdown, HTML или PDF
- **Опциональный AI-контекст** — конфигурация провайдеров на пользователя с зашифрованными ключами и allowlist исходящего трафика от деплоя; провайдеры получают только структурные факты и наблюдаемые пути, никогда исходные байты или спаны строк
Контракт формализован в [матрице возможностей](docs/CAPABILITIES.md), сгенерированной из кода и проверенной на дрейф в CI. Подтверждённые факты сохраняют доказательства и происхождение, привязанные к точному исходному расположению внутри проанализированной ревизии.
## Как это работает
```
Импорт → Анализ → Исследование → Экспорт
```
1. **Импорт** — загрузите архив или импортируйте публичный GitHub-репозиторий через HTTPS. PARTHA сохраняет инвентарь файлов и идентичность ревизии.
2. **Анализ** — долговременная, отменяемая фоновая задача запускает ограниченный конвейер извлечения для поддерживаемых конструкций Python и TypeScript/JavaScript, манифестов, lock-файлов, взаимодействий сервисов и Docker Compose.
3. **Исследование** — изучайте архитектуру, зависимости, инженерный обзор, аналитику, доказательства и родословную. Отсутствие или устаревший снимок показывает недоступность, а не пытается угадать интерпретацию.
4. **Экспорт** — генерируйте структурную документацию или экспортируйте результаты через конвейер JSON/Markdown/HTML/PDF.
Промежуточный артефакт — `ri.v1` — версионированный запечатанный снимок, содержащий факты, доказательства, диагностику и канонический хэш. Каждая поверхность продукта читает из этой общей модели; ни один потребитель не разбирает код независимо. AI — последующий потребитель разведывательных данных репозитория, а не независимый интерпретатор.
## Стек технологий
- **Backend**: Python 3.12–3.13, FastAPI
- **Frontend**: Node.js 22, React
- **База данных**: SQLite (разработка)
- **Worker**: in-process daemon thread (одна задача одновременно)
- **AI-провайдеры**: опционально, настраиваются с Fernet-зашифрованными ключами и DNS-pinned allowlist исходящего трафика
## Быстрый старт
```bash
git clone https://github.com/Second-Origin/PARTHA.git
cd PARTHA
# Backend — http://localhost:8000 (OpenAPI на /docs)
cd apps/backend
python3.13 -m venv .venv && source .venv/bin/activate
pip install -e .
cd ../.. && npm run dev:backend
# Frontend — http://localhost:5173
cd apps/frontend
npm ci
npm run dev
```
Для локальной разработки не требуется контейнерный рантайм или внешняя база данных. Файл `.env` не нужен.
## Текущие ограничения
- Только использование в доверенной среде — не защищён для широко разделяемого или multi-tenant хостинга.
- Глубокая семантическая экстракция ограничена Python и TypeScript/JavaScript; другие языки дают только инвентарь файлов.
- Покрытие зависимостей: три формата манифестов и два формата lock-файлов; нет транзитивного разрешения, сканирования уязвимостей или устаревших версий.
- Анализ всего репозитория за один запуск — нет инкрементального переанализа.
- Родословная сохраняет историю ревизий, но не сравнивает снимки, не обнаруживает переименования/перемещения и не вычисляет исторический blast radius.
- Опциональный AI может вызывать внешнего провайдера; только локальные провайдеры сохраняют всё на хосте. См. [egress policy](docs/security/AI_PROVIDER_EGRESS.md).
## Документация
- [Обзор системы](docs/architecture/SYSTEM_OVERVIEW.md)
- [Разведка репозитория](docs/architecture/REPOSITORY_INTELLIGENCE.md)
- [RFC-0001 — контракт ri.v1](docs/architecture/REPOSITORY_INTELLIGENCE_V1_RFC.md)
- [RFC-0002 — Родословная репозитория](docs/architecture/REPOSITORY_LINEAGE_RFC.md)
- [Матрица возможностей](docs/CAPABILITIES.md)
- [Руководство по разработке](docs/DEVELOPMENT.md)
- [Настройка AI-провайдера](docs/operations/AI_PROVIDER_SETUP.md)
- [Политика безопасности](SECURITY.md)
## Лицензия
Apache License 2.0
## Сообщество
- [Discord](https://discord.gg/qvk9DcxDA)
- [Issues](https://github.com/Second-Origin/PARTHA/issues)
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.