Metadata-Version: 2.4
Name: ai-sql-reviewer
Version: 0.2.1
Summary: CLI SQL review for CI using schema-aware model consensus
Project-URL: Repository, https://github.com/not2exe/ai-sql-reviewer
Project-URL: Issues, https://github.com/not2exe/ai-sql-reviewer/issues
License: MIT
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: asyncpg>=0.30.0
Requires-Dist: litellm>=1.74.0
Requires-Dist: pydantic>=2.11.0
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: sqlglot>=27.0.0
Requires-Dist: typer>=0.16.0
Description-Content-Type: text/markdown

# ai-sql-reviewer

CLI-инструмент для schema-aware ревью изменённых PostgreSQL-запросов в CI.

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

- Извлекает изменённые statements из Git diff и сохраняет номера строк.
- Проверяет синтаксис через SQLGlot до любых модельных вызовов.
- Восстанавливает схему миграциями во временном PostgreSQL-контейнере.
- Запускает независимые performance, architecture и correctness reviews, critic и final reviewer.
- Валидирует все ответы Pydantic-моделями и показывает безопасные предложения как diff.
- Поддерживает console, Markdown и JSON; исходные SQL-файлы не изменяет.
- Публикует краткий GitHub PR summary и все inline findings одним review.

## Требования

Python 3.12+, uv, Docker и доступный из shell migration command.

## Установка

```bash
uv tool install ai-sql-reviewer==0.2.1
```

## Конфигурация

```yaml
dialect: postgres
migrations:
  command: ./scripts/migrate.sh
  postgres_version: "17"
  timeout_seconds: 120
llm:
  model: openai/example-model
  api_key_env: OPENAI_API_KEY
  api_base: null
  temperature: 0
  timeout_seconds: 60
  max_retries: 2
review:
  agents: [performance, architecture, correctness]
  minimum_confidence: 0.65
  max_findings: 10
output:
  format: markdown
```

Секрет хранится только в environment variable, имя которой задаёт `api_key_env`.

## CLI

```bash
ai-sql-review review-diff --base origin/main --head HEAD --format markdown
ai-sql-review review-file path/to/query.sql --format console
ai-sql-review review-sql "SELECT * FROM users" --format json
```

`--debug` включает технические сообщения orchestration и parser без публикации внутренних model responses.

## GitHub Actions

```yaml
- uses: astral-sh/setup-uv@v9.0.0
- id: review
  continue-on-error: true
  env:
    OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
  run: uvx --from ai-sql-reviewer==0.2.1 ai-sql-review review-diff --base "${{ github.event.pull_request.base.sha }}" --head "${{ github.event.pull_request.head.sha }}" --format json > sql-review.json
- if: always()
  env:
    GITHUB_TOKEN: ${{ github.token }}
  run: uvx --from ai-sql-reviewer==0.2.1 ai-sql-review publish-github sql-review.json --base "${{ github.event.pull_request.base.sha }}" --head "${{ github.event.pull_request.head.sha }}" --repository "${{ github.repository }}" --pull-request "${{ github.event.pull_request.number }}"
```

Полный пример: `examples/github-actions/sql-review.yml`.

## Ограничения MVP

- Поддерживается только PostgreSQL и миграции, запускаемые одной shell-командой.
- Нет GitHub App, query-plan execution и автоматического применения fixes.
- Качество выводов зависит от выбранной через LiteLLM модели и предоставленной схемы.

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

```bash
uv sync
uv run ruff check .
uv run mypy src
uv build
```
