team-work-ai-discocat
Gitverse аккаунты:
Student 1: discocat
Student 2: Zhnyaugamerz
Student 3: Slava1111
Мной была выполнена роль 2-го студента для Zhnyaugamerz
Описание проекта
Работа выполнялась в Gigacode. Выполнено задание №7 по адресу ./dev/solution.py
Функционал API
📘 Housing Market Analysis API — описание функционала
API предназначено для анализа рынка недвижимости на основе CSV-датасета. Предоставляет статистику по ценам, признакам, локациям, а также общее состояние рынка.
🔹 Общие характеристики
- Формат данных: JSON
- Метод запросов: GET
- Валюта: USD
- Единица площади: sq ft
- Источник данных: CSV-файл или встроенные синтетические данные
- Базовый URL:
http://localhost:8000/api/
✅ 1. Проверка состояния сервиса
Endpoint
GET /api/health
Входные параметры
❌ Отсутствуют
Выходные данные (пример)
✅ 2. Сводная информация о датасете
Endpoint
GET /api/dataset-summary
Входные параметры
❌ Отсутствуют
Выходные данные (ключевые поля)
✅ 3. Список доступных локаций
Endpoint
GET /api/available-locations
Входные параметры
❌ Отсутствуют
Выходные данные
✅ 4. Статистика по локации
Endpoint
GET /api/location-statistics
Входные параметры
| Параметр | Тип | Обязательный | Пример |
|---|---|---|---|
| city | string | ❌ | New York |
| state | string | ❌ | NY |
| property_type | string | ❌ | furnished |
Допустимые :
furnished, semi-furnished, unfurnished
Выходные данные
✅ 5. Распределение цен
Endpoint
GET /api/price-distribution
Входные параметры
| Параметр | Тип | Пример |
|---|---|---|
| percentiles | string | 10,25,50,75,90 |
Выходные данные
✅ 6. Статистика по признакам
Endpoint
GET /api/feature-statistics
Входные параметры
| Параметр | Тип | Пример |
|---|---|---|
| features | string | bedrooms,bathrooms,area |
Выходные данные
✅ 7. Документация API
Endpoint
GET /api/
Назначение
Возвращает полное описание всех endpoint'ов, параметров и примеров запросов.
✅ Ошибки
| Код | Причина |
|---|---|
| 400 | Некорректные параметры |
| 500 | Внутренняя ошибка сервера |
Пример:
✅ Внутренние вычисления
API автоматически:
- Добавляет price_per_sqft
- Определяет
:market_condition,stable,hot,coldinsufficient_data - Кэширует результаты запросов
- Генерирует синтетические координаты и города
⚠️ Ограничения API
Ниже перечислены текущие технические и архитектурные ограничения сервиса.
🔒 Архитектурные ограничения
- API работает только в режиме чтения (GET-запросы).
- Отсутствует аутентификация и авторизация — любой клиент имеет полный доступ к данным.
- Отсутствует версионирование API (
,/v1и т.п.)./v2 - Нет rate limiting — возможна перегрузка при большом количестве запросов.
- Нет CORS-защиты, что может быть небезопасно при публичном размещении.
🗄️ Ограничения хранения данных
-
Используется SQLite в памяти (
)::memory:- Все данные теряются при перезапуске сервера.
- Невозможна долговременная аналитика.
-
Поддерживается только один датасет за запуск.
-
Нет поддержки обновления, загрузки или замены данных через API.
⏱ Ограничения производительности
-
Используется глобальный кэш без потокобезопасности:
- Возможны гонки данных при многопоточном доступе.
-
Нет асинхронной обработки запросов.
-
При больших датасетах возможны:
- Замедление вычислений корреляций
- Рост потребления памяти
-
Нет пагинации — все данные возвращаются целиком.
📥 Ограничения входных параметров
-
Параметры приходят только через query string.
-
Нет строгой схемы валидации:
может содержать нечисловые поляfeaturesне проверяются на диапазон 0–100percentiles
-
Фильтры по локациям работают:
- Только по точному совпадению строк
- Без support для partial match / search
-
принимает только фиксированный набор значений.property_type
📤 Ограничения выходных данных
-
Формат ответа жёстко зафиксирован (нельзя кастомизировать поля).
-
Нет пагинации, сортировки и проекции полей.
-
Все метрики возвращаются:
- В одной валюте (USD)
- В одной единице площади (sq ft)
-
Нельзя запрашивать:
- Сырые строки датасета
- Историю изменений
🧪 Ограничения тестирования
-
Отсутствуют:
- Unit-тесты
- Load-тесты
- Контрактные тесты API
-
Корректность аналитики зависит только от ручной проверки.
Структура репозитория
/
├── dev/ # Основной код решения
│ └── solution.py # Реализация API-функций
├── demo/ # Пример входных данных
│ └── sample_data.csv # CSV-файл с данными о ресторанах
├── spec/ # Техническое задание
│ └── codex.md # Документация спецификации
├── tasks/ # Задачи и требования
├── CONTRIBUTING.md # Инструкция по вкладу в проект
└── README.md # Данный файл