Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion app.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,20 @@ def create_app() -> Flask:
chatbot_bp, weather_bp):
app.register_blueprint(bp)

# ── Eagerly load DistilBERT at startup ────────────────────────────────
# THIS IS THE KEY FIX for the teammate problem.
#
# Without this, the model loads lazily on the first request. On a machine
# that hasn't downloaded the model yet (~67 MB), the download happens during
# that first request — and every request that arrives before the download
# completes silently falls back to rule-based sentiment instead of DistilBERT.
#
# With this call, the model is fully downloaded, loaded, and warmed up
# BEFORE Flask starts serving requests. Every machine gets DistilBERT
# from request #1, regardless of whether the model was pre-cached.
from modules.chatbot.sentiment import warmup_sentiment_model
warmup_sentiment_model()

# ── Static file routes ─────────────────────────────────────────────────
@app.route("/uploads/<path:filename>")
def serve_upload(filename):
Expand Down Expand Up @@ -76,9 +90,23 @@ def dashboard():
return render_template("dashboard.html")

# ── Health check ───────────────────────────────────────────────────────
# Now includes sentiment model status so you can verify DistilBERT loaded
# correctly on any machine by hitting GET /api/health
@app.route("/api/health")
def health():
return jsonify({"status": "ok", "service": "Solar PV Defect Detection"}), 200
from modules.chatbot.sentiment import _model_loaded, _model_failed
if _model_loaded:
sentiment_status = "distilbert_ready"
elif _model_failed:
sentiment_status = "rule_based_fallback"
else:
sentiment_status = "not_loaded"

return jsonify({
"status": "ok",
"service": "Solar PV Defect Detection",
"sentiment_model": sentiment_status,
}), 200

# ── Error handlers ─────────────────────────────────────────────────────
@app.errorhandler(404)
Expand Down
Binary file added backticks.txt
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added chroma_db/chroma.sqlite3
Binary file not shown.
11 changes: 6 additions & 5 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@
os.makedirs(_d, exist_ok=True)

# ── Model paths ────────────────────────────────────────────────────────────
YOLO_MODEL_PATH = os.path.join(BASE_DIR, "model", "best.pt")
INTEGRITY_MODEL_PATH = os.path.join(BASE_DIR, "model", "integrity_model.pth")
CARBON_MODEL_PATH = os.path.join(BASE_DIR, "model", "carbon_model.pkl")
LABEL_ENCODER_PATH = os.path.join(BASE_DIR, "model", "label_encoder.pkl")
YOLO_MODEL_PATH = os.path.join(BASE_DIR, "model", "best.pt")
THERMAL_YOLO_MODEL_PATH = os.path.join(BASE_DIR, "model", "bestthermal.pt")
INTEGRITY_MODEL_PATH = os.path.join(BASE_DIR, "model", "integrity_model.pth")
CARBON_MODEL_PATH = os.path.join(BASE_DIR, "model", "carbon_model.pkl")
LABEL_ENCODER_PATH = os.path.join(BASE_DIR, "model", "label_encoder.pkl")

# ── CSV paths ──────────────────────────────────────────────────────────────
DETECTIONS_CSV = os.path.join(DATA_FOLDER, "detections.csv")
Expand Down Expand Up @@ -52,7 +53,7 @@
}

# ── Auth ───────────────────────────────────────────────────────────────────
PASSCODE = os.environ.get("PASSCODE", "SOLAR@2025")
PASSCODE = os.environ.get("PASSCODE", "Solar@2026")
SESSION_TIMEOUT = int(os.environ.get("SESSION_TIMEOUT", 3600))
MAX_ATTEMPTS = 5
LOCKOUT_DURATION = 300
Expand Down
71 changes: 71 additions & 0 deletions data/carbon.csv
Original file line number Diff line number Diff line change
@@ -1,3 +1,74 @@
timestamp,image_filename,city,panel_power_w,ambient_temp_c,irradiance_w_m2,emission_factor,num_defects,dominant_defect,total_degradation_pct,co2_kg_per_year
2026-02-19T23:52:17.786428,fb83acf6c6024c4099b8b801b329e830.jpg,Delhi,380.0,25.0,900.0,0.85,2,crack,1.42,9.55
2026-02-19T23:53:06.806821,dd203d7faf224a60812a6c2748291bb0.jpg,Delhi,380.0,25.0,900.0,0.85,2,crack,0.8,6.07
2026-02-20T12:28:08.737413,f1a95e02b29c4569acda3723704b1c06.jpg,Chennai,380.0,31.0,900.0,0.82,6,finger,0.45,7.48
2026-02-20T13:03:45.951848,fc0c05d5129b43449bcd5b63216d6b17.jpg,Chennai,380.0,32.0,900.0,0.82,1,finger,0.14,0.89
2026-02-20T13:29:28.542298,cb44158798cb4378ae7ddcaad1218250.jpg,Chennai,380.0,32.0,900.0,0.82,1,crack,0.87,4.55
2026-02-20T14:39:18.708734,f4a6c5d070cd4d11a0bd5b9019d0e005.jpg,Chennai,380.0,30.0,900.0,0.82,1,finger,0.14,0.9
2026-02-20T14:48:38.377801,ecbb22bbb95e4e8bacb99046315a110d.jpg,Chennai,380.0,32.0,900.0,0.82,1,black_core,37.43,204.64
2026-02-20T15:07:02.130804,20d6525fdf7a4d1085cb1397de6fc188.jpg,Chennai,380.0,30.0,900.0,0.82,1,black_core,38.28,204.73
2026-02-20T16:52:45.206256,fa9a250a5d364e308d92301afa276be8.jpg,Chennai,380.0,32.0,900.0,0.82,2,finger,0.34,3.38
2026-02-20T18:46:18.197115,3db7070a788c4c9e9728de40a2ec2c3e.jpg,Chennai,380.0,27.0,900.0,0.82,1,black_core,32.33,170.6
2026-02-20T16:10:48.169351,d776dc1e2458451c923ddbcbd71d717c.jpg,Chennai,380.0,30.0,900.0,0.82,1,crack,12.76,69.12
2026-02-20T16:11:03.203225,d776dc1e2458451c923ddbcbd71d717c.jpg,Chennai,380.0,30.0,900.0,0.82,1,crack,12.76,69.12
2026-02-20T16:11:17.588066,d776dc1e2458451c923ddbcbd71d717c.jpg,Chennai,380.0,30.0,900.0,0.82,1,crack,12.76,69.12
2026-02-20T16:26:29.566060,489ae0552c3e458698b4a3a6b213b166.jpg,Chennai,380.0,29.0,900.0,0.82,1,crack,12.76,69.1
2026-02-20T16:29:36.831282,bbdfd5c6f2b541a8ae665b7a4da10056.jpg,Mumbai,380.0,31.0,900.0,0.78,1,black_core,37.64,196.01
2026-02-20T16:31:28.365827,unknown,Mumbai,380.0,31.0,900.0,0.78,0,black_core,0.0,0.86
2026-02-20T16:32:42.405905,d7d073f015504945b743bf22218d1a43.jpg,Mumbai,380.0,31.0,900.0,0.78,2,finger,0.34,2.87
2026-02-20T16:35:39.052999,b66d8ff882b543a88efab271f23daeaf.jpg,"Thalavapalayam, Karur",380.0,34.0,900.0,0.8,3,finger,7.9,43.31
2026-02-20T16:38:32.426088,e3629abe48fc4bfeb449c7fee882a1ff.jpg,"Thalavapalayam, Karur",380.0,34.0,900.0,0.8,1,black_core,39.27,200.86
2026-02-20T16:48:47.831969,e8c0b12fdf2b4a16bd028f8036d8ae8c.jpg,"Thalavapalayam, Karur",380.0,33.0,900.0,0.8,1,black_core,39.27,200.83
2026-02-20T16:49:49.442941,afa768841e8b450c8e75d2348d48eafb.jpg,"Thalavapalayam, Karur",380.0,33.0,900.0,0.8,1,crack,12.76,68.12
2026-02-20T17:08:45.494390,e64fc47c9c114afca19783b48eaf9fd9.jpg,"Thalavapalayam, Karur",380.0,33.0,900.0,0.8,2,finger,0.34,3.33
2026-02-20T17:10:31.662859,6a1a647c3d904c03ab0df1ce926f01b2.jpg,"Thalavapalayam, Karur",380.0,33.0,900.0,0.8,3,crack,7.9,43.31
2026-02-20T17:20:43.402220,7f8ce02c0c3c458f9d4ffa3887041a36.jpg,"Thalavapalayam, Karur",380.0,33.0,900.0,0.8,1,black_core,37.64,200.83
2026-02-20T17:22:29.708047,f0dfcecb0b4d4cd3b897c79b50c19622.jpg,"Thalavapalayam, Karur",380.0,33.0,900.0,0.8,1,crack,0.9,5.35
2026-02-20T18:04:57.334796,a671857c6760492dbd0674ef1746140e.jpg,"Thalavapalayam, Karur",380.0,32.0,900.0,0.8,1,black_core,39.82,200.77
2026-02-20T18:06:35.371468,a81aaf65edbb4cea929811b42b7d34e0.jpg,"Thalavapalayam, Karur",380.0,32.0,900.0,0.8,5,finger,0.7,6.6
2026-02-20T18:10:04.070486,unknown,"Thalavapalayam, Karur",380.0,32.0,900.0,0.8,0,black_core,0.0,0.99
2026-02-20T18:12:28.066943,unknown,"Thalavapalayam, Karur",380.0,32.0,900.0,0.8,0,black_core,0.0,0.99
2026-02-20T18:13:04.915114,unknown,"Thalavapalayam, Karur",380.0,32.0,900.0,0.8,0,black_core,0.0,0.99
2026-02-20T18:50:05.829353,unknown,"Thalavapalayam, Karur",380.0,31.0,900.0,0.8,0,black_core,0.0,1.0
2026-02-20T18:56:50.865377,59cbb8a88822463dbbba1d8fd2b025db.jpg,"Thalavapalayam, Karur",380.0,31.0,900.0,0.8,5,finger,0.7,6.6
2026-02-20T19:18:38.842609,cea2b4f521264f61a3547a726e0e3bea.jpg,"Thalavapalayam, Karur",380.0,30.0,900.0,0.8,1,finger,0.19,1.62
2026-02-20T19:22:50.583742,5952fedc7f65417c95407d6b6e4ffff2.jpg,"Thalavapalayam, Karur",380.0,30.0,900.0,0.8,1,black_core,40.0,200.87
2026-02-20T20:43:10.641819,b6e3ba3cb62e497a8fc0a7968480ae26.jpg,"Thalavapalayam, Karur",380.0,28.0,900.0,0.8,2,finger,0.34,3.34
2026-02-20T20:55:07.039752,a0df065710e24bb2b4323bbefbe59f44.jpg,"Thalavapalayam, Karur",380.0,28.0,900.0,0.8,3,finger,3.69,20.76
2026-02-20T21:15:25.557610,32814407b22d4be9bd3576b593bfd054.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,1,crack,0.71,3.84
2026-02-20T21:17:19.103017,08c69eff45214e72b09ec77f630d1171.jpg,Fort Worth,380.0,6.0,900.0,0.8,3,crack,7.9,43.36
2026-02-20T21:20:59.307689,e10852b13c574c94a6a27e612f223dd1.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,3,crack,7.9,43.31
2026-02-20T21:22:23.688302,adee2ce989a146d3a427f31d3cdd9e7e.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,3,crack,7.9,43.31
2026-02-20T22:03:41.083880,f59c69d55bf3467f98b45197fcec07b4.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,3,finger,7.9,43.31
2026-02-20T23:13:31.481230,832a638e6bbc4ed98d75cc9d60fbf48b.jpg,"Thalavapalayam, Karur",380.0,26.0,900.0,0.8,1,black_core,37.64,200.48
2026-02-20T23:14:55.071865,50bc6dd265274e9d9ed0f594a0b85f20.jpg,"Thalavapalayam, Karur",380.0,26.0,900.0,0.8,3,black_core,7.9,43.3
2026-02-20T23:21:27.746803,ece21e99bb694264adfb4194867d201f.jpg,"Thalavapalayam, Karur",380.0,25.0,900.0,0.8,1,black_core,37.64,200.48
2026-02-20T23:25:08.309735,26dae42761c949df8307393e1ebf1b7e.jpg,"Thalavapalayam, Karur",380.0,25.0,900.0,0.8,1,black_core,37.64,200.48
2026-02-20T23:27:59.501476,9e7e01f0a07b4d338969f2eda0efa874.jpg,"Thalavapalayam, Karur",380.0,25.0,900.0,0.8,1,black_core,37.64,200.48
2026-02-20T23:30:27.958387,c3b7ae8ff7dc4ffab9f19292b0c97661.jpg,"Thalavapalayam, Karur",380.0,25.0,900.0,0.8,1,black_core,37.64,200.48
2026-02-20T23:40:55.690781,4aca04cbda9441e2a91812954b992f83.jpg,"Thalavapalayam, Karur",380.0,25.0,900.0,0.8,2,finger,0.34,3.33
2026-02-21T08:22:00.543834,202afc91227e44bfb73b917280781c4c.jpg,"Thalavapalayam, Karur",380.0,25.0,900.0,0.8,1,black_core,37.64,200.48
2026-02-21T08:40:42.913738,8e8026f14bb2448fa966c3b555363815.jpg,"Thalavapalayam, Karur",380.0,26.0,900.0,0.8,1,black_core,38.28,200.48
2026-02-21T08:43:20.178768,dbbfffed512849f5abbd8db3853a83ab.jpg,"Thalavapalayam, Karur",380.0,26.0,900.0,0.8,1,black_core,37.64,200.48
2026-02-21T09:00:06.901018,3172bbd7795848fbb7ff0bab0806ee8e.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,2,finger,2.42,13.85
2026-02-21T09:02:23.634324,fe305043ffe34d629c52b5bbef02453d.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,1,crack,1.16,6.69
2026-02-21T09:03:19.008549,40d550410790458ea5f2dfb1a0beffc1.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,1,black_core,35.98,185.1
2026-02-21T09:04:48.228536,65b20bd844da4dd7be81e64e5a62d397.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,1,black_core,39.27,200.72
2026-02-21T09:12:12.633639,6f3e03f3a18c490692172e34e6bc9b82.jpg,Chennai,380.0,32.0,900.0,0.82,1,black_core,39.27,204.64
2026-02-21T09:16:08.057523,fe53d4a66d3a4418b768acc7a1ea3eaa.jpg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,1,black_core,39.27,200.72
2026-02-21T09:17:54.697915,f8ba7eaa9e394dc1aedeff77fd4f7444.jpg,"Thalavapalayam, Karur",380.0,32.0,900.0,0.8,1,black_core,39.27,200.77
2026-02-21T09:19:13.227453,ac645665379b4b4d8fcb560cbb0ced2d.jpg,Chennai,380.0,32.0,900.0,0.82,1,black_core,39.27,204.64
2026-02-21T09:21:48.315160,a444e738d98f4fbb94bada5110fd4575.jpg,"Thalavapalayam, Karur",380.0,28.0,900.0,0.8,1,black_core,38.28,200.78
2026-02-21T09:38:08.276310,5bd1493a63a14d17bb6b7435cab529a2.jpg,"Thalavapalayam, Karur",380.0,28.0,900.0,0.8,1,black_core,38.28,200.78
2026-02-21T09:46:17.153398,072eb752bd1c446c9720f0fa796687c3.jpg,"Thalavapalayam, Karur",380.0,29.0,900.0,0.8,1,crack,0.87,4.6
2026-02-21T09:53:20.995076,188b1882313c40a891d13f76c46ab8c2.jpg,"Thalavapalayam, Karur",380.0,32.0,900.0,0.8,3,black_core,7.9,43.31
2026-02-21T10:03:13.366105,a9707141cf164f9792109d36118b668d.jpg,"Thalavapalayam, Karur",380.0,29.0,900.0,0.8,3,crack,7.9,43.31
2026-02-21T10:12:11.623677,5eabc5295e124fa797fc1156f29b9cc4.jpg,"Thalavapalayam, Karur",380.0,29.0,900.0,0.8,1,black_core,38.28,200.85
2026-02-21T10:19:07.355053,2ef1b37221da44db9e7aed6d8c1f4207.jpg,"Thalavapalayam, Karur",380.0,30.0,900.0,0.8,1,black_core,37.64,200.87
2026-02-21T10:26:26.212152,c579f85c6f4349e08b0e675c75394df7.jpg,"Thalavapalayam, Karur",380.0,30.0,900.0,0.8,1,black_core,32.33,167.1
2026-02-21T10:30:48.462866,50145cfd87714a1c9f42dbf2a8e80b1b.jpg,"Thalavapalayam, Karur",380.0,30.0,900.0,0.8,2,finger,0.32,3.36
2026-02-21T11:17:26.671286,cb8b1801ed8f421e9865567aa8e74744.jpg,"Thalavapalayam, Karur",380.0,31.0,900.0,0.8,5,finger,0.7,6.6
2026-03-24T23:50:31.456014,a6672fc74dd44e82810a9858b48c48bc.jpeg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,2,finger,0.34,3.33
2026-03-25T08:44:40.487544,6a10757313614b40ba0dc05eb5dbe90b.jpeg,"Thalavapalayam, Karur",380.0,27.0,900.0,0.8,2,finger,0.34,3.33
2026-03-25T09:04:48.571746,f3e67d5c201d4101a27cd57dfb3ddd83.jpeg,"Thalavapalayam, Karur",380.0,28.0,900.0,0.8,2,finger,0.34,3.34
2026-03-25T09:13:01.670089,eeeb3dbfa97b456e8457be7c989af54c.jpeg,Chennai,380.0,28.0,900.0,0.82,2,finger,0.34,3.4
Loading