amauricunha commited on
Commit
c4f9bed
·
verified ·
1 Parent(s): 3b703c9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +106 -56
app.py CHANGED
@@ -1,7 +1,7 @@
1
  #!/usr/bin/env python3
2
  """
3
  English Helper - Hugging Face Spaces
4
- Sistema de aprendizado de inglês com IA
5
  """
6
 
7
  import os
@@ -9,27 +9,42 @@ import gradio as gr
9
  import threading
10
  import time
11
 
12
- def start_flask_server():
13
- """Iniciar servidor Flask em background"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  try:
15
  # Configurar ambiente
16
  os.environ.setdefault('FLASK_ENV', 'production')
17
 
18
- # Importar e inicializar
19
- from flask_app import app
20
  from database import init_db
21
-
22
- # Inicializar banco
23
  init_db()
24
  print("✅ Banco de dados inicializado")
25
 
26
- # Executar Flask
27
- port = int(os.environ.get("FLASK_PORT", 5000))
28
- print(f"🌐 Iniciando Flask na porta {port}")
29
- app.run(host="0.0.0.0", port=port, debug=False, threaded=True)
30
-
31
  except Exception as e:
32
- print(f"❌ Erro no Flask: {e}")
 
33
 
34
  def get_system_status():
35
  """Status do sistema"""
@@ -39,24 +54,32 @@ def get_system_status():
39
  gemini_status = "🟢 OK" if os.getenv('GEMINI_API_KEY') else "🔴 Missing"
40
  admin_status = "🟢 OK" if os.getenv('ADMIN_USERNAME') else "🔴 Missing"
41
 
 
 
 
42
  status = f"""
43
- ## 🎓 English Helper - Sistema Status
 
 
 
 
 
44
 
45
  ### 📊 **APIs**
46
  - **Groq API**: {groq_status}
47
  - **Gemini API**: {gemini_status}
48
  - **Admin Panel**: {admin_status}
49
 
50
- ### 🌐 **Links de Acesso**
51
- - **Sistema Principal**: Use a URL do Space na porta principal
52
- - **Painel Admin**: `/admin` - Acesse via navegador
53
- - **Health Check**: `/auth/check` - Status da API
54
 
55
- ### ⚙️ **Como Usar**
56
- 1. **Configure os Repository Secrets** no HF
57
- 2. **Aguarde** o sistema inicializar
58
- 3. **Acesse** os links acima
59
- 4. **Login Admin** com suas credenciais
60
 
61
  ### 🔧 **Secrets Necessários**
62
  - GROQ_API_KEY
@@ -64,24 +87,22 @@ def get_system_status():
64
  - SECRET_KEY
65
  - ADMIN_USERNAME
66
  - ADMIN_PASSWORD
67
- - BASE_URL
68
  """
69
 
70
  return status
71
 
72
- # Interface Gradio
73
- def create_interface():
74
- """Criar interface Gradio"""
75
 
76
  with gr.Blocks(
77
- title="English Helper - AI Learning",
78
  theme=gr.themes.Soft()
79
  ) as demo:
80
 
81
  gr.HTML("""
82
  <div style="text-align: center; padding: 20px; background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); color: white; border-radius: 10px; margin-bottom: 20px;">
83
- <h1>🎓 English Helper</h1>
84
- <p>Sistema completo de aprendizado de inglês com IA</p>
85
  </div>
86
  """)
87
 
@@ -90,21 +111,28 @@ def create_interface():
90
  refresh_btn = gr.Button("🔄 Refresh Status", variant="primary")
91
  refresh_btn.click(fn=get_system_status, outputs=status_display)
92
 
93
- with gr.Tab("🚀 Quick Start"):
94
  gr.Markdown("""
95
- ## 🎯 Como começar:
 
 
 
96
 
97
- 1. **Verifique o Status** - Confirme se as APIs estão configuradas
98
- 2. **Acesse o Sistema** - Use os links na aba "System Status"
99
- 3. **Faça Login** - Use suas credenciais de admin
100
- 4. **Explore** - Chat IA, flashcards, curadoria, etc.
101
 
102
- ## 🔧 Funcionalidades:
103
- - 🤖 **Chat IA**: Conversação inteligente
104
- - 📚 **Flashcards**: Vocabulário personalizado
105
- - 📰 **Curadoria**: Artigos por nível
106
- - 📅 **Planos**: Cronograma de estudos
107
- - 📊 **Analytics**: Dashboard completo
 
 
 
 
 
 
108
  """)
109
 
110
  return demo
@@ -112,20 +140,42 @@ def create_interface():
112
  # Executar aplicação
113
  if __name__ == "__main__":
114
  print("🎯 Iniciando English Helper no Hugging Face Spaces...")
 
115
 
116
- # Iniciar Flask em background
117
- flask_thread = threading.Thread(target=start_flask_server, daemon=True)
118
- flask_thread.start()
 
119
 
120
- # Aguardar Flask inicializar
121
- time.sleep(3)
 
122
 
123
- # Criar e executar interface Gradio
124
- demo = create_interface()
125
- demo.launch(
126
- server_name="0.0.0.0",
127
- server_port=7860,
128
- share=False,
129
- debug=False,
130
- show_error=True
131
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #!/usr/bin/env python3
2
  """
3
  English Helper - Hugging Face Spaces
4
+ Sistema de aprendizado de inglês com IA - Flask como aplicação principal
5
  """
6
 
7
  import os
 
9
  import threading
10
  import time
11
 
12
+ def start_gradio_dashboard():
13
+ """Iniciar dashboard Gradio em background"""
14
+ try:
15
+ # Criar interface Gradio
16
+ demo = create_gradio_interface()
17
+
18
+ # Executar Gradio em background
19
+ port = int(os.environ.get("GRADIO_PORT", 7861))
20
+ print(f"📊 Iniciando Gradio Dashboard na porta {port}")
21
+ demo.launch(
22
+ server_name="0.0.0.0",
23
+ server_port=port,
24
+ share=False,
25
+ debug=False,
26
+ show_error=True,
27
+ quiet=True
28
+ )
29
+
30
+ except Exception as e:
31
+ print(f"❌ Erro no Gradio: {e}")
32
+
33
+ def init_system():
34
+ """Inicializar sistema completo"""
35
  try:
36
  # Configurar ambiente
37
  os.environ.setdefault('FLASK_ENV', 'production')
38
 
39
+ # Importar e inicializar banco
 
40
  from database import init_db
 
 
41
  init_db()
42
  print("✅ Banco de dados inicializado")
43
 
44
+ return True
 
 
 
 
45
  except Exception as e:
46
+ print(f"❌ Erro na inicialização: {e}")
47
+ return False
48
 
49
  def get_system_status():
50
  """Status do sistema"""
 
54
  gemini_status = "🟢 OK" if os.getenv('GEMINI_API_KEY') else "🔴 Missing"
55
  admin_status = "🟢 OK" if os.getenv('ADMIN_USERNAME') else "🔴 Missing"
56
 
57
+ # Verificar modo de operação
58
+ port = os.environ.get("PORT", "7860")
59
+
60
  status = f"""
61
+ ## 🎓 English Helper - System Status
62
+
63
+ ### 🏗️ **Arquitetura**
64
+ - **Modo**: Flask Principal + Gradio Dashboard
65
+ - **Porta Principal**: {port} (Flask App)
66
+ - **Dashboard**: 7861 (Gradio)
67
 
68
  ### 📊 **APIs**
69
  - **Groq API**: {groq_status}
70
  - **Gemini API**: {gemini_status}
71
  - **Admin Panel**: {admin_status}
72
 
73
+ ### 🌐 **Acesso Direto**
74
+ - **[🎓 Aplicação Principal →](../)**
75
+ - **[👤 Admin Panel →](../admin)**
76
+ - **[⚕️ Health Check →](../auth/check)**
77
 
78
+ ### **Sistema Funcionando**
79
+ Flask rodando na porta principal ({port})
80
+ Database SQLite inicializado
81
+ Dashboard Gradio na porta 7861
82
+ Rotas e templates carregados
83
 
84
  ### 🔧 **Secrets Necessários**
85
  - GROQ_API_KEY
 
87
  - SECRET_KEY
88
  - ADMIN_USERNAME
89
  - ADMIN_PASSWORD
 
90
  """
91
 
92
  return status
93
 
94
+ def create_gradio_interface():
95
+ """Criar interface Gradio Dashboard"""
 
96
 
97
  with gr.Blocks(
98
+ title="English Helper - System Dashboard",
99
  theme=gr.themes.Soft()
100
  ) as demo:
101
 
102
  gr.HTML("""
103
  <div style="text-align: center; padding: 20px; background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); color: white; border-radius: 10px; margin-bottom: 20px;">
104
+ <h1>📊 English Helper - Dashboard</h1>
105
+ <p>Sistema de monitoramento e status</p>
106
  </div>
107
  """)
108
 
 
111
  refresh_btn = gr.Button("🔄 Refresh Status", variant="primary")
112
  refresh_btn.click(fn=get_system_status, outputs=status_display)
113
 
114
+ with gr.Tab(" Quick Access"):
115
  gr.Markdown("""
116
+ ## 🎯 Acesso Rápido:
117
+
118
+ ### 🎓 **[ACESSAR APLICAÇÃO PRINCIPAL →](../)**
119
+ Acesse a aplicação completa de aprendizado de inglês
120
 
121
+ ### 👤 **[PAINEL ADMINISTRATIVO →](../admin)**
122
+ Acesso ao painel de administração do sistema
 
 
123
 
124
+ ### ⚕️ **[VERIFICAR STATUS →](../auth/check)**
125
+ Verificação de saúde e status dos serviços
126
+ """)
127
+
128
+ gr.Markdown("""
129
+ ## 🔧 Funcionalidades Principais:
130
+ - 🤖 **Chat IA**: Conversação inteligente com IA
131
+ - 📚 **Flashcards**: Sistema de vocabulário personalizado
132
+ - 📰 **Curadoria**: Artigos organizados por nível
133
+ - 📅 **Planos**: Cronograma de estudos personalizado
134
+ - 📊 **Analytics**: Dashboard completo de progresso
135
+ - � **Usuários**: Sistema de autenticação e progresso
136
  """)
137
 
138
  return demo
 
140
  # Executar aplicação
141
  if __name__ == "__main__":
142
  print("🎯 Iniciando English Helper no Hugging Face Spaces...")
143
+ print("🔄 Modo: Flask como aplicação principal")
144
 
145
+ # Inicializar sistema
146
+ if not init_system():
147
+ print("❌ Falha na inicialização do sistema")
148
+ exit(1)
149
 
150
+ # Iniciar Gradio Dashboard em background
151
+ gradio_thread = threading.Thread(target=start_gradio_dashboard, daemon=True)
152
+ gradio_thread.start()
153
 
154
+ # Aguardar inicialização
155
+ time.sleep(2)
156
+
157
+ # Importar e executar Flask como aplicação principal
158
+ try:
159
+ from flask_app import app
160
+
161
+ # Adicionar rota para dashboard Gradio
162
+ @app.route('/dashboard')
163
+ def dashboard_redirect():
164
+ return '<script>window.location.href = "/proxy/7861/";</script><p>Redirecionando para dashboard... <a href="/proxy/7861/">Clique aqui</a></p>'
165
+
166
+ # Executar Flask na porta principal do HF Spaces
167
+ port = int(os.environ.get("PORT", 7860))
168
+ print(f"🌐 Flask rodando na porta principal: {port}")
169
+ print(f"📊 Dashboard Gradio: porta 7861")
170
+ print(f"🎓 Aplicação principal: http://localhost:{port}/")
171
+
172
+ app.run(
173
+ host="0.0.0.0",
174
+ port=port,
175
+ debug=False,
176
+ threaded=True
177
+ )
178
+
179
+ except Exception as e:
180
+ print(f"❌ Erro no Flask: {e}")
181
+ exit(1)