This commit is contained in:
2026-04-06 23:50:24 +03:30
parent a67236d45c
commit ff464cb4a5
140 changed files with 2061 additions and 2702 deletions
+12
View File
@@ -0,0 +1,12 @@
#!/bin/sh
# Fix: جداول farm_data وجود ندارند اما migrationهای legacy با label قدیمی ثبت شده‌اند.
# اجرا: docker compose run --rm web sh /app/scripts/fix_farm_data_tables.sh
set -e
cd /app
echo "Resetting legacy sensor_data migrations (fake unapply - tables may not exist)..."
python manage.py migrate sensor_data zero --noinput --fake
echo "Re-applying legacy sensor_data migrations (--fake-initial if tables already exist)..."
python manage.py migrate sensor_data --noinput --fake-initial
echo "Done. Running seed_sensor_parameters..."
python manage.py seed_sensor_parameters
echo "All done."
-12
View File
@@ -1,12 +0,0 @@
#!/bin/sh
# Fix: جداول sensor_data وجود ندارند اما migrationها به‌عنوان اعمال‌شده ثبت شده‌اند.
# اجرا: docker compose run --rm web sh /app/scripts/fix_sensor_data_tables.sh
set -e
cd /app
echo "Resetting sensor_data migrations (fake unapply - tables may not exist)..."
python manage.py migrate sensor_data zero --noinput --fake
echo "Re-applying sensor_data migrations (--fake-initial if tables already exist)..."
python manage.py migrate sensor_data --noinput --fake-initial
echo "Done. Running seed_sensor_parameters..."
python manage.py seed_sensor_parameters
echo "All done."
+45 -38
View File
@@ -176,15 +176,20 @@ SOIL_TASK_DATA = {
}
SENSOR_DATA = {
"uuid_sensor": "550e8400-e29b-41d4-a716-446655440000",
"location_id": 12,
"soil_moisture": 45.2,
"soil_temperature": 22.5,
"soil_ph": 6.8,
"electrical_conductivity": 1.2,
"nitrogen": 30.0,
"phosphorus": 15.0,
"potassium": 20.0,
"farm_uuid": "550e8400-e29b-41d4-a716-446655440000",
"center_location_id": 12,
"weather_forecast_id": 21,
"sensor_payload": {
"sensor-7-1": {
"soil_moisture": 45.2,
"soil_temperature": 22.5,
"soil_ph": 6.8,
"electrical_conductivity": 1.2,
"nitrogen": 30.0,
"phosphorus": 15.0,
"potassium": 20.0,
}
},
"plant_ids": [1],
"created_at": "2025-03-20T10:00:00Z",
"updated_at": "2025-03-24T10:00:00Z",
@@ -192,9 +197,12 @@ SENSOR_DATA = {
SENSOR_PARAMETER = {
"id": 3,
"sensor_key": "sensor-7-1",
"code": "soil_moisture",
"name_fa": "رطوبت خاک",
"unit": "%",
"data_type": "float",
"metadata": {"min": 0, "max": 100},
"created_at": "2025-03-24T10:00:00Z",
"action": "added",
}
@@ -754,43 +762,42 @@ def main():
payload,
)
for method in ("put", "patch"):
register(
f"sensor-data/update-{method}_200.json",
method.upper(),
"/api/sensor-data/{uuid_sensor}/",
200,
f"Sensor update {method} success",
ok_response(SENSOR_DATA),
)
register(
f"sensor-data/update-{method}_400.json",
method.upper(),
"/api/sensor-data/{uuid_sensor}/",
400,
f"Sensor update {method} validation error",
error_response(400, "داده نامعتبر.", {"location_id": ["This field is required."]}),
)
register(
f"sensor-data/update-{method}_404.json",
method.upper(),
"/api/sensor-data/{uuid_sensor}/",
404,
f"Sensor update {method} location not found",
error_response(404, "location_id یافت نشد.", None),
)
register(
"sensor-data/parameters-post_201.json",
"farm-data/upsert-post_201.json",
"POST",
"/api/sensor-data/parameters/",
"/api/farm-data/",
201,
"Farm data created",
ok_response(SENSOR_DATA, code=201),
)
register(
"farm-data/upsert-post_400.json",
"POST",
"/api/farm-data/",
400,
"Farm data validation error",
error_response(400, "داده نامعتبر.", {"farm_uuid": ["This field is required."]}),
)
register(
"farm-data/upsert-post_404.json",
"POST",
"/api/farm-data/",
400,
"Farm data invalid boundary",
error_response(400, "داده نامعتبر.", {"farm_boundary": ["farm_boundary باید حداقل 3 گوشه معتبر داشته باشد."]}),
)
register(
"farm-data/parameters-post_201.json",
"POST",
"/api/farm-data/parameters/",
201,
"Create sensor parameter",
ok_response(SENSOR_PARAMETER, code=201),
)
register(
"sensor-data/parameters-post_400.json",
"farm-data/parameters-post_400.json",
"POST",
"/api/sensor-data/parameters/",
"/api/farm-data/parameters/",
400,
"Sensor parameter validation error",
error_response(400, "داده نامعتبر.", {"code": ["This field is required."]}),