inmobiliaria-analytics/docs/00-vision-general/ARQUITECTURA-GENERAL.md
rckrdmrd f570727617 feat: Documentation and orchestration updates
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:35:40 -06:00

255 lines
6.6 KiB
Markdown

---
id: "ARCH-IA"
title: "Arquitectura General - Inmobiliaria Analytics"
type: "Architecture Document"
version: "1.0.0"
status: "Draft"
created_date: "2026-01-04"
updated_date: "2026-01-04"
---
# Arquitectura General - Inmobiliaria Analytics
---
## Vision Arquitectonica
Arquitectura basada en microservicios con separacion clara entre frontend, backend y datos, optimizada para analytics de alto rendimiento.
---
## Diagrama de Alto Nivel
```
+------------------+
| Load Balancer |
| (Traefik) |
+--------+---------+
|
+-----------------+-----------------+
| |
+----------v----------+ +-----------v-----------+
| Frontend | | Backend |
| React + Vite | | NestJS |
| Puerto: 3100 | | Puerto: 3101 |
+----------+----------+ +-----------+-----------+
| |
| +--------------+--------------+
| | | |
| +--------v----+ +------v------+ +----v-----+
| | Auth | | Properties | | Analytics|
| | Module | | Module | | Module |
| +--------+----+ +------+------+ +----+-----+
| | | |
| +--------------+--------------+
| |
| +--------------v--------------+
| | PostgreSQL |
+--------------------+ Puerto: 5439 |
| Schemas: public, |
| properties, analytics |
+-----------------------------+
|
+-------------v-------------+
| Redis |
| Puerto: 6386 |
| Cache + Sessions |
+---------------------------+
```
---
## Capas de la Arquitectura
### 1. Capa de Presentacion (Frontend)
| Componente | Tecnologia | Proposito |
|------------|------------|-----------|
| SPA | React 18.x | Interfaz de usuario |
| Build | Vite | Bundling y desarrollo |
| Estado | Zustand | Manejo de estado global |
| UI Kit | Tailwind CSS | Estilos |
| Charts | Recharts | Visualizaciones |
### 2. Capa de Aplicacion (Backend)
| Componente | Tecnologia | Proposito |
|------------|------------|-----------|
| API Server | NestJS 10.x | Framework HTTP |
| ORM | TypeORM 0.3.x | Acceso a datos |
| Auth | Passport + JWT | Autenticacion |
| Validation | class-validator | Validacion de DTOs |
| Docs | Swagger/OpenAPI | Documentacion API |
### 3. Capa de Datos
| Componente | Tecnologia | Proposito |
|------------|------------|-----------|
| RDBMS | PostgreSQL 16 | Datos principales |
| Cache | Redis 7 | Caching y sesiones |
| Search | (Futuro) Elasticsearch | Busqueda avanzada |
---
## Modulos del Sistema
### IA-001: Fundamentos
```
src/modules/
├── auth/ # Autenticacion y autorizacion
│ ├── auth.module.ts
│ ├── auth.service.ts
│ ├── auth.controller.ts
│ ├── strategies/
│ │ ├── jwt.strategy.ts
│ │ └── local.strategy.ts
│ └── guards/
│ └── jwt-auth.guard.ts
└── users/ # Gestion de usuarios
├── users.module.ts
├── users.service.ts
└── entities/
└── user.entity.ts
```
### IA-002: Propiedades (Planificado)
```
src/modules/
├── properties/ # CRUD de propiedades
├── locations/ # Ubicaciones geograficas
└── valuations/ # Valuaciones
```
### IA-003: Analytics (Planificado)
```
src/modules/
├── analytics/ # Motor de analytics
├── reports/ # Generacion de reportes
└── dashboards/ # Configuracion de dashboards
```
---
## Esquemas de Base de Datos
### Schema: public
Tablas de sistema y usuarios:
- `users` - Usuarios del sistema
- `roles` - Roles y permisos
- `sessions` - Sesiones activas
### Schema: properties
Datos inmobiliarios:
- `properties` - Catalogo de propiedades
- `property_types` - Tipos (casa, depto, etc)
- `locations` - Ubicaciones geograficas
- `valuations` - Historial de valuaciones
### Schema: analytics
Datos analiticos:
- `market_trends` - Tendencias de mercado
- `price_indices` - Indices de precios
- `reports` - Reportes generados
---
## Flujos Principales
### Autenticacion
```
1. Usuario envia credenciales
2. Backend valida con LocalStrategy
3. Si valido, genera JWT
4. Frontend almacena token
5. Requests subsecuentes incluyen Bearer token
6. JwtAuthGuard valida en cada request protegido
```
### Consulta de Analytics
```
1. Frontend solicita datos del dashboard
2. Backend verifica cache en Redis
3. Si cache hit, retorna datos
4. Si cache miss:
a. Consulta PostgreSQL
b. Procesa/agrega datos
c. Almacena en cache
d. Retorna al frontend
5. Frontend renderiza visualizaciones
```
---
## Decisiones Arquitectonicas
| ID | Titulo | Estado |
|----|--------|--------|
| [ADR-001](../97-adr/ADR-001-stack-tecnologico.md) | Stack Tecnologico | Aceptado |
---
## Seguridad
### Autenticacion
- JWT con expiracion configurable
- Refresh tokens para renovacion
- Bcrypt para hash de passwords
### Autorizacion
- RBAC (Role-Based Access Control)
- Guards en endpoints protegidos
- Validacion de permisos por recurso
### Comunicacion
- HTTPS obligatorio en produccion
- CORS configurado por ambiente
- Rate limiting en endpoints publicos
---
## Escalabilidad
### Horizontal
- Stateless backend (JWT)
- Sessions en Redis
- Load balancing con Traefik
### Vertical
- Indices optimizados en PostgreSQL
- Query optimization
- Connection pooling
---
## Monitoreo
| Aspecto | Herramienta |
|---------|-------------|
| Logs | stdout + Docker logs |
| Metricas | Prometheus (futuro) |
| Alertas | Alertmanager (futuro) |
| APM | OpenTelemetry (futuro) |
---
## Referencias
- [STACK-TECNOLOGICO.md](./STACK-TECNOLOGICO.md)
- [ADR-001-stack-tecnologico.md](../97-adr/ADR-001-stack-tecnologico.md)
- [service.descriptor.yml](../../apps/backend/service.descriptor.yml)
---
**Documento:** Arquitectura General
**Version:** 1.0.0
**Estado:** Draft
**Ultima actualizacion:** 2026-01-04