import streamlit as st import os # OpenAI Configuration def get_openai_api_key(): """Get OpenAI API key from user input in session state""" api_key = st.session_state.get('openai_api_key', '') if not api_key: return None return api_key # Application Configuration MAX_IMAGE_SIZE = 10 * 1024 * 1024 # 10MB SUPPORTED_FORMATS = ['jpg', 'jpeg', 'png', 'webp'] AI_MODEL = "gpt-5" # Analysis Settings ANALYSIS_TIMEOUT = 60 # seconds MAX_RETRY_ATTEMPTS = 3 # UI Configuration PRIMARY_COLOR = "#FF6B6B" BACKGROUND_COLOR = "#FFFFFF" SECONDARY_BACKGROUND_COLOR = "#F0F2F6" TEXT_COLOR = "#262730" # Prompt Templates ANALYSIS_PROMPT_TEMPLATE = """ Jesteś ekspertem w analizie ekspozycji produktów w sklepach detalicznych. Przeanalizuj to zdjęcie półki pod kątem obecności produktu: "{product_name}". Zwróć wyniki w formacie JSON z następującymi polami: {{ "product_found": true/false, "facing_count": liczba_widocznych_sztuk, "shelf_position": "top"/"middle"/"bottom", "price_visible": true/false, "product_condition": "good"/"dusty"/"damaged", "overall_score": ocena_1_10, "confidence": pewność_0_1, "description": "szczegółowy_opis_sytuacji", "competitors_nearby": ["lista_konkurencyjnych_produktów"], "shelf_share": procent_zajętości_półki }} Poziom analizy: {analysis_depth} """ RECOMMENDATIONS_RULES = { "position": { "eye_level": "Przenieś produkty na poziom oczu (zwiększa sprzedaż o 30%)", "visibility": "Popraw widoczność produktów" }, "quantity": { "increase_facings": "Dodaj dodatkowe facings", "restock": "Uzupełnij brakujące produkty" }, "condition": { "cleaning": "Wyczyść produkty i opakowania", "replace_damaged": "Wymień uszkodzone produkty" }, "pricing": { "add_price": "Dodaj widoczną cenę", "update_price": "Zaktualizuj cenę" } }