tmp commit

This commit is contained in:
2025-10-16 17:51:45 +09:00
parent 537e7b363f
commit ce72785184
6 changed files with 166 additions and 0 deletions

14
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,14 @@
{
"python.testing.pytestArgs": [
"tests"
],
"python.testing.unittestEnabled": true,
"python.testing.pytestEnabled": false,
"python.testing.unittestArgs": [
"-v",
"-s",
"./tests",
"-p",
"test_*.py"
]
}

3
pytest.ini Normal file
View File

@@ -0,0 +1,3 @@
[pytest]
testpaths = tests
python_files = test_*.py

1
requirements-dev.txt Normal file
View File

@@ -0,0 +1 @@
pytest

View File

@@ -0,0 +1,7 @@
#!/bin/bash
# Пример запроса к мобильному API календарного сервиса
curl -v -X POST http://localhost:8004/api/v1/calendar/entries/mobile \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(cat auth_token.txt)" \
-d '{"date": "2025-09-26", "type": "MENSTRUATION", "flow_intensity": 3, "symptoms": ["CRAMPS", "HEADACHE"], "mood": "NORMAL", "notes": "Тестовая запись"}'

139
tests/mobile_format_test.py Executable file
View File

@@ -0,0 +1,139 @@
#!/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=== ТЕСТИРОВАНИЕ ЗАВЕРШЕНО ===")

View File

@@ -0,0 +1,2 @@
def test_hello_world():
assert 1 + 1 == 2