Files
chat/docs/NUTRITION_SERVICE_API.md
Andrew K. Choi 537e7b363f
All checks were successful
continuous-integration/drone/push Build is passing
main commit
2025-10-16 16:30:25 +09:00

5.1 KiB
Raw Blame History

Nutrition Service API Documentation

Overview

Nutrition Service предоставляет API для отслеживания питания, подсчета калорий и получения информации о продуктах питания через интеграцию с FatSecret API. Сервис позволяет пользователям контролировать свой рацион и отслеживать потребление воды.

Base URL: /api/v1/nutrition

Authentication

Все эндпоинты требуют JWT аутентификацию.

Headers:

Authorization: Bearer <jwt_token>

API Endpoints

🔍 Поиск продуктов

Найти продукты по названию

GET /api/v1/nutrition/foods?query=яблоко
Authorization: Bearer <token>

Параметры:

  • query (string, required): Поисковый запрос для поиска продуктов
  • page (number, optional): Номер страницы результатов, по умолчанию 1
  • page_size (number, optional): Количество результатов на странице, по умолчанию 20

Response:

{
  "results": [
    {
      "food_id": "123456",
      "name": "Яблоко, сырое, с кожурой",
      "brand": "",
      "calories": 52,
      "serving_size": "100г",
      "nutrients": {
        "carbohydrates": 13.8,
        "protein": 0.3,
        "fat": 0.2,
        "fiber": 2.4
      }
    }
  ],
  "total": 25,
  "page": 1,
  "page_size": 20
}

📝 Записи о питании

Добавить запись о питании

POST /api/v1/nutrition/entries
Authorization: Bearer <token>

Body:

{
  "food_id": "123456",
  "date": "2025-10-16",
  "meal_type": "lunch",
  "quantity": 1.0,
  "serving_size": "100г",
  "notes": "Красное яблоко"
}

Варианты типов приема пищи (meal_type):

  • breakfast - завтрак
  • lunch - обед
  • dinner - ужин
  • snack - перекус

Получить записи о питании

GET /api/v1/nutrition/entries?date=2025-10-16
Authorization: Bearer <token>

Параметры:

  • date (string, optional): Дата в формате YYYY-MM-DD
  • start_date (string, optional): Начальная дата для получения записей за период
  • end_date (string, optional): Конечная дата для получения записей за период
  • meal_type (string, optional): Фильтр по типу приема пищи

Удалить запись о питании

DELETE /api/v1/nutrition/entries/{entry_id}
Authorization: Bearer <token>

💧 Отслеживание воды

Добавить запись о потреблении воды

POST /api/v1/nutrition/water
Authorization: Bearer <token>

Body:

{
  "date": "2025-10-16",
  "amount_ml": 250,
  "time": "12:30:00"
}

Получить записи о потреблении воды

GET /api/v1/nutrition/water?date=2025-10-16
Authorization: Bearer <token>

📊 Сводки и статистика

Получить дневную сводку по питанию

GET /api/v1/nutrition/daily-summary?date=2025-10-16
Authorization: Bearer <token>

Response:

{
  "date": "2025-10-16",
  "total_calories": 1578,
  "total_carbohydrates": 175.3,
  "total_proteins": 78.2,
  "total_fats": 52.8,
  "total_water": 1200,
  "entries": [
    {
      "id": 123,
      "food_name": "Яблоко, сырое, с кожурой",
      "meal_type": "lunch",
      "calories": 52,
      "quantity": 1.0,
      "serving_size": "100г"
    }
  ]
}

Получить недельную аналитику

GET /api/v1/nutrition/weekly-summary?start_date=2025-10-10
Authorization: Bearer <token>

Интеграция с FatSecret API

Сервис использует FatSecret API для получения информации о питательной ценности продуктов. Ключи API хранятся в конфигурации сервера и не требуют дополнительной настройки со стороны клиента.

Примеры использования

JavaScript

// Пример поиска продуктов
async function searchFoods(query) {
  const response = await fetch(`http://localhost:8000/api/v1/nutrition/foods?query=${query}`, {
    headers: { 'Authorization': `Bearer ${token}` }
  });
  return response.json();
}

// Пример добавления записи о питании
async function addNutritionEntry(entryData) {
  const response = await fetch('http://localhost:8000/api/v1/nutrition/entries', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    body: JSON.stringify(entryData)
  });
  return response.json();
}