Это веб-приложение предназначено для определения соответствия заполненных форм шаблонам форм в базе данных. Если совпадение найдено, возвращается имя соответствующего шаблона. В противном случае производится динамическая типизация полей и возвращается список полей с их типами.

## Структура проекта

1. **app.py** - основной файл приложения.
2. **create_db_script.py** - скрипт для создания тестовой базы данных.
3. **database.json** - файл с тестовой базой данных.
4. **test_script_UserForm.py**, **test_script_OrderForm.py**, **test_script_OrderForm2.py**, **test_script_NoForm.py** - скрипты для тестирования.
5. **README.md** - файл с инструкциями.

## Инструкции по настройке и запуску

1. Установите необходимые зависимости:

    ```bash
    pip install flask tinydb requests
    ```

2. Запустите приложение:

    ```bash
    python app.py
    ```
    
3. Откройте другой терминал и запустите тестовые скрипты для просмотра результатов:

    ```bash
    python test_script_UserForm.py
    ```
    ```bash    
    python test_script_OrderForm.py
    ```
    ```bash    
    python test_script_OrderForm2.py
    ```
    ```bash    
    python test_script_NoForm.py
    ```

## Создание тестовой базы данных (create_db_script.py)

База данных находится в файле `database.json`. Для создания тестовой базы данных также можно использовать скрипт `create_db_script.py`. Он добавит два шаблона формы в файл `database.json`. Каждый шаблон содержит имя формы и набор полей с их типами.

```bash
python create_db_script.py
```

## Результаты тестовых скриптов

* `test_script_UserForm`: должен вернуть UserForm, так как посылаем почту и телефон
* `test_script_OrderForm`: должен вернуть OrderForm, так как посылаем текст и дату
* `test_script_OrderForm2`: должен вернуть OrderForm, так как посылаем текст и дату
* `test_script_NoForm`: должен вернуть результат динамической типизации полей, так как шаблон формы не матчится; _обратите внимание на то, что дата матчится как текст, а не date, так как разделитель / вместо ._

Также можно отправить POST-запрос по адресу `http://127.0.0.1:5000/get_form` с данными формы в теле запроса. Пример данных:

```bash
curl -X POST -d "field_name_1=test@example.com&field_name_2=+7 123 456 78 90" http://127.0.0.1:5000/get_form
```

Результат:

```json
{
  "field_name_1": "email",
  "field_name_2": "phone"
}
```
