From d213a4c183367a1ae5b46033d96ae6f9be062044 Mon Sep 17 00:00:00 2001 From: Mohammad Sajad Pourajam Date: Wed, 1 Apr 2026 18:38:18 +0330 Subject: [PATCH] UPDATE --- ...a279_idx_dashboard_d_sensor__2620a3_idx.py | 18 ++ docker-compose.yaml | 2 +- entrypoint.sh | 4 +- .../migrations/0005_merge_20260327_0840.py | 14 ++ logs/app.log.2026-03-19 | 179 ++++++++++++++++++ .../0004_alter_sensordata_location.py | 20 ++ 6 files changed, 235 insertions(+), 2 deletions(-) create mode 100644 dashboard_data/migrations/0003_rename_dashboard_d_sensor__c0a279_idx_dashboard_d_sensor__2620a3_idx.py create mode 100644 location_data/migrations/0005_merge_20260327_0840.py create mode 100644 logs/app.log.2026-03-19 create mode 100644 sensor_data/migrations/0004_alter_sensordata_location.py diff --git a/dashboard_data/migrations/0003_rename_dashboard_d_sensor__c0a279_idx_dashboard_d_sensor__2620a3_idx.py b/dashboard_data/migrations/0003_rename_dashboard_d_sensor__c0a279_idx_dashboard_d_sensor__2620a3_idx.py new file mode 100644 index 0000000..8eb4a2d --- /dev/null +++ b/dashboard_data/migrations/0003_rename_dashboard_d_sensor__c0a279_idx_dashboard_d_sensor__2620a3_idx.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.15 on 2026-03-27 08:40 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('dashboard_data', '0002_ndvi_observation'), + ] + + operations = [ + migrations.RenameIndex( + model_name='dashboardcardsnapshot', + new_name='dashboard_d_sensor__2620a3_idx', + old_name='dashboard_d_sensor__c0a279_idx', + ), + ] diff --git a/docker-compose.yaml b/docker-compose.yaml index 1b1e532..b179465 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,7 +1,7 @@ services: db: - image: mysql:8.0 + image: docker.iranserver.com/mysql:8 container_name: ai-db environment: MYSQL_DATABASE: ${DB_NAME:-ai} diff --git a/entrypoint.sh b/entrypoint.sh index 5eaa21d..c0d2027 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -2,7 +2,9 @@ set -e if [ "${SKIP_MIGRATE}" != "1" ]; then echo "Running migrations..." - python manage.py migrate --noinput --fake-initial + # python manage.py migrate --noinput --fake-initial + # python manage.py makemigrations --merge + echo "Migrations done." fi echo "Starting command: $*" diff --git a/location_data/migrations/0005_merge_20260327_0840.py b/location_data/migrations/0005_merge_20260327_0840.py new file mode 100644 index 0000000..df18cbc --- /dev/null +++ b/location_data/migrations/0005_merge_20260327_0840.py @@ -0,0 +1,14 @@ +# Generated by Django 5.1.15 on 2026-03-27 08:40 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('location_data', '0002_soillocation_ideal_sensor_profile'), + ('location_data', '0004_soillocation_farm_boundary'), + ] + + operations = [ + ] diff --git a/logs/app.log.2026-03-19 b/logs/app.log.2026-03-19 new file mode 100644 index 0000000..c150731 --- /dev/null +++ b/logs/app.log.2026-03-19 @@ -0,0 +1,179 @@ +2026-03-19 12:58:54,231 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 12:59:02,728 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 12:59:02,735 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 12:59:02,839 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 12:59:02,889 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 12:59:03,731 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 403 Forbidden" +2026-03-19 13:02:27,928 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:02:31,441 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:02:40,266 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:02:42,892 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:02:47,501 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:02:49,706 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:02:58,315 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:03:00,615 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:03:03,127 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:03:06,357 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:03:09,002 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:03:10,997 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:03:13,516 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:03:16,538 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:03:24,247 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:03:27,864 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:03:31,680 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:03:34,971 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:03:36,655 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:03:39,784 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:03:41,312 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:03:44,523 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:03:49,330 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:03:49,339 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 13:03:49,343 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:03:49,380 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:03:50,420 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 403 Forbidden" +2026-03-19 13:05:10,067 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:05:13,538 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:05:17,196 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:05:20,435 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:05:30,221 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:05:33,418 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:05:33,719 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:05:33,731 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 13:05:33,735 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:05:33,768 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:05:33,781 [INFO] rag.api_provider: gapgpt +2026-03-19 13:05:34,560 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 403 Forbidden" +2026-03-19 13:06:36,348 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:06:39,607 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:06:42,287 [INFO] django.utils.autoreload: /app/rag/api_provider.py changed, reloading. +2026-03-19 13:06:45,923 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:06:51,918 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:06:51,929 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 13:06:51,941 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:06:51,994 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:06:52,021 [INFO] rag.api_provider: gapgpt +2026-03-19 13:06:52,021 [INFO] rag.api_provider: sk-ZeFmDwROcQ2rYOFmUxHLjIwMTSUdo2qNc3Uraug9dOK2ihn5 https://api.gapgpt.app/v1 +2026-03-19 13:06:52,588 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 403 Forbidden" +2026-03-19 13:09:58,707 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:09:58,715 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 13:09:58,725 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:09:58,781 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:09:58,815 [INFO] rag.api_provider: gapgpt +2026-03-19 13:09:58,816 [INFO] rag.api_provider: sk-ZeFmDwROcQ2rYOFmUxHLjIwMTSUdo2qNc3Uraug9dOK2ihn5 https://api.gapgpt.app/v1 +2026-03-19 13:11:29,596 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 13:11:29,596 [INFO] openai._base_client: Retrying request to /embeddings in 0.442594 seconds +2026-03-19 13:13:00,294 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 13:13:00,294 [INFO] openai._base_client: Retrying request to /embeddings in 0.814020 seconds +2026-03-19 13:14:32,330 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 13:25:14,695 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:25:14,706 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 13:25:14,719 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:25:14,783 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:25:14,807 [INFO] rag.api_provider: gapgpt +2026-03-19 13:25:14,808 [INFO] rag.api_provider: sk-ZeFmDwROcQ2rYOFmUxHLjIwMTSUdo2qNc3Uraug9dOK2ihn5 https://api.gapgpt.app/v1 +2026-03-19 13:26:48,817 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 13:26:48,818 [INFO] openai._base_client: Retrying request to /embeddings in 0.387632 seconds +2026-03-19 13:28:17,856 [INFO] django.utils.autoreload: /app/rag/config.py changed, reloading. +2026-03-19 13:28:19,642 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 13:28:19,642 [INFO] openai._base_client: Retrying request to /embeddings in 0.771092 seconds +2026-03-19 13:28:19,697 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:28:23,262 [INFO] django.utils.autoreload: /app/rag/config.py changed, reloading. +2026-03-19 13:28:26,274 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:29:16,030 [INFO] django.utils.autoreload: /app/rag/config.py changed, reloading. +2026-03-19 13:29:19,297 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 13:29:21,261 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:29:21,275 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 13:29:21,298 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:29:21,350 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 13:29:21,376 [INFO] rag.api_provider: gapgpt +2026-03-19 13:29:21,376 [INFO] rag.api_provider: sk-ZeFmDwROcQ2rYOFmUxHLjIwMTSUdo2qNc3Uraug9dOK2ihn5 https://api.gapgpt.app/v1 +2026-03-19 13:30:52,295 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 13:30:52,296 [INFO] openai._base_client: Retrying request to /embeddings in 0.465685 seconds +2026-03-19 13:32:23,011 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 13:32:23,011 [INFO] openai._base_client: Retrying request to /embeddings in 0.894773 seconds +2026-03-19 13:33:55,186 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:21:23,732 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 14:21:23,742 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 14:21:23,749 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 14:21:23,814 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 14:21:23,841 [INFO] rag.api_provider: gapgpt +2026-03-19 14:21:23,842 [INFO] rag.api_provider: sk-ZeFmDwROcQ2rYOFmUxHLjIwMTSUdo2qNc3Uraug9dOK2ihn5 https://api.gapgpt.app/v1 +2026-03-19 14:22:54,762 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:22:54,763 [INFO] openai._base_client: Retrying request to /embeddings in 0.440965 seconds +2026-03-19 14:24:25,495 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:24:25,496 [INFO] openai._base_client: Retrying request to /embeddings in 0.861269 seconds +2026-03-19 14:25:27,028 [INFO] root: jhh +2026-03-19 14:25:27,030 [INFO] rag.chat: chat_rag_stream started sensor_uuid=00000000-0000-0000-0000-000000000000 kb_name=None limit=5 query_len=19 +2026-03-19 14:25:27,035 [INFO] rag.api_provider: gapgpt +2026-03-19 14:25:27,145 [INFO] rag.chat: Detected KB intent=chat +2026-03-19 14:25:27,145 [INFO] rag.chat: Using knowledge base=chat +2026-03-19 14:25:27,145 [INFO] rag.chat: Building RAG context sensor_uuid=00000000-0000-0000-0000-000000000000 kb_name=chat limit=5 query_len=19 +2026-03-19 14:25:27,171 [INFO] rag.api_provider: gapgpt +2026-03-19 14:25:27,171 [INFO] rag.api_provider: sk-ZeFmDwROcQ2rYOFmUxHLjIwMTSUdo2qNc3Uraug9dOK2ihn5 https://api.gapgpt.app/v1 +2026-03-19 14:25:56,630 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:26:58,070 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:26:58,070 [INFO] openai._base_client: Retrying request to /embeddings in 0.432490 seconds +2026-03-19 14:28:28,794 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:28:28,795 [INFO] openai._base_client: Retrying request to /embeddings in 0.991839 seconds +2026-03-19 14:29:49,207 [INFO] django.utils.autoreload: /app/rag/config.py changed, reloading. +2026-03-19 14:29:52,551 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 14:30:38,193 [INFO] django.utils.autoreload: /app/rag/config.py changed, reloading. +2026-03-19 14:30:39,922 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 14:30:42,504 [INFO] django.utils.autoreload: /app/rag/config.py changed, reloading. +2026-03-19 14:30:45,509 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 14:30:49,190 [INFO] httpx: HTTP Request: GET http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 14:30:49,198 [INFO] httpx: HTTP Request: GET http://qdrant:6333 "HTTP/1.1 200 OK" +2026-03-19 14:30:49,199 [INFO] httpx: HTTP Request: DELETE http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 14:30:49,256 [INFO] httpx: HTTP Request: PUT http://qdrant:6333/collections/croplogic_kb "HTTP/1.1 200 OK" +2026-03-19 14:30:49,285 [INFO] rag.api_provider: gapgpt +2026-03-19 14:30:49,285 [INFO] rag.api_provider: sk-ZeFmDwROcQ2rYOFmUxHLjIwMTSUdo2qNc3Uraug9dOK2ihn5 https://api.gapgpt.app/v1 +2026-03-19 14:32:20,003 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:32:20,003 [INFO] openai._base_client: Retrying request to /embeddings in 0.419902 seconds +2026-03-19 14:33:50,727 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:33:50,728 [INFO] openai._base_client: Retrying request to /embeddings in 0.883938 seconds +2026-03-19 14:35:21,862 [INFO] httpx: HTTP Request: POST https://api.gapgpt.app/v1/embeddings "HTTP/1.1 500 Internal Server Error" +2026-03-19 14:44:25,066 [INFO] django.utils.autoreload: /app/rag/config.py changed, reloading. +2026-03-19 14:44:28,557 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 14:59:19,518 [INFO] django.utils.autoreload: /app/config/settings.py changed, reloading. +2026-03-19 14:59:23,255 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 14:59:26,946 [INFO] django.utils.autoreload: /app/config/urls.py changed, reloading. +2026-03-19 14:59:30,776 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:03:30,274 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:10:06,813 [INFO] django.utils.autoreload: /app/sensor_data/models.py changed, reloading. +2026-03-19 15:10:10,500 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:11:14,729 [INFO] django.utils.autoreload: /app/sensor_data/serializers.py changed, reloading. +2026-03-19 15:11:18,263 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:11:31,277 [INFO] django.utils.autoreload: /app/sensor_data/views.py changed, reloading. +2026-03-19 15:11:34,478 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:11:41,179 [INFO] django.utils.autoreload: /app/sensor_data/views.py changed, reloading. +2026-03-19 15:11:44,628 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:11:53,369 [INFO] django.utils.autoreload: /app/sensor_data/admin.py changed, reloading. +2026-03-19 15:11:56,528 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:22:11,378 [INFO] django.utils.autoreload: /app/config/settings.py changed, reloading. +2026-03-19 15:22:14,686 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:22:35,729 [INFO] django.utils.autoreload: /app/rag/user_data.py changed, reloading. +2026-03-19 15:22:39,043 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:22:44,642 [INFO] django.utils.autoreload: /app/sensor_data/models.py changed, reloading. +2026-03-19 15:22:47,788 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:22:49,335 [INFO] django.utils.autoreload: /app/weather/models.py changed, reloading. +2026-03-19 15:22:52,507 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:22:58,238 [INFO] django.utils.autoreload: /app/location_data/migrations/0002_soildepthdata_refactor.py changed, reloading. +2026-03-19 15:23:01,389 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:23:07,088 [INFO] django.utils.autoreload: /app/location_data/migrations/0001_initial.py changed, reloading. +2026-03-19 15:23:10,608 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:23:44,947 [INFO] django.utils.autoreload: /app/weather/migrations/0001_initial.py changed, reloading. +2026-03-19 15:23:48,160 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:23:51,742 [INFO] django.utils.autoreload: /app/sensor_data/models.py changed, reloading. +2026-03-19 15:23:55,138 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:24:09,044 [INFO] django.utils.autoreload: /app/rag/user_data.py changed, reloading. +2026-03-19 15:24:12,254 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:36:50,309 [INFO] django.utils.autoreload: /app/rag/user_data.py changed, reloading. +2026-03-19 15:36:53,462 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:40:11,372 [INFO] django.utils.autoreload: /app/rag/urls.py changed, reloading. +2026-03-19 15:40:14,580 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 15:40:57,072 [INFO] django.utils.autoreload: /app/rag/views.py changed, reloading. +2026-03-19 15:41:00,143 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 17:55:08,865 [INFO] django.utils.autoreload: /app/config/settings.py changed, reloading. +2026-03-19 17:55:12,285 [INFO] django.utils.autoreload: Watching for file changes with StatReloader +2026-03-19 20:14:05,386 [INFO] django.utils.autoreload: /app/rag/__init__.py changed, reloading. +2026-03-19 20:14:09,007 [INFO] django.utils.autoreload: Watching for file changes with StatReloader diff --git a/sensor_data/migrations/0004_alter_sensordata_location.py b/sensor_data/migrations/0004_alter_sensordata_location.py new file mode 100644 index 0000000..628af8b --- /dev/null +++ b/sensor_data/migrations/0004_alter_sensordata_location.py @@ -0,0 +1,20 @@ +# Generated by Django 5.1.15 on 2026-03-27 08:40 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('location_data', '0005_merge_20260327_0840'), + ('sensor_data', '0003_sensordata_plants'), + ] + + operations = [ + migrations.AlterField( + model_name='sensordata', + name='location', + field=models.ForeignKey(db_column='location_id', help_text='همان location_id از location_data', on_delete=django.db.models.deletion.CASCADE, related_name='sensor_data', to='location_data.soillocation'), + ), + ]