90 lines
2.6 KiB
Markdown
90 lines
2.6 KiB
Markdown
# Knowledge Station
|
|
|
|
Plataforma para organizar conocimiento escolar por materia y semana, procesar documentos/audio/video y generar archivos Markdown optimizados para ingesta en LLM.
|
|
|
|
El archivo `estacion documentos.html` queda como prototipo funcional de referencia. La plataforma principal usa `backend/` (FastAPI) y `frontend/` (Next.js).
|
|
|
|
## Capacidades Iniciales
|
|
|
|
- Materias y semanas persistidas en SQLite.
|
|
- Estructura de archivos por materia/semana en `data/subjects/`.
|
|
- Ingesta de `.txt`, `.md`, `.docx`, `.pdf`, audio y video.
|
|
- PDF con texto mediante PyMuPDF.
|
|
- OCR opcional de PDF con Mistral.
|
|
- Audio con Deepgram en español.
|
|
- Video con extracción temporal de audio vía `ffmpeg` y transcripción con Deepgram.
|
|
- Exportación semanal consolidada a Markdown.
|
|
- UI dedicada con materias, semanas, subida de archivos, polling de trabajos y editor Markdown con preview.
|
|
|
|
## Desarrollo Local
|
|
|
|
```bash
|
|
python -m venv .venv
|
|
.venv\Scripts\activate
|
|
pip install -r requirements.txt
|
|
copy .env.example .env
|
|
uvicorn backend.app.main:app --reload
|
|
```
|
|
|
|
En otra terminal:
|
|
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
set NEXT_PUBLIC_API_URL=http://127.0.0.1:8000
|
|
npm run dev -- -p 3000
|
|
```
|
|
|
|
La plataforma queda en `http://localhost:3000`, la API en `http://localhost:8000` y la documentación interactiva en `http://localhost:8000/docs`.
|
|
|
|
Para usuarios no tecnicos en Windows, usa `abrir_estacion.bat`; detecta puertos libres, prepara backend/frontend y abre el navegador. Usa `cerrar_estacion.bat` para detener todo.
|
|
|
|
## Docker / Coolify
|
|
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
Para Coolify, configura backend y frontend como servicios separados. Monta un volumen persistente para `/app/data` en el backend y define `NEXT_PUBLIC_API_URL` en el frontend apuntando a la URL publica del backend.
|
|
|
|
## Variables
|
|
|
|
- `APP_DATA_DIR`: carpeta de datos persistentes.
|
|
- `DATABASE_PATH`: ruta SQLite.
|
|
- `MISTRAL_API_KEY`: OCR para PDFs escaneados.
|
|
- `DEEPGRAM_API_KEY`: transcripción de audio/video.
|
|
|
|
No subas claves reales al repositorio.
|
|
|
|
## Flujo API Basico
|
|
|
|
Crear materia:
|
|
|
|
```bash
|
|
curl -X POST http://localhost:8000/subjects -H "Content-Type: application/json" -d '{"name":"Comportamiento Organizacional"}'
|
|
```
|
|
|
|
Crear semana:
|
|
|
|
```bash
|
|
curl -X POST http://localhost:8000/subjects/1/weeks -H "Content-Type: application/json" -d '{"number":1,"title":"Grupos y equipos"}'
|
|
```
|
|
|
|
Subir archivo:
|
|
|
|
```bash
|
|
curl -X POST -F "[email protected]" http://localhost:8000/subjects/1/weeks/1/files
|
|
```
|
|
|
|
Consultar trabajo:
|
|
|
|
```bash
|
|
curl http://localhost:8000/jobs/1
|
|
```
|
|
|
|
Exportar semana:
|
|
|
|
```bash
|
|
curl -L http://localhost:8000/subjects/1/weeks/1/export -o semana-01.md
|
|
```
|