grantforge-api / backend /scripts /seed_sections.py
GrantForge Bot
Deploy to Hugging Face
afd56bc
# 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()