38381-vm/core/views.py
Flatlogic Bot 587ca82ae6 T0
2026-02-12 13:11:59 +00:00

59 lines
2.3 KiB
Python

import os
import platform
import json
from django.http import JsonResponse
from django.shortcuts import render
from django.utils import timezone
from django.db.models import Q
from .models import InventoryItem
def home(request):
"""Render the landing screen with the conversational AI shell."""
featured_items = InventoryItem.objects.all()[:3]
context = {
"project_name": "AI Inventory Assistant",
"featured_items": featured_items,
}
return render(request, "core/index.html", context)
def chat_api(request):
"""Simple keyword-based search to simulate AI conversational agent."""
if request.method == "POST":
try:
data = json.loads(request.body)
query = data.get("message", "").lower()
if not query:
return JsonResponse({"reply": "I'm listening! What are you looking for?"})
# Simulate "AI" logic by filtering models
# In a real scenario, this would call an LLM with the context of the inventory
results = InventoryItem.objects.filter(
Q(name__icontains=query) |
Q(description__icontains=query) |
Q(features__icontains=query) |
Q(store_name__icontains=query) |
Q(store_location__icontains=query)
).distinct()
if results.exists():
count = results.count()
reply = f"I found {count} options that match your request. Here are the best ones:"
items = []
for item in results[:5]:
items.append({
"name": item.name,
"cost": str(item.cost),
"store": item.store_name,
"location": item.store_location,
"installments": item.installments_options,
"lead_time": item.lead_time
})
return JsonResponse({"reply": reply, "items": items})
else:
return JsonResponse({"reply": "I couldn't find any items matching those exact details. Try asking about cost, location, or specific features!"})
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
return JsonResponse({"error": "Invalid request"}, status=405)