¡Gracias por tu interés en contribuir a Cortex Knowledge Assistant!
- Código de Conducta
- Primeros Pasos
- Configuración del Entorno
- Realizar Cambios
- Proceso de Pull Request
- Guías de Estilo
Este proyecto se adhiere al Código de Conducta del Contributor Covenant. Al participar, te comprometes a respetar este código.
- Reportar Bugs: Usa la plantilla de bug report
- Sugerir Features: Usa la plantilla de feature request
- Preguntas: Abre una discusión en la pestaña Discussions
Busca issues etiquetadas con good first issue - son excelentes puntos de partida para nuevos contribuidores.
- Python 3.12+
- Node.js 18+
- Docker y Docker Compose
- Git
# 1. Fork y clonar el repositorio
git clone https://github.com/TU_USUARIO/cortex-knowledge-assistant.git
cd cortex-knowledge-assistant
# 2. Crear entorno virtual
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# .venv\Scripts\activate # Windows
# 3. Instalar dependencias
pip install -e ".[dev]"
# 4. Configurar variables de entorno
cp .env.example .env
# Editar .env con tu HF_API_KEY
# 5. Iniciar infraestructura
docker compose up -d qdrant redis postgres
# 6. Ejecutar la API (en una terminal)
uvicorn src.cortex_ka.api.main:app --reload --port 8088
# 7. Ejecutar la UI (en otra terminal)
cd ui && npm install && npm run dev# Ejecutar todos los tests
pytest tests/ -v
# Ejecutar archivo de tests específico
pytest tests/test_pii.py -v
# Ejecutar con cobertura
pytest tests/ --cov=cortex_ka --cov-report=htmlfeature/descripcion- Nuevas funcionalidadesfix/descripcion- Corrección de bugsdocs/descripcion- Cambios de documentaciónrefactor/descripcion- Refactorización de código
Seguimos Conventional Commits:
<tipo>(<alcance>): <descripción>
[cuerpo opcional]
[pie opcional]
Tipos:
feat: Nueva funcionalidadfix: Corrección de bugdocs: Documentaciónstyle: Formateorefactor: Reestructuración de códigotest: Añadir testschore: Mantenimiento
Ejemplos:
feat(rag): agregar scoring híbrido con extracción de tópicos
fix(auth): manejar tokens JWT expirados correctamente
docs(readme): actualizar instrucciones de instalación
- Crear una rama desde
main - Realizar cambios siguiendo las guías de estilo
- Ejecutar tests:
pytest tests/ -v - Actualizar documentación si es necesario
- Enviar PR con descripción clara
- Los tests pasan localmente (
pytest tests/ -v) - El código sigue las guías de estilo
- Documentación actualizada (si aplica)
- Mensajes de commit siguen la convención
- La descripción del PR explica los cambios
- Formateador: Black (línea máxima 120)
- Ordenamiento de imports: isort
- Linting: flake8
- Type hints: Requeridos para funciones públicas
# Correcto
def calculate_score(query: str, documents: list[str]) -> float:
"""Calcular score de relevancia para documentos."""
...
# Incorrecto
def calculate_score(query, documents):
...- Usar componentes funcionales con hooks
- Seguir patrones existentes en el codebase
- Usar tipos de TypeScript (evitar
any)
- Usar Markdown para toda la documentación
- Incluir ejemplos de código cuando sea útil
- Mantener un lenguaje claro y conciso
- Abre una Discussion en GitHub
- Menciona a los maintainers en issues
- Contacta por email
¡Gracias por contribuir!
Hecho con ❤️ por DeepRatAI