grantforge-api / backend /scripts /seed_sections.py
GrantForge Bot
Deploy sha-565ad85979610064f6d1c18ab3b6404357d61073 — source build (no GHCR)
ce8f04a
Raw
History Blame Contribute Delete
4.5 kB
# 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()