🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
255 lines
6.6 KiB
Markdown
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
|