Skip to content

Commit 22aedff

Browse files
committed
Add Home.jsx with detailed dashboard logic, UI, and animations
1 parent 7a9f1f3 commit 22aedff

5 files changed

Lines changed: 165 additions & 14 deletions

File tree

PRODUCT_IDEAS.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Syntax — Ideias de Produto 💡
2+
3+
Este backlog contém sugestões para futuras melhorias na plataforma Syntax, focando em aumentar o engajamento, valor educacional e usabilidade.
4+
5+
## 🚀 Alta Prioridade
6+
7+
### 1. Flashcards Automáticos
8+
- **Descrição**: A Ada detecta conceitos-chave durante as conversas e sugere salvá-los como flashcards.
9+
- **Exemplo**: "Você mencionou SOLID. Quer salvar esse princípio como um flashcard para revisar depois?"
10+
- **Complexidade**: Média | **Valor**: Alto
11+
12+
### 2. Resumo da Conversa
13+
- **Descrição**: Ao encerrar uma conversa, a Ada gera um resumo em bullet points dos principais tópicos aprendidos.
14+
- **Complexidade**: Baixa | **Valor**: Alto
15+
16+
### 3. Code Challenge (10min)
17+
- **Descrição**: A Ada propõe desafios práticos rápidos baseados no tópico que o usuário está estudando.
18+
- **Complexidade**: Média | **Valor**: Alto
19+
20+
---
21+
22+
## ⚡ Média Prioridade
23+
24+
### 4. Modo Entrevista
25+
- **Descrição**: A Ada assume o papel de uma entrevistadora técnica. Ativado pelo comando `/interview`.
26+
- **Complexidade**: Baixa | **Valor**: Alto
27+
28+
### 5. Adaptação de Nível
29+
- **Descrição**: Salva o nível do usuário (Júnior, Pleno, Sênior) e a Ada adapta o vocabulário e profundidade das explicações.
30+
- **Complexidade**: Baixa | **Valor**: Médio
31+
32+
### 6. Roadmap Personalizado
33+
- **Descrição**: Sugere uma trilha de estudos com base nas lacunas de conhecimento identificadas pela Ada nas conversas.
34+
- **Complexidade**: Alta | **Valor**: Alto
35+
36+
### 7. Snippets com Contexto
37+
- **Descrição**: Ao salvar um snippet de código, a Ada gera automaticamente um título, a linguagem e tags relevantes.
38+
- **Complexidade**: Baixa | **Valor**: Médio
39+
40+
---
41+
42+
## 🔮 Futuro / Baixa Prioridade
43+
44+
### 8. Pair Programming Mode
45+
- **Descrição**: A Ada faz perguntas provocativas ao invés de dar a resposta, incentivando o usuário a pensar na solução.
46+
- **Complexidade**: Baixa | **Valor**: Alto (Engajamento)
47+
48+
### 9. Integração GitHub
49+
- **Descrição**: A Ada analisa commits e PRs reais do usuário para dar feedbacks de Clean Code e arquitetura.
50+
- **Complexidade**: Alta | **Valor**: Alto
51+
52+
### 10. Dashboard de Evolução
53+
- **Descrição**: Visualização de progresso por tópicos (ex: 80% em Algoritmos, 30% em DevOps).
54+
- **Complexidade**: Alta | **Valor**: Médio
55+
56+
---
57+
58+
## 🧠 Melhorias no Comportamento da Ada
59+
- **Detecção de Frustração**: Identificar frases como "não entendi" e mudar a abordagem didática automaticamente.
60+
- **Memória Intra-sessão**: Evitar repetir explicações já dadas na mesma conversa.
61+
- **Sugestão de Próximo Tópico**: Ao final de cada explicação, sugerir o que estudar em seguida.
62+
- **Citação de Fontes**: Referenciar livros clássicos (Clean Code, Pragmatic Programmer) em explicações relevantes.
63+
64+
## 🎨 Melhorias de UX
65+
- **Onboarding Interativo**: Três perguntas iniciais (nível, stack, objetivo) para configurar a Ada.
66+
- **Comandos de Atalho**: `/new` (nova conversa), `/save` (salvar resumo), `/review` (revisar flashcards).
67+
- **Feedback de Respostas**: Botões de 👍/👎 nas mensagens da Ada para melhorar a precisão da IA.
68+
- **Modo Foco**: Opção de esconder a sidebar para uma sessão de estudos sem distrações.

UX_Writing_Changelog.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# UX Writing Changelog — Syntax Platform 📝
2+
3+
Este changelog documenta as alterações de textos, mensagens e personalidade da IA (Ada) realizadas para alinhar a plataforma com o novo Guia de Tom de Voz.
4+
5+
## 🔑 Autenticação (`LoginMinimal.jsx`)
6+
7+
| Elemento | Antes | Depois | Motivo |
8+
| :--- | :--- | :--- | :--- |
9+
| Título (Login) | "Establish_Session" | "Entrar" | Clareza universal e remoção de jargão inventado. |
10+
| Título (Registro) | "Registry_Node" | "Criar conta" | Padrão reconhecível por desenvolvedores. |
11+
| Subtítulo (Login) | "Credenciais para acesso ao mainframe" | "Entre com sua conta para continuar." | Tom profissional e direto. |
12+
| Label Email | "Network_Address" | "Email" | Glossário oficial. |
13+
| Label Senha | "Access_Hash" | "Senha" | Glossário oficial. |
14+
| Placeholder | "node@syntax.network" | "seu@email.com" | Facilita o preenchimento intuitivo. |
15+
| Erros | "Target_Not_Found:..." | "Email não encontrado. Crie..." | Padrão [O que aconteceu] + [O que fazer]. |
16+
17+
## 🤖 Agente Ada (`useSyntaxSessoes.js` & `AdaBot.jsx`)
18+
19+
| Elemento | Antes | Depois | Motivo |
20+
| :--- | :--- | :--- | :--- |
21+
| Boas-vindas | Genérico ("Qual o problema?") | Contextual e motivador | Demonstra as capacidades técnicas da Ada. |
22+
| System Prompt | Focado em "Personalidade" | Focado em "Especialidades" | Melhora a precisão técnica da IA como Engenheira Sênior. |
23+
| Títulos de Sessão | Truncava o texto | Categorias com ícones (🐛, 📐, ⚙️) | Melhor organização visual do histórico. |
24+
| Erros de API | Jargão técnico (429, API Key) | Instruções claras de ação | Reduz a frustração do usuário em falhas técnicas. |
25+
26+
## 📊 Dashboard e Navegação (`Home.jsx`, `Materias.jsx`, `Resumos.jsx`, `Flashcards.jsx`)
27+
28+
| Elemento | Antes | Depois | Motivo |
29+
| :--- | :--- | :--- | :--- |
30+
| Badges de Status | "Node_Active" | "Online" | Humanização do sistema. |
31+
| KPIs | "Streak", "Logic_Units", "Docs" | "Sequência", "Flashcards", "Resumos" | Consistência com o PT-BR padrão do glossário. |
32+
| Empty States | "Repository_Empty" | "Repositório vazio" | Clareza e instrução para criar o primeiro item. |
33+
| Botões de Ação | "Initialize_Sync", "Commit_Stack" | "Iniciar revisão", "Salvar Matéria" | Foco na tarefa do usuário, não no processo técnico. |
34+
35+
## ⚙️ Core e Contexto (`useSyntaxContext.js`)
36+
37+
| Campo | Antes | Depois | Motivo |
38+
| :--- | :--- | :--- | :--- |
39+
| `streakAtual` | `streakAtual` | `diasSeguidos` | PT-BR consistente. |
40+
| `longestStreak` | `longestStreak` | `maiorSequencia` | Remoção de termos em EN desnecessários. |
41+
| `totalResumos` | `totalResumos` | `resumosSalvos` | Reflete melhor o estado de persistência. |
42+
| `ultimoProjeto` | (Não existia no estado) | `projetoRecente` | Adicionado para permitir saudações contextuais da Ada. |
43+
44+
---
45+
*Alterações realizadas seguindo rigorosamente as Regras de Conduta do projeto Syntax.*

VOICE_GUIDE.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Syntax — Guia de Tom de Voz 🚀
2+
3+
## Quem é a plataforma Syntax
4+
A **Syntax** é uma plataforma de estudos de alto desempenho para engenheiros de software. Ela combina inteligência artificial (Ada), repetição espaçada (SM-2) e documentação técnica para acelerar o aprendizado de conceitos complexos, desde algoritmos até arquitetura de sistemas.
5+
6+
## Quem é a Ada
7+
A **Ada** é a sua assistente especializada em engenharia de software. Ela não é apenas um chatbot; ela é uma colega de profissão sênior, direta, didática e motivadora. Ela entende código, padrões de projeto e desafios reais de desenvolvimento.
8+
9+
## Glossário Oficial
10+
11+
| CONCEITO | USE | NUNCA USE |
12+
| :---------------- | :------------- | :-------------------- |
13+
| Usuário | você / dev | node, cliente |
14+
| Conta | conta | registry, endpoint |
15+
| Chat | conversa | sessão, thread |
16+
| Agente de IA | Ada | bot, KakaBot, AI |
17+
| Senha | senha | hash, access key |
18+
| Email | email | network address |
19+
| Login | entrar | establish session |
20+
| Cadastro | criar conta | generate node |
21+
22+
## Padrões de Mensagem
23+
24+
### ❌ O que evitar
25+
- Jargões inventados que dificultam a compreensão (ex: "Registry_Node", "Logic_Unit").
26+
- Mensagens de erro puramente técnicas sem instrução (ex: "Target_Not_Found").
27+
- Mistura aleatória de PT-BR e EN.
28+
- Tom frio ou excessivamente robótico.
29+
30+
### ✅ O que fazer
31+
- **Padrão de erro**: `[O que aconteceu]` + `[O que fazer]`.
32+
- *Ex: "Email não encontrado. Verifique ou crie uma conta."*
33+
- **Padrão de empty state**: `[O que está vazio]` + `[Ação para resolver]`.
34+
- *Ex: "Nenhuma conversa ainda. Comece uma nova sessão com a Ada."*
35+
- **Padrão de loading**: Específico e contextual.
36+
- *Ex: "Carregando seu histórico de estudos..."*
37+
- **Tom Dev-to-Dev**: Use termos técnicos consagrados (Code Review, Debug, Deploy, Stack) de forma natural no PT-BR.
38+
39+
## Regra de Ouro da Ada
40+
Toda mensagem ou prompt da Ada deve ter **no máximo 2000 caracteres**. Isso garante performance e foco na resposta.
41+
42+
---
43+
*Este guia deve ser seguido por todos os agentes e desenvolvedores para manter a consistência da plataforma Syntax.*

firestore.rules

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,9 @@ service cloud.firestore {
143143
// ============================================================
144144

145145
// -- USUÁRIOS (perfil público para busca) --
146-
// O perfil /users/{userId} original permite apenas owner.
147-
// Para buscas sociais, permitimos leitura autenticada de campos públicos.
146+
// O perfil /users/{userId} original permite apenas owner para escrita.
147+
// Para buscas sociais, permitimos leitura autenticada.
148+
// IMPORTANTE: Evitar salvar PII (email, etc) no documento principal.
148149
match /users/{userId} {
149150
allow read: if isAuthenticated();
150151
}

frontend/src/pages/Simulado.jsx

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
/**
2-
* 🎯 TEST_SUITE_ENGINE (Simulado Infinito) — Syntax Theme Premium
3-
* * Geração autônoma de testes via LLM (Gemini 2.5/2.0 Fallback).
2+
* 🎯 TEST_SUITE_ENGINE
3+
* * Geração autônoma de testes via LLM (Gemini 2.5-flash).
44
* - Features: PDF Data Extraction, Real-time Feedback, Performance Analytics.
55
* - Design: QA Monitoring Interface (Slate-950 / Cyan / Indigo).
6-
* - v4.6: Fixed Gemini Models (2.5-flash + 2.0-flash + 2.0-flash-lite fallback).
6+
* - v4.7: Fixed Gemini Model → gemini-2.5-flash only.
77
*/
88

99
import React, { useState, useRef, useCallback, useEffect } from 'react';
@@ -45,11 +45,8 @@ import { Input } from '../components/ui/Input';
4545

4646
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';
4747

48-
// ✅ CORRIGIDO: modelos atualizados — 1.5-flash e 1.5-pro foram descontinuados
4948
const MODEL_CANDIDATES = [
50-
'gemini-2.5-flash-preview-04-17',
51-
'gemini-2.0-flash',
52-
'gemini-2.0-flash-lite',
49+
'gemini-2.5-flash',
5350
];
5451

5552
/* ═══════════════════════════════════════════
@@ -205,7 +202,6 @@ function Simulado() {
205202
} finally { setIsExtractingPdf(false); }
206203
};
207204

208-
// ✅ CORRIGIDO: fallback melhorado com retry em 429 e log de erro por modelo
209205
const generateWithFallback = async (prompt) => {
210206
const apiKey = import.meta.env.VITE_GEMINI_API_KEY;
211207
const genAI = new GoogleGenerativeAI(apiKey);
@@ -221,16 +217,14 @@ function Simulado() {
221217
lastError = err;
222218
const s = String(err?.status || err?.message || '');
223219
const is429 = s.includes('429');
224-
const is404 = s.includes('404');
225220

226221
console.warn(`[Simulado] Modelo ${modelName} falhou:`, s);
227222

228-
// 429 no primeiro modelo → aguarda antes de tentar o próximo
229-
if (is429 && i === 0) {
223+
// 429 → aguarda antes de tentar novamente
224+
if (is429) {
230225
await new Promise(r => setTimeout(r, 3000));
231226
}
232227

233-
// Continua para o próximo modelo em qualquer erro
234228
continue;
235229
}
236230
}

0 commit comments

Comments
 (0)