API desarrollada en FastAPI para permitir el registro de planes de prevención y descontaminación ambiental, así como el registro de reportes de las medidas requeridas por los organismos sectoriales.
Antes de comenzar, asegúrate de tener instalado:
- Python (ver versión requerida en
pyproject.toml
) - Poetry (gestor de dependencias)
- Uvicorn (para ejecutar el servidor)
- PostgreSQL 17.2.3 (base de datos)
brew install pipx
pipx install poetry
py -m pip install pipx
pipx install poetry==1.8.5
Ejecuta el siguiente comando en la raíz del proyecto:
poetry install
⚠ Nota: Si hay problemas con la versión de Python detectada por Poetry, usa:
poetry env use path/to/python.exe
Luego, vuelve a instalar las dependencias con poetry install
.
Si la versión de Poetry instalada tiene el comando shell
, usa:
poetry shell
Si no está disponible, activa manualmente el entorno virtual con:
source .venv/bin/activate # En macOS/Linux
.venv\Scripts\activate # En Windows
uvicorn main:app --reload
Si alguien hace un push con nuevas dependencias y necesitas actualizarlas, ejecuta:
poetry lock
poetry install
Si el archivo .env
no existe en el directorio del proyecto, créalo con el siguiente contenido:
APP_TIMEZONE_LOCAL=America/Santiago
DB_DBNAME=
DB_USER=postgres
DB_PASSWORD=
DB_HOST=localhost
DB_PORT=5432
TOKEN_ALGORITHM=HS256
TOKEN_SECRET_KEY=
ACCESS_TOKEN_EXPIRE_MINUTES=30
REFRESH_TOKEN_EXPIRE_DAYS=7
Nota: Asegúrate de modificar los valores según la configuración de tu base de datos.
La aplicación utiliza PostgreSQL 17.2.3 como base de datos.
A continuación, se presentan los diagramas de entidad-relación con los modelos planteados:
Para el correcto funcionamiento de la aplicación, se debe montar el siguiente backup en la base de datos:
⚠ Nota: Es necesario restaurar este backup antes de ejecutar la aplicación para garantizar la disponibilidad de los modelos requeridos.
G3_BackEndPython/
├──📁 .venv ------------------ Ambiente virtual python
├── 📁 alembic/ -------------- Configuración y migraciones de la base de datos
├── 📁 app/ ------------------ Código principal de la aplicación
│ ├── 📁 db/ --------------- Modelos y configuración de la base de datos
│ ├── 📁 routes/ ----------- Rutas y endpoints de la API
│ ├── 📁 shared/ ----------- Utilidades y código compartido
│ ├── 🗎 config.py ---------- Configuración de la aplicación
│ └── 🗎 main.py ------------ Punto de entrada de la aplicación
├── 📁 tests/ ---------------- Tests de la aplicación
│ ├── 📁 utils/ ------------ Utilidades para testing
│ └── 🗎 test_(...).py ------ Scripts de los tests
├── 📁 docs/ ----------------- Documentación del proyecto
├── 📁 .github/ -------------- Configuración para GitHub (CI/CD, etc.)
├── 📁 .vscode/ -------------- Configuración de VS Code
├── 🗎 .gitignore ------------- Listado de archivos y carpetas que se ignoraran en el repositorio
├── 🗎 alembic.ini ------------ Configuración de Alembic
├── 🗎 pyproject.toml --------- Configuración de Poetry y dependencias
├── 🗎 poetry.lock ------------ Bloqueo de versiones de dependencias
├── 🗎 requirements.txt ------- Dependencias del proyecto
└── 🗎 README.md -------------- Documentación del repositorio
Equivalente a un super admin, tiene permiso para aplicar cualquier método 👁️✍️🔄🗑️ en todos los endpoints (Ver documentación en Swagger).
Credenciales para probar este rol:
Usuario
[email protected]
Contraseña
123456
Es el usuario de la SMA que tiene acceso a los siguientes endpoints métodos y endpoints
Credenciales para probar este rol:
Usuario
[email protected]
Contraseña
123456
-
**Regiones:**👁️
GET
(Listar todas y obtener por ID). -
**Comunas:**👁️
GET
(Listar todas y obtener por ID). -
**Planes:**👁️
GET
(Listar todos y obtener por ID). -
**Frecuencias:**👁️
GET
(Listar todas y obtener por ID). -
**Tipos de Medidas:**👁️
GET
(Listar todos y obtener por ID). -
**Tipos de Datos:**👁️
GET
(Listar todos y obtener por ID). -
**Opciones:**👁️
GET
(Listar todas y obtener por ID). -
**Medidas:**👁️
GET
(Listar todas y obtener por ID). -
**Vinculación Medida-Opción:**👁️
GET
(Listar opciones asociadas a cualquier medida). -
**Reportes:**👁️
GET
(Listar todos los reportes y obtener por ID). -
**Medios de Verificación:**👁️
GET
(Listar todos los medios de verificación y obtener por ID). -
❌Nota: No tiene acceso a la gestión de Usuarios.
Es el usuario perteneciente a algún organismo sectorial que tiene acceso a los siguientes métodos y endpoints
Credenciales para probar este rol:
Usuario
[email protected]
Contraseña
123456
-
**Regiones:**👁️
GET
(Listar todas y obtener por ID). -
**Comunas:**👁️
GET
(Listar y obtener por ID, filtrado automáticamente para mostrar solo comunas pertenecientes a planes con medidas que el organismo debe reportar). -
**Planes:**👁️
GET
(Listar y obtener por ID, filtrado automáticamente para mostrar solo planes que contienen medidas que el organismo debe reportar). -
**Frecuencias:**👁️
GET
(Listar todas y obtener por ID). -
**Tipos de Medidas:**👁️
GET
(Listar todos y obtener por ID). -
**Tipos de Datos:**👁️
GET
(Listar todos y obtener por ID). -
**Opciones:**👁️
GET
(Listar todas y obtener por ID). -
**Medidas:**👁️
GET
(Listar y obtener por ID, filtrado automáticamente para mostrar solo las medidas que el organismo debe reportar). -
**Vinculación Medida-Opción:**👁️
GET
(Listar opciones asociadas a una medida, solo si la medida es una que el organismo debe reportar). -
Reportes:
- 👁️
GET
: Listar y obtener por ID (solo los reportes creados por su organismo). - ✍️
POST
: Crear nuevos reportes (para su organismo). - 🔄
PUT
: Actualizar reportes existentes (solo los propios). - 🗑️
DELETE
: Eliminar reportes (solo los propios).
- 👁️
-
Medios de Verificación:
- 👁️
GET
: Listar y obtener por ID (solo los asociados a medidas/reportes de su organismo). - ✍️
POST
: Crear nuevos medios de verificación (para sus reportes). - 🔄
PUT
: Actualizar medios de verificación existentes (solo los propios). - 🗑️
DELETE
: Eliminar medios de verificación (solo los propios).
- 👁️
-
❌Nota: No tiene acceso a la gestión de Usuarios ni a la gestión directa de Regiones, Comunas, Frecuencias, Tipos, Opciones o Medidas más allá de la lectura filtrada.