#!/usr/bin/env python

"""
Скрипт для демонстрации преобразования данных мобильного формата в формат сервера.
Показывает, как преобразовывать данные и какие поля ожидает сервер.
"""

import json
import requests
from datetime import date, datetime

# Пример данных из мобильного приложения
MOBILE_DATA_EXAMPLES = [
    {
        "date": "2025-09-26",
        "type": "MENSTRUATION",
        "flow_intensity": 3,
        "symptoms": ["CRAMPS", "HEADACHE"],
        "mood": "NORMAL",
        "notes": "Пример записи о менструации"
    },
    {
        "date": "2025-09-30",
        "type": "OVULATION",
        "symptoms": ["BREAST_TENDERNESS"],
        "mood": "HAPPY",
        "notes": "Пример записи об овуляции"
    },
    {
        "date": "2025-10-05",
        "type": "SPOTTING",
        "flow_intensity": 1,
        "symptoms": ["BLOATING"],
        "mood": "STRESSED",
        "notes": "Пример записи о выделениях"
    }
]

def test_format_conversion(mobile_data):
    """Тестирование преобразования формата данных"""
    url = "http://localhost:8004/debug/mobile-entry"
    
    headers = {
        "Content-Type": "application/json"
    }
    
    print(f"\nТестирование преобразования данных: {json.dumps(mobile_data, ensure_ascii=False)}")
    
    try:
        response = requests.post(url, json=mobile_data, headers=headers)
        
        if response.status_code == 200:
            result = response.json()
            
            print("✅ Успешное преобразование данных")
            print("\nОригинальные данные (мобильный формат):")
            print(json.dumps(result["original_data"], ensure_ascii=False, indent=2))
            
            print("\nПреобразованные данные (формат сервера):")
            print(json.dumps(result["transformed_data"], ensure_ascii=False, indent=2))
            
            print("\nАнализ преобразования:")
            print(f"- Дата: {mobile_data['date']} -> {result['transformed_data']['entry_date']}")
            print(f"- Тип: {mobile_data['type']} -> {result['transformed_data']['entry_type']}")
            
            if mobile_data.get('flow_intensity'):
                print(f"- Интенсивность: {mobile_data['flow_intensity']} -> {result['transformed_data']['flow_intensity']}")
            
            if mobile_data.get('symptoms'):
                print(f"- Симптомы: {', '.join(mobile_data['symptoms'])} -> {result['transformed_data']['symptoms']}")
            
            if mobile_data.get('mood'):
                print(f"- Настроение: {mobile_data['mood']} -> {result['transformed_data']['mood'] or 'Не задано'}")
            
            return result
        else:
            print(f"❌ Ошибка: {response.status_code}")
            print(response.text)
            return None
    except Exception as e:
        print(f"❌ Исключение: {str(e)}")
        return None

def generate_documentation():
    """Генерация документации по формату данных"""
    print("\n=== ДОКУМЕНТАЦИЯ ПО ФОРМАТУ ДАННЫХ ===\n")
    print("Мобильный формат данных должен соответствовать следующей схеме:")
    
    schema = {
        "date": "string (формат YYYY-MM-DD, например '2025-09-26')",
        "type": "string (один из: MENSTRUATION, OVULATION, SPOTTING, DISCHARGE, PAIN, MOOD)",
        "flow_intensity": "integer (опционально, значения от 1 до 5)",
        "symptoms": "массив строк (опционально, например ['CRAMPS', 'HEADACHE'])",
        "mood": "string (опционально, одно из: HAPPY, SAD, NORMAL, STRESSED, ANXIOUS, IRRITATED)",
        "notes": "string (опционально, текстовые заметки)"
    }
    
    print(json.dumps(schema, ensure_ascii=False, indent=2))
    
    print("\nМаппинг между форматами:")
    
    mapping = {
        "Типы записей": {
            "MENSTRUATION": "period",
            "OVULATION": "ovulation",
            "SPOTTING": "symptoms",
            "DISCHARGE": "symptoms",
            "PAIN": "symptoms",
            "MOOD": "mood"
        },
        "Интенсивность выделений": {
            "1": "light",
            "2": "light",
            "3": "medium",
            "4-5": "heavy"
        },
        "Настроение": {
            "HAPPY": "happy",
            "SAD": "sad",
            "NORMAL": "happy",  # Маппится на happy
            "STRESSED": "anxious",
            "ANXIOUS": "anxious",
            "IRRITATED": "irritated"
        },
        "Симптомы": "Преобразуются из массива строк в строку с разделителями-запятыми"
    }
    
    print(json.dumps(mapping, ensure_ascii=False, indent=2))

if __name__ == "__main__":
    print("=== ТЕСТИРОВАНИЕ ПРЕОБРАЗОВАНИЯ ДАННЫХ МОБИЛЬНОГО ФОРМАТА ===\n")
    
    for i, example in enumerate(MOBILE_DATA_EXAMPLES):
        print(f"\n--- Пример #{i+1} ---")
        test_format_conversion(example)
    
    generate_documentation()
    
    print("\n=== ТЕСТИРОВАНИЕ ЗАВЕРШЕНО ===")