Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JBTimescale

WebAPI приложение для работы с timeseries данными на .NET, EF Core и PostgreSQL.

Описание

API сервис для загрузки, обработки и анализа timeseries данных из CSV файлов. Основные функции:

  • Загрузка и валидация CSV файлов с данными
  • Автоматический расчет интегральных показателей
  • Перезапись данных при повторной загрузке файла
  • Гибкая фильтрация результатов
  • Получение последних значений для конкретного файла

Требования

  • .NET 8+ SDK
  • PostgreSQL

Сборка

Локальный запуск

Клонировать репозиторий

git clone https://github.com/JIBarbashin/JBTimescale.git
cd JBTimescale

Настроить подключение к базе данных Измените строку подключения в appsettings.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Host=localhost;Port=5432;Database=jb_timescaleapi;Username=admin;Password=your_password"
  }
}

Установить зависимости

dotnet restore dotnet ef migrations add InitialCreate dotnet ef database update

Запустить приложение dotnet run

Открыть Swagger документацию https://localhost:5000/swagger/index.html

API Endpoints

1. Загрузка CSV файла

Загружает и обрабатывает CSV файл с данными.

POST /api/data/upload
Content-Type: multipart/form-data

Пример запроса (cURL):

curl -X POST https://localhost:5001/api/data/upload -F "file=@data.csv"

Успешный ответ (200):

{
  "message": "Данные успешно загружены и обработаны",
  "filename": "data.csv"
}

Ошибка (400):

{
  "error": "Строка 5: Дата вне допустимого диапазона"
}

2. Получение результатов

Возвращает список обработанных результатов с фильтрацией.

GET /api/data/results?filename=example&minDate=2024-01-01&maxDate=2024-12-31

Параметры фильтрации (все опциональны):

Параметр Тип Описание
filename string Имя файла (частичное совпадение)
minDate datetime Минимальная дата запуска
maxDate datetime Максимальная дата запуска
minAverageValue double Минимальное среднее значение
maxAverageValue double Максимальное среднее значение
minAverageExecutionTime double Минимальное среднее время выполнения
maxAverageExecutionTime double Максимальное среднее время выполнения

Успешный ответ (200):

[
  {
    "id": 1,
    "filename": "data.csv",
    "deltaTimeSeconds": 3600.5,
    "minDate": "2024-01-01T10:00:00Z",
    "executionTime": 15.75,
    "averageValue": 42.5,
    "medianValue": 43.2,
    "maxValue": 100.0,
    "minValue": 10.5
  }
]

3. Получение последних 10 значений

Возвращает последние 10 значений для указанного файла.

GET /api/data/last-values?fileName=data.csv

Параметры:

Параметр Тип Описание
filename string Имя файла

Успешный ответ (200):

[
  {
    "id": 100,
    "filename": "data.csv",
    "date": "2024-01-01T10:00:00Z",
    "executionTime": 15.75,
    "valueData": 42.5
  }
]

Формат CSV файла

Файл должен иметь формат CSV с разделителем ;:

Date;ExecutionTime;Value
2024-01-01T10-00-00.0000Z;15.5;42.3
2024-01-01T10-00-01.0000Z;12.8;38.7
2024-01-01T10-00-02.0000Z;16.2;45.1

Форматы полей:

  • Date: ГГГГ-ММ-ДДTчч-мм-сс.ммммZ
  • ExecutionTime: число с плавающей запятой (секунды)
  • Value: число с плавающей запятой

Автор

(c) 2026, Jegor I. Barbashin

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages