File size: 3,830 Bytes
a0655cc 4ed803d a0655cc 3ad9016 a0655cc 4ed803d a0655cc 80702d9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
from flask import Flask, render_template, request, jsonify
import os
import json
import datetime
import google.generativeai as genai
from dotenv import load_dotenv
import os
load_dotenv()
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/analyze', methods=['POST'])
def analyze():
try:
# Gather crop data into a list of dictionaries
crops_data = []
crop_count = int(request.form.get('crop_count', 0))
for i in range(1, crop_count + 1):
crop_name = request.form.get(f'crop_name_{i}')
if crop_name:
crop = {
'name': crop_name,
'quantity': request.form.get(f'crop_quantity_{i}'),
'unit': request.form.get(f'crop_unit_{i}'),
'harvest_date': request.form.get(f'harvest_date_{i}')
}
crops_data.append(crop)
warehouse_size = request.form.get('warehouse_size')
warehouse_unit = request.form.get('warehouse_unit')
language = request.form.get('language', 'English')
# Calculate today's date for the day-wise planner (next 7 days)
current_date = datetime.datetime.now()
future_dates = [current_date + datetime.timedelta(days=x) for x in range(7)]
date_strings = [date.strftime("%d %b %Y") for date in future_dates]
# Enhanced prompt with a complete day-wise planner and detailed spoilage symptoms & important points
prompt = f"""
Analyze these crops for post-harvest storage in {language}:
json
{json.dumps(crops_data, indent=2)}
Warehouse size: {warehouse_size} {warehouse_unit}
Create a practical, visual storage plan that includes:
1. *STORAGE SUMMARY:* Start with 3-4 bullet points summarizing key actions.
2. *CROP CARDS:* For each crop, create a visually distinct "card" section with:
- Crop name as heading
- Quantity and harvest date
- Optimal temperature and humidity (exact numbers)
- Expected shelf life in days and calculated expiry date
- 3-4 specific spoilage symptoms and important points detailing how spoilage affects the crop
- Recommendations for crop placement (e.g., shelf area or storage zone)
- Necessary precautions and measures to prevent spoilage
- Estimated space requirements
3. *STORAGE PRIORITY:* List crops in order of storage priority based on perishability.
4. *VISUAL STORAGE LAYOUT:* Create a markdown table that shows crop placement in the warehouse with shelf/area names.
5. *MONITORING PLANNER:* Provide a complete day-wise planner for the next 7 days. Specify daily tasks and monitoring details for these dates: {', '.join(date_strings)}
*IMPORTANT FORMATTING REQUIREMENTS:*
- Use short, simple sentences (max 10-15 words each)
- Use markdown headers (##, ###) for clear section breaks
- Present each crop as a visually distinct "card" section
- Use emoji icons where appropriate (🌽 🌾 🥔 etc.)
- Bold important numbers and dates
- Provide only practical advice that farmers can immediately apply
Format your response as clean markdown optimized for card-based visual presentation.
"""
# Configure Gemini API
api_key = os.getenv("GEMINI_API")
genai.configure(api_key=api_key)
model = genai.GenerativeModel(model_name='gemini-1.5-flash')
response = model.generate_content(prompt)
return jsonify({'success': True, 'analysis': response.text})
except Exception as e:
return jsonify({'success': False, 'error': str(e)})
if __name__ == '__main__':
app.run(debug=True) |