261 lines
10 KiB
Markdown
261 lines
10 KiB
Markdown
# مستندات جداول پایگاه داده — CropLogic AI
|
|
|
|
این سند تمام جداول (مدلهای Django) موجود در پروژه را به همراه توضیح ستونها و روابط بین آنها شرح میدهد.
|
|
|
|
---
|
|
|
|
## فهرست جداول
|
|
|
|
| اپ | جدول | توضیح کوتاه |
|
|
|---|---|---|
|
|
| `location_data` | `SoilLocation` | موقعیت جغرافیایی (lat/lon) |
|
|
| `location_data` | `SoilDepthData` | دادههای خاک به تفکیک عمق |
|
|
| `sensor_data` | `SensorData` | آخرین خوانش سنسور برای یک موقعیت |
|
|
| `sensor_data` | `SensorDataHistory` | تاریخچه خوانشهای سنسور |
|
|
| `sensor_data` | `SensorParameter` | تعریف پارامترهای سنسور |
|
|
| `sensor_data` | `ParameterUpdateLog` | لاگ تغییرات پارامترهای سنسور |
|
|
| `weather` | `WeatherParameter` | تعریف پارامترهای هواشناسی |
|
|
| `weather` | `WeatherForecast` | پیشبینی آبوهوای روزانه |
|
|
| `plant` | `Plant` | اطلاعات گیاهان |
|
|
| `irrigation` | `IrrigationMethod` | روشهای آبیاری |
|
|
|
|
---
|
|
|
|
## اپ: `location_data`
|
|
|
|
### جدول `SoilLocation`
|
|
|
|
موقعیتهای جغرافیایی که دادههای خاک و سنسور به آنها متصل هستند.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `latitude` | DecimalField (9,6) | عرض جغرافیایی |
|
|
| `longitude` | DecimalField (9,6) | طول جغرافیایی |
|
|
| `task_id` | CharField | شناسه تسک Celery در حال پردازش |
|
|
| `created_at` | DateTimeField | زمان ایجاد |
|
|
| `updated_at` | DateTimeField | آخرین زمان بهروزرسانی |
|
|
|
|
**محدودیتها:**
|
|
- ترکیب `(latitude, longitude)` باید یکتا باشد.
|
|
|
|
**روابط:**
|
|
- ← `SoilDepthData.soil_location` (یک به چند)
|
|
- ← `SensorData.location` (یک به چند)
|
|
- ← `WeatherForecast.location` (یک به چند)
|
|
|
|
---
|
|
|
|
### جدول `SoilDepthData`
|
|
|
|
دادههای خاک از API SoilGrids برای سه عمق مختلف، مرتبط با هر `SoilLocation`.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `soil_location` | FK → SoilLocation | موقعیت مکانی مرتبط |
|
|
| `depth_label` | CharField | عمق: `0-5cm` / `5-15cm` / `15-30cm` |
|
|
| `bdod` | FloatField | چگالی ظاهری خاک (Bulk Density) |
|
|
| `cec` | FloatField | ظرفیت تبادل کاتیونی (CEC) |
|
|
| `cfvo` | FloatField | درصد حجمی سنگریزه |
|
|
| `clay` | FloatField | درصد رس |
|
|
| `nitrogen` | FloatField | نیتروژن کل |
|
|
| `ocd` | FloatField | تراکم کربن آلی |
|
|
| `ocs` | FloatField | ذخیره کربن آلی |
|
|
| `phh2o` | FloatField | pH خاک در آب |
|
|
| `sand` | FloatField | درصد شن |
|
|
| `silt` | FloatField | درصد سیلت |
|
|
| `soc` | FloatField | کربن آلی خاک (SOC) |
|
|
| `wv0010` | FloatField | رطوبت حجمی در ۱۰ kPa |
|
|
| `wv0033` | FloatField | ظرفیت زراعی — رطوبت در ۳۳ kPa |
|
|
| `wv1500` | FloatField | نقطه پژمردگی — رطوبت در ۱۵۰۰ kPa |
|
|
| `created_at` | DateTimeField | زمان ایجاد |
|
|
|
|
**محدودیتها:**
|
|
- ترکیب `(soil_location, depth_label)` باید یکتا باشد.
|
|
|
|
---
|
|
|
|
## اپ: `sensor_data`
|
|
|
|
### جدول `SensorData`
|
|
|
|
آخرین خوانش سنسور فیزیکی برای یک موقعیت. هنگام بهروزرسانی، نسخه قبلی به `SensorDataHistory` منتقل میشود.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `uuid_sensor` | UUIDField (PK) | شناسه یکتای سنسور |
|
|
| `location` | FK → SoilLocation | موقعیت مکانی (ستون DB: `location_id`) |
|
|
| `soil_moisture` | FloatField | رطوبت خاک |
|
|
| `soil_temperature` | FloatField | دمای خاک |
|
|
| `soil_ph` | FloatField | pH خاک |
|
|
| `electrical_conductivity` | FloatField | هدایت الکتریکی (EC) |
|
|
| `nitrogen` | FloatField | ازت (N) |
|
|
| `phosphorus` | FloatField | فسفر (P) |
|
|
| `potassium` | FloatField | پتاسیم (K) |
|
|
| `plants` | M2M → Plant | گیاهان مرتبط با این سنسور |
|
|
| `created_at` | DateTimeField | زمان ایجاد |
|
|
| `updated_at` | DateTimeField | آخرین زمان بهروزرسانی |
|
|
|
|
---
|
|
|
|
### جدول `SensorDataHistory`
|
|
|
|
تاریخچه کامل خوانشهای سنسور. هر بار که `SensorData` بهروز میشود، نسخه قبلی اینجا ذخیره میشود.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `uuid_sensor` | UUIDField | شناسه سنسور اصلی |
|
|
| `location_id` | IntegerField | شناسه موقعیت مکانی |
|
|
| `soil_moisture` | FloatField | رطوبت خاک |
|
|
| `soil_temperature` | FloatField | دمای خاک |
|
|
| `soil_ph` | FloatField | pH خاک |
|
|
| `electrical_conductivity` | FloatField | هدایت الکتریکی |
|
|
| `nitrogen` | FloatField | ازت |
|
|
| `phosphorus` | FloatField | فسفر |
|
|
| `potassium` | FloatField | پتاسیم |
|
|
| `recorded_at` | DateTimeField | زمان ثبت در تاریخچه |
|
|
|
|
> **نکته:** این جدول FK مستقیم به SoilLocation ندارد تا در صورت حذف موقعیت، تاریخچه حفظ شود.
|
|
|
|
---
|
|
|
|
### جدول `SensorParameter`
|
|
|
|
کاتالوگ پارامترهای قابل اندازهگیری توسط سنسورها.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `code` | CharField (unique) | کد یکتا (مثال: `soil_moisture`) |
|
|
| `name_fa` | CharField | نام فارسی پارامتر |
|
|
| `unit` | CharField | واحد اندازهگیری |
|
|
| `created_at` | DateTimeField | زمان ایجاد |
|
|
|
|
---
|
|
|
|
### جدول `ParameterUpdateLog`
|
|
|
|
لاگ تغییرات (افزودن یا ویرایش) پارامترهای سنسور.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `parameter` | FK → SensorParameter | پارامتر مرتبط |
|
|
| `action` | CharField | نوع عملیات: `added` یا `modified` |
|
|
| `updated_at` | DateTimeField | زمان ثبت لاگ |
|
|
|
|
---
|
|
|
|
## اپ: `weather`
|
|
|
|
### جدول `WeatherParameter`
|
|
|
|
کاتالوگ پارامترهای هواشناسی تعریفشده در سیستم.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `code` | CharField (unique) | کد یکتا (مثال: `temperature_max`) |
|
|
| `name_fa` | CharField | نام فارسی پارامتر |
|
|
| `unit` | CharField | واحد اندازهگیری |
|
|
| `created_at` | DateTimeField | زمان ایجاد |
|
|
|
|
---
|
|
|
|
### جدول `WeatherForecast`
|
|
|
|
پیشبینی روزانه آبوهوا (تا ۷ روز آینده) برای هر موقعیت مکانی.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `location` | FK → SoilLocation | موقعیت مکانی مرتبط |
|
|
| `forecast_date` | DateField | تاریخ پیشبینی |
|
|
| `temperature_min` | FloatField | حداقل دمای هوا (°C) |
|
|
| `temperature_max` | FloatField | حداکثر دمای هوا (°C) |
|
|
| `temperature_mean` | FloatField | میانگین دمای هوا (°C) |
|
|
| `precipitation` | FloatField | مجموع بارش (mm) |
|
|
| `precipitation_probability` | FloatField | احتمال بارش (%) |
|
|
| `humidity_mean` | FloatField | میانگین رطوبت نسبی (%) |
|
|
| `wind_speed_max` | FloatField | حداکثر سرعت باد (km/h) |
|
|
| `et0` | FloatField | تبخیر-تعرق مرجع ET₀ (mm/day) |
|
|
| `weather_code` | IntegerField | کد وضعیت آبوهوا (WMO) |
|
|
| `fetched_at` | DateTimeField | آخرین زمان واکشی از API |
|
|
| `created_at` | DateTimeField | زمان ایجاد |
|
|
|
|
**محدودیتها:**
|
|
- ترکیب `(location, forecast_date)` باید یکتا باشد.
|
|
|
|
**Property:**
|
|
- `will_rain` → `True` اگر `precipitation > 0`
|
|
|
|
---
|
|
|
|
## اپ: `plant`
|
|
|
|
### جدول `Plant`
|
|
|
|
اطلاعات گیاهان شامل شرایط کاشت، نگهداری و برداشت.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `name` | CharField (unique) | نام گیاه |
|
|
| `light` | CharField | نور مورد نیاز |
|
|
| `watering` | CharField | نیاز آبیاری |
|
|
| `soil` | CharField | نوع خاک مناسب |
|
|
| `temperature` | CharField | دمای مناسب رشد |
|
|
| `planting_season` | CharField | فصل کاشت |
|
|
| `harvest_time` | CharField | زمان برداشت |
|
|
| `spacing` | CharField | فاصله کاشت |
|
|
| `fertilizer` | CharField | کود مناسب |
|
|
| `created_at` | DateTimeField | زمان ایجاد |
|
|
| `updated_at` | DateTimeField | آخرین زمان بهروزرسانی |
|
|
|
|
**روابط:**
|
|
- ← `SensorData.plants` (M2M از طریق جدول واسط)
|
|
|
|
---
|
|
|
|
## اپ: `irrigation`
|
|
|
|
### جدول `IrrigationMethod`
|
|
|
|
مشخصات فنی روشهای مختلف آبیاری.
|
|
|
|
| ستون | نوع | توضیح |
|
|
|---|---|---|
|
|
| `id` | PK (auto) | شناسه اتوماتیک |
|
|
| `name` | CharField (unique) | نام روش آبیاری |
|
|
| `category` | CharField | دستهبندی (موضعی / تحت فشار / سطحی) |
|
|
| `description` | TextField | توضیحات کامل |
|
|
| `water_efficiency_percent` | FloatField | راندمان مصرف آب (%) |
|
|
| `water_pressure_required` | CharField | فشار مورد نیاز |
|
|
| `flow_rate` | CharField | دبی / میزان جریان آب |
|
|
| `coverage_area` | CharField | مساحت قابل پوشش |
|
|
| `soil_type` | CharField | نوع خاک مناسب |
|
|
| `climate_suitability` | CharField | اقلیم مناسب |
|
|
| `created_at` | DateTimeField | زمان ایجاد |
|
|
| `updated_at` | DateTimeField | آخرین زمان بهروزرسانی |
|
|
|
|
---
|
|
|
|
## نمودار روابط (خلاصه)
|
|
|
|
```
|
|
SoilLocation
|
|
├── SoilDepthData (1:N — depth_label: 0-5cm, 5-15cm, 15-30cm)
|
|
├── SensorData (1:N — uuid_sensor PK)
|
|
│ └── Plant (M:N — جدول واسط)
|
|
└── WeatherForecast (1:N — یکتا per location+date)
|
|
|
|
SensorParameter
|
|
└── ParameterUpdateLog (1:N — action: added/modified)
|
|
|
|
Plant (مستقل — از طریق M2M به SensorData متصل)
|
|
IrrigationMethod (مستقل — بدون FK)
|
|
WeatherParameter (مستقل — کاتالوگ)
|
|
```
|