team-work-ai-discocat

0
5 месяцев назад
4 месяца назад
4 месяца назад
4 месяца назад
5 месяцев назад
4 месяца назад
README.md

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

Входные параметры

ПараметрТипОбязательныйПример
citystringNew York
statestringNY
property_typestringfurnished

Допустимые

property_type
:

furnished, semi-furnished, unfurnished

Выходные данные


✅ 5. Распределение цен

Endpoint

GET /api/price-distribution

Входные параметры

ПараметрТипПример
percentilesstring10,25,50,75,90

Выходные данные


✅ 6. Статистика по признакам

Endpoint

GET /api/feature-statistics

Входные параметры

ПараметрТипПример
featuresstringbedrooms,bathrooms,area

Выходные данные


✅ 7. Документация API

Endpoint

GET /api/

Назначение

Возвращает полное описание всех endpoint'ов, параметров и примеров запросов.


✅ Ошибки

КодПричина
400Некорректные параметры
500Внутренняя ошибка сервера

Пример:


✅ Внутренние вычисления

API автоматически:

  • Добавляет
    price_per_sqft
  • Определяет
    market_condition
    :
    stable
    ,
    hot
    ,
    cold
    ,
    insufficient_data
  • Кэширует результаты запросов
  • Генерирует синтетические координаты и города

⚠️ Ограничения API

Ниже перечислены текущие технические и архитектурные ограничения сервиса.


🔒 Архитектурные ограничения

  • API работает только в режиме чтения (GET-запросы).
  • Отсутствует аутентификация и авторизация — любой клиент имеет полный доступ к данным.
  • Отсутствует версионирование API (
    /v1
    ,
    /v2
    и т.п.).
  • Нет rate limiting — возможна перегрузка при большом количестве запросов.
  • Нет CORS-защиты, что может быть небезопасно при публичном размещении.

🗄️ Ограничения хранения данных

  • Используется SQLite в памяти (

    :memory:
    ):

    • Все данные теряются при перезапуске сервера.
    • Невозможна долговременная аналитика.
  • Поддерживается только один датасет за запуск.

  • Нет поддержки обновления, загрузки или замены данных через API.


⏱ Ограничения производительности

  • Используется глобальный кэш без потокобезопасности:

    • Возможны гонки данных при многопоточном доступе.
  • Нет асинхронной обработки запросов.

  • При больших датасетах возможны:

    • Замедление вычислений корреляций
    • Рост потребления памяти
  • Нет пагинации — все данные возвращаются целиком.


📥 Ограничения входных параметров

  • Параметры приходят только через query string.

  • Нет строгой схемы валидации:

    • features
      может содержать нечисловые поля
    • percentiles
      не проверяются на диапазон 0–100
  • Фильтры по локациям работают:

    • Только по точному совпадению строк
    • Без 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 # Данный файл