# Аннотация

Информационная система «Автопрокат» представляет собой настольное Windows Forms приложение на C# для учета клиентов, автомобилей, марок и договоров аренды. Программа подключается к PostgreSQL, инициализирует учебную схему данных, разграничивает права пользователей по ролям и позволяет формировать отчеты.

# Введение

Основные возможности системы:

- авторизация пользователей с ролями `admin`, `manager`, `viewer`;
- просмотр, поиск, добавление, изменение и удаление клиентов;
- ведение справочника автомобилей и марок;
- оформление и сопровождение договоров аренды;
- экспорт таблиц в CSV;
- формирование отчетов в HTML и TXT;
- просмотр журнала операций и событий аудита;
- проверка работоспособности через режим `--smoke-test`;
- разворачивание приложения через графический установщик `AutorentSetup.exe`.

# Назначение и условия применения

Программа предназначена для автоматизации работы учебного пункта автопроката: хранения сведений о клиентах, автопарке и арендах, контроля доступности автомобилей, подготовки отчетов и фиксации действий пользователей.

Условия применения:

- операционная система Windows 10 или новее;
- установленный .NET SDK 9.0 для сборки проекта;
- доступ к серверу PostgreSQL;
- учетная запись БД с правом подключения к рабочей базе и схеме;
- сетевой доступ к серверу `edu-pg.itiscaf.ru` или к другому PostgreSQL-серверу, указанному в `dbsettings.json`.

# Установка

## Шаги установки для пользователя

1.  Запустите файл `AutorentSetup.exe`.
2.  В окне мастера установки выберите папку для установки.

   По умолчанию используется:

   ```text
   C:\Users\<пользователь>\AppData\Local\AutorentWinForms
   ```

   Папку можно изменить кнопкой `Обзор...`.

3.  При необходимости оставьте отметку `Создать ярлык на рабочем столе`.
4.  Нажмите `Установить` и дождитесь завершения копирования файлов.
5.  Нажмите `Готово`.
6.  Установка завершена. Приложение можно запустить через ярлык на рабочем столе или через файл:

   ```text
   C:\Users\<пользователь>\AppData\Local\AutorentWinForms\AutorentWinForms.exe
   ```

## Что устанавливается в систему

- главный исполняемый файл приложения `AutorentWinForms.exe`;
- файл настроек подключения `dbsettings.json`;
- зависимости .NET и библиотеки PostgreSQL-драйвера;
- папка `Reports` создается при сохранении отчетов и CSV-файлов;
- ярлык на рабочем столе, если пользователь выбрал соответствующий пункт.

## Проверка установленной версии

Проверить работоспособность установленной версии можно командой из папки установки:

```powershell
.\AutorentWinForms.exe --smoke-test
```

Успешная проверка завершается без сообщения об ошибке. В консольной сборке режим также выводит строку вида `OK: clients=..., audit=..., adminAuth=True`.

Файл подключения можно изменить после установки:

```text
<папка установки>\dbsettings.json
```

Дополнительно можно передать строку подключения через переменную окружения `AUTORENT_CONNECTION_STRING`. В этом случае файл `dbsettings.json` не используется.

# Описание операций

Пользователь входит в программу через форму авторизации. После успешного входа открывается главное окно с вкладками данных. Набор доступных операций зависит от роли пользователя.

Основные операции:

- `Клиенты`: поиск, просмотр, добавление, редактирование, удаление и экспорт списка клиентов;
- `Автомобили`: учет регистрационного номера, марки, года выпуска, стоимости аренды и статуса;
- `Марки`: ведение справочника марок автомобилей, доступно администратору;
- `Аренда`: создание договора аренды, изменение периода, стоимости и статуса возврата;
- `Отчеты`: формирование аналитической сводки и сохранение ее в HTML или TXT;
- `Аудит`: просмотр журнала действий пользователей;
- `CSV`: выгрузка текущей таблицы в папку `Reports`.

Тестовые учетные записи для учебного стенда:

 Логин  Пароль  Роль 
 `garanin_gi`  пароль postgresql из таблицы тризбд  Администратор 
 `manager`  `Manager123!`  Менеджер 
 `shagavaliev_iv`  пароль postrgesql  Аналитик 

# Диаграмма развертывания системы

```mermaid
flowchart LR
    subgraph Client["Рабочая станция оператора"]
        User["Оператор"]
        App["AutorentWinForms.exe"]
        Settings["dbsettings.json или AUTORENT_CONNECTION_STRING"]
        Reports["Папка Reports"]
    end

    subgraph Build["Среда сборки"]
        Installer["AutorentSetup.exe"]
        Publish["publish/AutorentWinForms"]
    end

    subgraph Server["Сервер PostgreSQL"]
        Db["База dbwork"]
        Schema["Схема автопроката"]
        Audit["audit_log"]
    end

    User --> App
    Installer --> Publish
    Publish --> App
    App --> Settings
    App --> Reports
    App -- "Npgsql, TCP 5432" --> Db
    Db --> Schema
    Schema --> Audit
```

# Руководство оператора

Подробное руководство оператора находится в файле [docs/operator_manual.md](docs/operator_manual.md).

# Термины и сокращения

 Термин - Расшифровка 
 ИС - Информационная система 
 БД - База данных 
 PostgreSQL - Система управления реляционными базами данных 
 WinForms - Технология создания настольных приложений Windows на .NET 
 Оператор - Пользователь, выполняющий работу в программе 
 Администратор - Пользователь с полными правами на данные и справочники 
 Менеджер - Пользователь, ведущий клиентов, автомобили и аренды 
 Аналитик - Пользователь с правом просмотра данных и отчетов 
 CSV - Текстовый формат табличной выгрузки 
 Npgsql - .NET-драйвер для подключения к PostgreSQL 
