Roudrigus commited on
Commit
aa048d9
·
verified ·
1 Parent(s): a197732

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -5
app.py CHANGED
@@ -37,9 +37,8 @@ except ModuleNotFoundError:
37
  st.set_page_config(page_title=APP_TITLE, page_icon=APP_ICON, layout=APP_LAYOUT)
38
 
39
  # ==========================
40
- # Imports opcionais com mensagens amigáveis
41
  # ==========================
42
- # utils.ensure_dirs
43
  def _try_import_utils():
44
  try:
45
  from utils import ensure_dirs # type: ignore
@@ -54,7 +53,9 @@ def _try_import_utils():
54
 
55
  ensure_dirs = _try_import_utils()
56
 
57
- # db.init_db (pode inicializar conexão remota ou HF Dataset)
 
 
58
  def _try_import_db():
59
  try:
60
  from db import init_db # type: ignore
@@ -70,7 +71,21 @@ def _try_import_db():
70
 
71
  init_db = _try_import_db()
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  # Páginas
 
74
  def _try_import_pages():
75
  page_aluno = None
76
  page_admin = None
@@ -95,18 +110,34 @@ page_aluno, aluno_import_err, page_admin, admin_import_err = _try_import_pages()
95
  # ==========================
96
  # Boot do App
97
  # ==========================
98
- # Cria diretórios locais (se aplicável) e inicializa banco
99
  try:
100
  ensure_dirs()
101
  except Exception as e:
102
  st.warning(f"⚠️ Falha ao preparar diretórios locais: {e}")
103
 
 
104
  try:
105
  init_db()
106
  except Exception as e:
107
- st.error("❌ Falha ao inicializar o banco de dados/persistência.")
108
  st.exception(e)
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  # Estados padrão
111
  st.session_state.setdefault("is_admin", False)
112
  st.session_state.setdefault("admin_user", None)
@@ -115,11 +146,23 @@ st.session_state.setdefault("aluno_nome", "")
115
  st.session_state.setdefault("aluno_email", "")
116
  st.session_state.setdefault("cal_ver", 0)
117
 
 
 
 
 
 
 
 
 
 
 
 
118
  # ==========================
119
  # Router
120
  # ==========================
121
  def main() -> None:
122
  st.title(APP_TITLE)
 
123
 
124
  # Indica se houve problemas de import nas páginas
125
  if aluno_import_err:
@@ -127,11 +170,22 @@ def main() -> None:
127
  if admin_import_err:
128
  st.warning(f"⚠️ Módulo `admin` não pôde ser carregado: {admin_import_err}")
129
 
 
 
 
 
 
 
 
 
130
  tab_aluno, tab_admin = st.tabs(["👩‍🎓 Aluno", "🛠️ Admin"])
131
 
132
  with tab_aluno:
133
  if page_aluno and hasattr(page_aluno, "render"):
134
  try:
 
 
 
135
  page_aluno.render()
136
  except Exception as e:
137
  st.error("Ocorreu um erro ao carregar a aba **Aluno**. Os demais menus continuam disponíveis.")
@@ -142,6 +196,7 @@ def main() -> None:
142
  with tab_admin:
143
  if page_admin and hasattr(page_admin, "render"):
144
  try:
 
145
  page_admin.render()
146
  except Exception as e:
147
  st.error("Ocorreu um erro ao carregar a aba **Admin**.")
 
37
  st.set_page_config(page_title=APP_TITLE, page_icon=APP_ICON, layout=APP_LAYOUT)
38
 
39
  # ==========================
40
+ # Utils.ensure_dirs (opcional)
41
  # ==========================
 
42
  def _try_import_utils():
43
  try:
44
  from utils import ensure_dirs # type: ignore
 
53
 
54
  ensure_dirs = _try_import_utils()
55
 
56
+ # ==========================
57
+ # db.init_db (opcional) — caso você tenha um init local ou remoto
58
+ # ==========================
59
  def _try_import_db():
60
  try:
61
  from db import init_db # type: ignore
 
71
 
72
  init_db = _try_import_db()
73
 
74
+ # ==========================
75
+ # Integração com Hugging Face Dataset (opcional, recomendado)
76
+ # ==========================
77
+ def _try_import_hfdb():
78
+ try:
79
+ from database.hfdb import ensure_db_file, load_data, save_data # type: ignore
80
+ return ensure_db_file, load_data, save_data, None
81
+ except Exception as e:
82
+ return None, None, None, e
83
+
84
+ ensure_db_file, load_data, save_data, hfdb_err = _try_import_hfdb()
85
+
86
+ # ==========================
87
  # Páginas
88
+ # ==========================
89
  def _try_import_pages():
90
  page_aluno = None
91
  page_admin = None
 
110
  # ==========================
111
  # Boot do App
112
  # ==========================
113
+ # Cria diretórios locais (se aplicável)
114
  try:
115
  ensure_dirs()
116
  except Exception as e:
117
  st.warning(f"⚠️ Falha ao preparar diretórios locais: {e}")
118
 
119
+ # Inicialização genérica (se existente)
120
  try:
121
  init_db()
122
  except Exception as e:
123
+ st.error("❌ Falha ao inicializar o banco de dados/persistência (init_db).")
124
  st.exception(e)
125
 
126
+ # Se hfdb estiver disponível, garante arquivo e carrega estado inicial
127
+ DB_STATE = None
128
+ if ensure_db_file and load_data:
129
+ try:
130
+ ensure_db_file()
131
+ DB_STATE = load_data()
132
+ except Exception as e:
133
+ st.error("❌ Não foi possível preparar/carregar o arquivo de banco no Dataset (HF).")
134
+ st.exception(e)
135
+ elif hfdb_err:
136
+ st.info(
137
+ "ℹ️ Persistência via Hugging Face Dataset não habilitada. "
138
+ "Crie `database/hfdb.py` e configure os Secrets/Variables para persistência."
139
+ )
140
+
141
  # Estados padrão
142
  st.session_state.setdefault("is_admin", False)
143
  st.session_state.setdefault("admin_user", None)
 
146
  st.session_state.setdefault("aluno_email", "")
147
  st.session_state.setdefault("cal_ver", 0)
148
 
149
+ # ==========================
150
+ # (Opcional) Debug de ambiente — remova depois que tudo estiver OK
151
+ # ==========================
152
+ def _debug_env():
153
+ with st.expander("🔎 Debug rápido (ambiente)", expanded=False):
154
+ st.write("HF_DATASET_PATH:", os.getenv("HF_DATASET_PATH"))
155
+ st.write("HF_DB_FILE:", os.getenv("HF_DB_FILE"))
156
+ st.write("HF_TOKEN presente?:", bool(os.getenv("HF_TOKEN")))
157
+ st.write("hfdb import error:", str(hfdb_err) if hfdb_err else None)
158
+ st.write("DB_STATE inicial carregado?:", DB_STATE is not None)
159
+
160
  # ==========================
161
  # Router
162
  # ==========================
163
  def main() -> None:
164
  st.title(APP_TITLE)
165
+ _debug_env() # pode remover depois
166
 
167
  # Indica se houve problemas de import nas páginas
168
  if aluno_import_err:
 
170
  if admin_import_err:
171
  st.warning(f"⚠️ Módulo `admin` não pôde ser carregado: {admin_import_err}")
172
 
173
+ # Exibe um snapshot mínimo dos dados (se hfdb estiver ativo)
174
+ if DB_STATE is not None:
175
+ with st.expander("🗄️ Snapshot do banco (somente leitura)", expanded=False):
176
+ try:
177
+ st.json(DB_STATE)
178
+ except Exception:
179
+ st.write(DB_STATE)
180
+
181
  tab_aluno, tab_admin = st.tabs(["👩‍🎓 Aluno", "🛠️ Admin"])
182
 
183
  with tab_aluno:
184
  if page_aluno and hasattr(page_aluno, "render"):
185
  try:
186
+ # Se a página do aluno quiser usar o estado/handlers de persistência:
187
+ # ela pode aceitar parâmetros (se você preferir esse padrão):
188
+ # page_aluno.render(DB_STATE, load_data, save_data)
189
  page_aluno.render()
190
  except Exception as e:
191
  st.error("Ocorreu um erro ao carregar a aba **Aluno**. Os demais menus continuam disponíveis.")
 
196
  with tab_admin:
197
  if page_admin and hasattr(page_admin, "render"):
198
  try:
199
+ # Idem comentário acima — você pode padronizar assinatura: render(db, load_fn, save_fn)
200
  page_admin.render()
201
  except Exception as e:
202
  st.error("Ocorreu um erro ao carregar a aba **Admin**.")