Amamiya-Kun/PalmScan
0
1from pymongo import MongoClient2from dotenv import load_dotenv3import os4from bson.objectid import ObjectId5from bson.json_util import dumps # untuk convert ke JSON6 7load_dotenv()8# Koneksi ke MongoDB9MONGO_URI = os.getenv("MONGODB_URI", "@aimer.wngbxyv.mongodb.net")10mongo_user = os.getenv("MONGO_USER")11db_pass = os.getenv("MONGO_PASS")12db_name = os.getenv("MONGO_NAME", "leafClassify")13 14# Buat client secara dinamis berdasarkan variabel yang tersedia15if mongo_user and db_pass and MONGO_URI:16 # Memastikan format MONGO_URI diawali dengan '@' jika belum ada17 uri_part = MONGO_URI18 if not uri_part.startswith("@"):19 uri_part = "@" + uri_part20 client = MongoClient(f"mongodb+srv://{mongo_user}:{db_pass}{uri_part}?retryWrites=true&w=majority&appName=aimer")21elif MONGO_URI and MONGO_URI.startswith("mongodb"):22 client = MongoClient(MONGO_URI)23else:24 # Fallback to localhost if no environment variables are defined25 print("Warning: MongoDB environment variables not found. Connecting to localhost.")26 client = MongoClient("mongodb://localhost:27017/")27 28db = client[db_name]29 30users_collection = db['users']31scan_logs_collection = db['scan_logs']32scan_result_collection = db['scan_result']33diseases_collection = db['diseases']34logs_collection = db['logs']35 36users = {37 'name' : '',38 'email' : '',39 'ficture' : '',40 'create_at' : ''41}42 43scan_logs = {44 '__id__' : '',45 'user_id' : '',46 'image_url' : '',47 'scan_result_id' : '',48 'timestamp' : ''49}50 51disease = [52 {53 'name': 'Anthracnose',54 'description': (55 'Penyakit ini disebabkan oleh jamur *Colletotrichum gloeosporioides*. '56 'Gejalanya berupa bercak nekrotik berwarna coklat kehitaman pada daun muda dan pelepah, '57 'yang lama-lama dapat menyebabkan kerusakan jaringan.'58 ),59 'solution': (60 'Pemangkasan dan pemusnahan daun yang terinfeksi, '61 'meningkatkan sanitasi kebun, serta aplikasi fungisida berbahan aktif seperti mankozeb atau tembaga hidroksida.'62 )63 },64 {65 'name': 'Yellow Stripe',66 'description': (67 'Penyakit ini ditandai dengan munculnya garis-garis kuning sejajar tulang daun, '68 'terutama pada daun muda. Bisa disebabkan oleh kekurangan unsur hara atau infeksi patogen tertentu.'69 ),70 'solution': (71 'Lakukan analisis tanah dan daun untuk memastikan defisiensi unsur hara, lalu aplikasikan pupuk sesuai kebutuhan. '72 'Perbaiki drainase dan lakukan rotasi fungisida bila penyebabnya infeksi.'73 )74 },75 {76 'name': 'Leaf Rust',77 'description': (78 'Penyakit karat daun disebabkan oleh jamur *Puccinia*. Muncul sebagai bintik-bintik jingga atau coklat kemerahan '79 'seperti karat pada permukaan daun kelapa sawit, mengurangi efisiensi fotosintesis.'80 ),81 'solution': (82 'Aplikasi fungisida berbahan aktif tembaga atau fungisida sistemik golongan triazol, meningkatkan kebersihan kebun '83 'dengan membuang daun gulma, dan menjaga sirkulasi udara yang baik.'84 )85 },86 {87 'name': 'Healthy',88 'description': (89 'Daun kelapa sawit berada dalam kondisi sehat, tidak menunjukkan gejala penyakit, kekurangan hara, atau '90 'kerusakan patogen fisik. Fotosintesis berjalan dengan optimal.'91 ),92 'solution': (93 'Lakukan perawatan rutin berupa pemupukan seimbang, penyiraman teratur, serta pembersihan area kebun secara berkala '94 'untuk pencegahan hama dan penyakit.'95 )96 }97]98 99scan_result = [100 {101 "prediction_label": "Leaf Spot",102 "confidence": 0.92,103 "status": "diseased",104 "disease_id": ObjectId('68620c8c4500c7df28c4c70e')105 },106 {107 "prediction_label": "Anthracnose",108 "confidence": 0.89,109 "status": "diseased",110 "disease_id": ObjectId("68620c8c4500c7df28c4c70d")111 },112 {113 "prediction_label": "Healthy",114 "confidence": 0.97,115 "status": "healthy",116 "disease_id": ObjectId("6863394e06baaecd9abd4afe")117 },118 {119 "prediction_label": "Leaf Spot",120 "confidence": 0.85,121 "status": "diseased",122 "disease_id": ObjectId("68620c8c4500c7df28c4c70e")123 },124 {125 "prediction_label": "Yellow Stripe",126 "confidence": 0.88,127 "status": "diseased",128 "disease_id": ObjectId('68620c8c4500c7df28c4c70f')129 },130 {131 "prediction_label": "68620c8c4500c7df28c4c70f",132 "confidence": 0.94,133 "status": "healthy",134 "disease_id": ObjectId('68620c8c4500c7df28c4c70f')135 },136 {137 "prediction_label": "Yellow Stripe",138 "confidence": 0.90,139 "status": "diseased",140 "disease_id": ObjectId('68620c8c4500c7df28c4c70f')141 }142]143logs = {144 '__id__' : 1,145 'user_id' : '',146 'activity' : '',147 'timestamp' : ''148}149 150 151if __name__ == '__main__':152 print("Menginisialisasi ulang koleksi penyakit (diseases) di MongoDB...")153 try:154 # Bersihkan koleksi penyakit yang lama155 diseases_collection.delete_many({})156 # Masukkan penyakit baru157 result = diseases_collection.insert_many(disease)158 print(f"Berhasil memasukkan {len(result.inserted_ids)} data penyakit:")159 for doc in diseases_collection.find():160 print(f" - {doc['name']} (ID: {doc['_id']})")161 except Exception as e:162 print("Gagal menginisialisasi database:", e)