Konfiguracja - emielregis2/SmartFlowAI GitHub Wiki
Konfiguracja - SmartFlowAI
Skonfiguruj SmartFlowAI krok po kroku - od kluczy API po bazę danych! ⚙️
🔑 Przegląd kluczy API
SmartFlowAI wymaga następujących kluczy:
Serwis | Klucz | Koszt | Wymagany |
---|---|---|---|
Supabase | URL + anon_key + service_role_key | Darmowy (500MB) | ✅ Tak |
OpenAI | API key | ~$0.01-0.03/analiza | ✅ Tak |
🗄️ Konfiguracja Supabase
Krok 1: Utworzenie projektu
- Przejdź na supabase.com
- Kliknij "Start your project"
- Zaloguj się przez GitHub
- Kliknij "New project"
- Wybierz organizację i nazwij projekt (np. "smartflowai")
- Ustaw hasło bazy danych (zapisz je!)
- Wybierz region (Europe West dla Polski)
- Kliknij "Create new project"
Krok 2: Pobranie kluczy API
- W dashboardzie przejdź do Settings → API
- Skopiuj następujące wartości:
- URL:
https://twoj-projekt.supabase.co
- anon public:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
- service_role:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
- URL:
Krok 3: Konfiguracja bazy danych
- Przejdź do SQL Editor
- Kliknij "New query"
- Skopiuj i wklej zawartość pliku
supabase_setup.sql
:
-- Włącz rozszerzenia
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- Tabela użytkowników
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
full_name VARCHAR(255),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Tabela procesów biznesowych
CREATE TABLE business_processes (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
title VARCHAR(500) NOT NULL,
description TEXT NOT NULL,
ai_analysis TEXT,
analysis_depth VARCHAR(50),
company_size VARCHAR(50),
industry VARCHAR(100),
budget_range VARCHAR(50),
automation_potential INTEGER,
time_savings_hours DECIMAL(10,2),
cost_savings_annual DECIMAL(12,2),
implementation_difficulty VARCHAR(50),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Indeksy dla wydajności
CREATE INDEX idx_business_processes_user_id ON business_processes(user_id);
CREATE INDEX idx_business_processes_created_at ON business_processes(created_at);
-- Konta testowe (hasło: test123456)
INSERT INTO users (email, password_hash, full_name) VALUES
('[email protected]', '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewdBPj3QJflLxQjO', 'Test User'),
('[email protected]', '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewdBPj3QJflLxQjO', 'Admin User'),
('[email protected]', '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewdBPj3QJflLxQjO', 'Demo User');
- Kliknij "Run" żeby wykonać skrypt
- Sprawdź czy tabele zostały utworzone w sekcji Table Editor
Krok 4: Wyłączenie RLS (dla developmentu)
Jeśli masz problemy z dostępem do danych, uruchom:
-- Wyłącz Row Level Security dla developmentu
ALTER TABLE users DISABLE ROW LEVEL SECURITY;
ALTER TABLE business_processes DISABLE ROW LEVEL SECURITY;
⚠️ UWAGA: W produkcji włącz RLS dla bezpieczeństwa!
🤖 Konfiguracja OpenAI
Krok 1: Utworzenie konta
- Przejdź na platform.openai.com
- Kliknij "Sign up" lub "Log in"
- Zweryfikuj email i numer telefonu
- Dodaj metodę płatności (wymagane dla API)
Krok 2: Utworzenie klucza API
- Przejdź do API Keys
- Kliknij "Create new secret key"
- Nazwij klucz (np. "SmartFlowAI")
- Skopiuj klucz (zaczyna się od
sk-
) - WAŻNE: Zapisz klucz bezpiecznie - nie będzie więcej widoczny!
Krok 3: Ustawienie limitów (zalecane)
- Przejdź do Usage limits
- Ustaw Hard limit (np. $10/miesiąc)
- Ustaw Soft limit (np. $5/miesiąc)
- Włącz powiadomienia email
Koszty OpenAI GPT-4o
- Input: $2.50 / 1M tokenów
- Output: $10.00 / 1M tokenów
- Typowa analiza: 1000-3000 tokenów = $0.01-0.03
📁 Konfiguracja plików
Opcja 1: .streamlit/secrets.toml (zalecane)
Utwórz plik .streamlit/secrets.toml
:
# Supabase Configuration
SUPABASE_URL = "https://gqplfsbefkxqvqglydgd.supabase.co"
SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImdxcGxmc2JlZmt4cXZxZ2x5ZGdkIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzQxOTQ4NzEsImV4cCI6MjA0OTc3MDg3MX0.example"
SUPABASE_SERVICE_ROLE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImdxcGxmc2JlZmt4cXZxZ2x5ZGdkIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTczNDE5NDg3MSwiZXhwIjoyMDQ5NzcwODcxfQ.example"
# OpenAI Configuration
OPENAI_API_KEY = "sk-proj-example-key-here"
# Application Settings
DEMO_MODE = false
Opcja 2: Zmienne środowiskowe
# Linux/macOS - dodaj do ~/.bashrc lub ~/.zshrc
export SUPABASE_URL="https://twoj-projekt.supabase.co"
export SUPABASE_ANON_KEY="twoj_anon_key"
export SUPABASE_SERVICE_ROLE_KEY="twoj_service_role_key"
export OPENAI_API_KEY="sk-twoj_klucz"
# Windows - PowerShell
$env:SUPABASE_URL="https://twoj-projekt.supabase.co"
$env:SUPABASE_ANON_KEY="twoj_anon_key"
$env:SUPABASE_SERVICE_ROLE_KEY="twoj_service_role_key"
$env:OPENAI_API_KEY="sk-twoj_klucz"
Opcja 3: .env (nie zalecane - może być w .gitignore)
SUPABASE_URL=https://twoj-projekt.supabase.co
SUPABASE_ANON_KEY=twoj_anon_key
SUPABASE_SERVICE_ROLE_KEY=twoj_service_role_key
OPENAI_API_KEY=sk-twoj_klucz
DEMO_MODE=false
🔧 Konfiguracja Streamlit
.streamlit/config.toml
[server]
port = 8501
address = "localhost"
enableCORS = false
enableXsrfProtection = false
[browser]
gatherUsageStats = false
[theme]
primaryColor = "#FF6B6B"
backgroundColor = "#FFFFFF"
secondaryBackgroundColor = "#F0F2F6"
textColor = "#262730"
🧪 Testowanie konfiguracji
Test 1: Połączenie z Supabase
# test_supabase.py
from supabase import create_client
import os
url = "https://twoj-projekt.supabase.co"
key = "twoj_anon_key"
try:
supabase = create_client(url, key)
result = supabase.table('users').select('*').limit(1).execute()
print("✅ Supabase działa!")
print(f"Znaleziono {len(result.data)} użytkowników")
except Exception as e:
print(f"❌ Błąd Supabase: {e}")
Test 2: Połączenie z OpenAI
# test_openai.py
import openai
import os
openai.api_key = "sk-twoj_klucz"
try:
response = openai.ChatCompletion.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Test"}],
max_tokens=10
)
print("✅ OpenAI działa!")
print(f"Odpowiedź: {response.choices[0].message.content}")
except Exception as e:
print(f"❌ Błąd OpenAI: {e}")
Test 3: Uruchomienie aplikacji
# Uruchom aplikację
streamlit run streamlit_app.py
# Sprawdź w przeglądarce: http://localhost:8501
# Powinieneś zobaczyć formularz logowania
🔒 Bezpieczeństwo konfiguracji
✅ Dobre praktyki
- Nigdy nie commituj kluczy API do Git
- Używaj .streamlit/secrets.toml dla lokalnego developmentu
- Używaj zmiennych środowiskowych w produkcji
- Ustaw limity w OpenAI
- Włącz RLS w Supabase w produkcji
❌ Czego unikać
- Kluczy API w kodzie źródłowym
- Udostępniania kluczy w komunikatorach
- Używania kluczy produkcyjnych do testów
- Pozostawiania RLS wyłączonego w produkcji
🔐 Rotacja kluczy
Supabase:
- Settings → API → Reset API keys
- Zaktualizuj klucze w aplikacji
OpenAI:
- API Keys → Revoke key
- Create new secret key
- Zaktualizuj w konfiguracji
🌍 Konfiguracja dla różnych środowisk
Development (lokalne)
# .streamlit/secrets.toml
SUPABASE_URL = "https://dev-projekt.supabase.co"
OPENAI_API_KEY = "sk-dev-key"
DEMO_MODE = true
Staging
# Zmienne środowiskowe
export SUPABASE_URL="https://staging-projekt.supabase.co"
export OPENAI_API_KEY="sk-staging-key"
export DEMO_MODE="false"
Production
# Zmienne środowiskowe (bezpieczne)
export SUPABASE_URL="https://prod-projekt.supabase.co"
export OPENAI_API_KEY="sk-prod-key"
export DEMO_MODE="false"
🚨 Rozwiązywanie problemów konfiguracji
Problem: "Invalid API key"
- Sprawdź klucze - Czy są poprawnie skopiowane?
- Sprawdź spacje - Usuń spacje na początku/końcu
- Sprawdź projekt - Czy Supabase projekt jest aktywny?
- Sprawdź RLS - Może być potrzebne wyłączenie dla testów
Problem: "Table does not exist"
- Uruchom skrypt
supabase_setup.sql
- Sprawdź tabele w Table Editor
- Sprawdź połączenie z właściwym projektem
Problem: "OpenAI rate limit"
- Sprawdź limity w OpenAI dashboard
- Dodaj metodę płatności
- Zwiększ limity jeśli potrzebne
Problem: "Streamlit nie widzi secrets"
- Sprawdź ścieżkę - Plik musi być w
.streamlit/secrets.toml
- Sprawdź format - Musi być poprawny TOML
- Restart aplikacji -
Ctrl+C
i uruchom ponownie
✅ Checklist konfiguracji
- Supabase projekt utworzony
- Klucze Supabase skopiowane
- Baza danych skonfigurowana (supabase_setup.sql)
- Konta testowe działają
- OpenAI konto utworzone
- OpenAI API key wygenerowany
- Limity OpenAI ustawione
- Plik secrets.toml utworzony
- Aplikacja uruchamia się bez błędów
- Logowanie działa z kontami testowymi
- Analiza AI działa (test z przykładowym procesem)
Konfiguracja gotowa! Przejdź do Quick Start żeby przetestować aplikację lub sprawdź FAQ jeśli masz pytania.