Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Replace ~20 remaining is_admin references across backend, templates and scripts with proper SystemRole checks. Column is_admin stays as deprecated (synced by set_role()) until DB migration removes it. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
105 lines
3.2 KiB
Python
105 lines
3.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script for AI enrichment proposal workflow.
|
|
Creates a test proposal for Waterm company.
|
|
"""
|
|
import sys
|
|
import os
|
|
|
|
# Setup path for production environment
|
|
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
sys.path.insert(0, project_root)
|
|
|
|
from dotenv import load_dotenv
|
|
# Load .env from project root
|
|
env_path = os.path.join(project_root, '.env')
|
|
load_dotenv(env_path)
|
|
|
|
import json
|
|
from datetime import datetime, timedelta
|
|
from database import SessionLocal, Company, AiEnrichmentProposal, User
|
|
import gemini_service
|
|
|
|
def main():
|
|
# Initialize Gemini - use flash-lite to avoid quota issues
|
|
gemini_service.init_gemini_service(model='flash-lite')
|
|
|
|
db = SessionLocal()
|
|
try:
|
|
company = db.query(Company).filter_by(id=12).first()
|
|
admin_user = db.query(User).filter_by(role='ADMIN').first()
|
|
|
|
if not company:
|
|
print('Firma nie znaleziona')
|
|
return 1
|
|
|
|
print(f'Test AI enrichment dla: {company.name}')
|
|
print(f'Website: {company.website}')
|
|
|
|
service = gemini_service.get_gemini_service()
|
|
if not service:
|
|
print('Brak usługi Gemini')
|
|
return 1
|
|
|
|
prompt = f'''Przeanalizuj firmę: {company.name}
|
|
Strona: {company.website}
|
|
Opis: {company.description_short or 'brak'}
|
|
|
|
Wygeneruj JSON z informacjami o firmie:
|
|
{{"business_summary": "opis działalności 1-2 zdania", "services_list": ["usługa1", "usługa2", "usługa3"], "industry_tags": ["tag1", "tag2"]}}
|
|
Odpowiedz TYLKO JSON bez markdown.'''
|
|
|
|
print('Wysyłam zapytanie do Gemini...')
|
|
response = service.generate_text(
|
|
prompt=prompt,
|
|
temperature=0.7,
|
|
feature='ai_enrichment_test',
|
|
user_id=admin_user.id if admin_user else 1,
|
|
company_id=company.id
|
|
)
|
|
print(f'Odpowiedź Gemini ({len(response)} znaków)')
|
|
|
|
# Parse response
|
|
clean = response.strip()
|
|
if clean.startswith('```'):
|
|
parts = clean.split('```')
|
|
if len(parts) > 1:
|
|
clean = parts[1]
|
|
if clean.startswith('json'):
|
|
clean = clean[4:]
|
|
clean = clean.strip()
|
|
|
|
try:
|
|
ai_data = json.loads(clean)
|
|
print(f'Parsed data: {json.dumps(ai_data, indent=2, ensure_ascii=False)[:500]}')
|
|
except json.JSONDecodeError as e:
|
|
print(f'Błąd parsowania JSON: {e}')
|
|
print(f'Raw response: {response[:300]}')
|
|
return 1
|
|
|
|
# Create proposal
|
|
proposal = AiEnrichmentProposal(
|
|
company_id=company.id,
|
|
status='pending',
|
|
proposal_type='ai_enrichment',
|
|
data_source=company.website,
|
|
proposed_data=ai_data,
|
|
ai_explanation='Test AI enrichment - propozycja wzbogacenia danych',
|
|
confidence_score=0.85,
|
|
expires_at=datetime.utcnow() + timedelta(days=30)
|
|
)
|
|
db.add(proposal)
|
|
db.commit()
|
|
|
|
print(f'\n✅ Utworzono propozycję ID: {proposal.id}')
|
|
print(f'Status: {proposal.status}')
|
|
print(f'Data wygaśnięcia: {proposal.expires_at}')
|
|
|
|
return 0
|
|
|
|
finally:
|
|
db.close()
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|