🛠️ Estructura del Proyecto
Comprender la estructura de directorios y archivos del proyecto P2P Dashboard es fundamental para navegar por el código, identificar dónde se encuentran las diferentes funcionalidades y contribuir de manera efectiva. Este documento describe la organización del repositorio.
P2P-Dashboard/
├───.dockerignore
├───.env.template
├───.gitignore
├───.python-version
├───alembic.ini
├───Dockerfile
├───pyproject.toml
├───README.md
├───requirements-dev.txt
├───requirements.txt
├───alembic/
│ ├───env.py
│ ├───README
│ ├───script.py.mako
│ └───versions/ # Contiene las migraciones de la base de datos
├───docs/ # Documentación del proyecto (no la que estamos generando ahora)
│ └───...
├───logs/
│ └───p2p_api.log # Archivo de logs de la aplicación
├───p2p_api/
│ ├───__init__.py
│ ├───auth.py # Lógica de autenticación y autorización
│ ├───binance_scraper.py # Lógica para scraping de Binance (puede ser movido a Workers externos)
│ ├───bybit_scraper.py # Lógica para scraping de Bybit (puede ser movido a Workers externos)
│ ├───config.py # Configuración de la aplicación
│ ├───crud.py # Operaciones CRUD para la base de datos
│ ├───database.py # Configuración de la conexión a la base de datos
│ ├───dependencies.py # Dependencias de FastAPI (ej. inyección de dependencias)
│ ├───exceptions.py # Excepciones personalizadas
│ ├───logging_config.py # Configuración del sistema de logging
│ ├───main.py # Punto de entrada principal de la aplicación FastAPI
│ ├───schemas.py # Modelos de datos Pydantic para validación y serialización
│ ├───services.py # Lógica de negocio y servicios
│ └───routers/ # Módulos de rutas de FastAPI
│ ├───__init__.py
│ ├───admin.py # Rutas administrativas
│ └───...
├───tests/
│ ├───conftest.py
│ ├───test_main.py # Pruebas unitarias y de integración
│ └───...
└───mkdocs_production/ # Directorio de la documentación generada (este proyecto)
├───docs/ # Archivos Markdown de la documentación
├───mkdocs.yml # Configuración de MkDocs
└───site/ # Sitio web estático generado por MkDocs
Descripción de Directorios y Archivos Clave
-
/(Raíz del Proyecto):.env.template: Plantilla para las variables de entorno. Debe copiarse a.envy configurarse..gitignore: Define los archivos y directorios que Git debe ignorar.alembic.ini: Archivo de configuración para Alembic, la herramienta de migraciones de base de datos.Dockerfile: Define la imagen de Docker para la aplicación.pyproject.toml: Archivo de configuración para herramientas de construcción y gestión de proyectos Python (ej.poetry,flit).README.md: Descripción general del proyecto y guía de inicio rápido.requirements.txt: Dependencias de producción del proyecto.requirements-dev.txt: Dependencias de desarrollo del proyecto.
-
alembic/:- Contiene los scripts de migración de la base de datos generados por Alembic. Cada archivo en
versions/representa una migración específica que modifica el esquema de la base de datos.
- Contiene los scripts de migración de la base de datos generados por Alembic. Cada archivo en
-
logs/:- Almacena los archivos de log generados por la aplicación, como
p2p_api.log.
- Almacena los archivos de log generados por la aplicación, como
-
p2p_api/:- El directorio principal de la aplicación FastAPI.
main.py: El punto de entrada de la aplicación FastAPI, donde se inicializa la aplicación y se incluyen las rutas.auth.py: Contiene la lógica para la autenticación de usuarios y la generación/validación de tokens (JWT).config.py: Define las configuraciones de la aplicación, a menudo cargadas desde variables de entorno.crud.py: Implementa las operaciones de Crear, Leer, Actualizar y Eliminar (CRUD) para interactuar con la base de datos a través de SQLAlchemy.database.py: Configura la conexión a la base de datos y la sesión de SQLAlchemy.dependencies.py: Define funciones de inyección de dependencias para FastAPI, como la obtención de la sesión de base de datos o la validación de API Keys.exceptions.py: Define excepciones personalizadas para manejar errores específicos de la aplicación.logging_config.py: Configura el sistema de logging de la aplicación.schemas.py: Contiene los modelos Pydantic que definen la estructura de los datos de entrada y salida de la API, utilizados para validación y serialización/deserialización.services.py: Contiene la lógica de negocio compleja que orquesta las operaciones CRUD y otras interacciones.routers/: Subdirectorio que organiza las rutas de la API en módulos lógicos (ej.admin.pypara rutas de administración).binance_scraper.py/bybit_scraper.py: Módulos que contienen la lógica de scraping para Binance y Bybit. Nota: En la arquitectura final, esta lógica debería residir en los Workers externos (Capa 1.A) y no directamente en la API de Ingesta, que solo debería recibir datos.
-
tests/:- Contiene las pruebas unitarias y de integración para la aplicación. Es crucial para asegurar la calidad y el correcto funcionamiento del código.
-
mkdocs_production/:- Este es el directorio donde se genera y configura la documentación técnica que estás leyendo. Contiene:
docs/: Todos los archivos Markdown que componen el contenido de la documentación.mkdocs.yml: El archivo de configuración principal de MkDocs, que define la estructura de navegación, el tema, las extensiones, etc.site/: El directorio donde MkDocs genera el sitio web estático final (HTML, CSS, JS) listo para ser desplegado.
- Este es el directorio donde se genera y configura la documentación técnica que estás leyendo. Contiene:
Esta estructura facilita la organización del código, la colaboración entre desarrolladores y la escalabilidad del proyecto.