# ruff: noqa: E402 import os import sys from dotenv import load_dotenv # Wczytaj zmienne środowiskowe z głównego katalogu root_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) load_dotenv(os.path.join(root_dir, ".env")) # Dodaj główny katalog backendu do PYTHONPATH sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from sqlalchemy.orm import Session from core.subscription.db import SessionLocal from core.projects.models import ProjectSectionTemplate SMART_SECTIONS = [ { "type": "project_summary", "title": "Streszczenie projektu", "order": 1, "description": "Krótkie podsumowanie celów, zakresu i oczekiwanych rezultatów projektu.", }, { "type": "company_potential", "title": "Opis przedsiębiorstwa i potencjał", "order": 2, "description": "Informacje o Wnioskodawcy, zasobach, doświadczeniu i zdolności do realizacji projektu.", }, { "type": "innovation_description", "title": "Opis innowacji / B+R", "order": 3, "description": "Szczegółowy opis planowanych prac badawczo-rozwojowych oraz samej innowacji.", }, { "type": "market_analysis", "title": "Analiza rynku i konkurencji", "order": 4, "description": "Analiza zapotrzebowania, grupy docelowej oraz przewag konkurencyjnych.", }, { "type": "research_agenda", "title": "Agenda badawcza / cele", "order": 5, "description": "Zdefiniowane problemy badawcze, hipotezy i cele postawione w projekcie.", }, { "type": "trl_levels", "title": "Poziom gotowości technologii (TRL)", "order": 6, "description": "Opis stanu początkowego i docelowego Poziomu Gotowości Technologicznej (TRL).", }, { "type": "budget_and_costs", "title": "Budżet i kwalifikowalność kosztów", "order": 7, "description": "Podział i uzasadnienie planowanych kosztów kwalifikowalnych w projekcie.", }, { "type": "work_schedule", "title": "Harmonogram rzeczowo-finansowy", "order": 8, "description": "Etapy, zadania, kamienie milowe i rozkład prac w czasie.", }, { "type": "project_team", "title": "Zespół projektowy", "order": 9, "description": "Kluczowy personel B+R, zarządzający oraz planowane zaangażowanie kadrowe.", }, { "type": "risk_management", "title": "Zarządzanie ryzykiem", "order": 10, "description": "Identyfikacja ryzyk technologicznych, rynkowych i organizacyjnych oraz planymitygacji.", }, { "type": "social_impact_dnsh", "title": "Wpływ społeczny i środowiskowy (DNSH)", "order": 11, "description": "Zasada Do No Significant Harm oraz wpływ na zrównoważony rozwój i społeczeństwo.", }, { "type": "intellectual_property", "title": "Prawa własności intelektualnej", "order": 12, "description": "Sposób ochrony wypracowanych rezultatów oraz status praw majątkowych (IP).", }, { "type": "success_metrics", "title": "Wskaźniki sukcesu i ewaluacja", "order": 13, "description": "Sposób mierzenia postępów i weryfikacji osiągnięcia celów merytorycznych projektu.", }, ] def seed_smart_sections(): print("Łączenie z bazą danych...") db: Session = SessionLocal() try: print("Czyszczenie starych szablonów dla programu SMART...") # Usuń dotychczasowe wpisy dla Ścieżki SMART db.query(ProjectSectionTemplate).filter( ProjectSectionTemplate.program_type == "SMART" ).delete() print("Dodawanie nowych szablonów (Ścieżka SMART)...") for sec in SMART_SECTIONS: template = ProjectSectionTemplate( program_type="SMART", section_type=sec["type"], title=sec["title"], order=sec["order"], description=sec["description"], ) db.add(template) db.commit() print(f"Sukces! Dodano {len(SMART_SECTIONS)} sekcji dla programu SMART.") except Exception as e: db.rollback() print(f"Wystąpił błąd podczas uzupełniania bazy: {e}") finally: db.close() if __name__ == "__main__": seed_smart_sections()