Skip to content

Commit 64985f6

Browse files
committed
docs: mark phase two profile and photos as implemented
1 parent 0680d02 commit 64985f6

3 files changed

Lines changed: 446 additions & 5 deletions

File tree

PLAN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# LLMatch v2 — plan de ejecución
22

3-
Estado: **aprobado el 5 de agosto de 2026**. La Fase 0 y la Fase 1 están implementadas y validadas; no se iniciará la Fase 2 sin la revisión y confirmación previstas entre fases.
3+
Estado: **aprobado el 5 de agosto de 2026**. Las Fases 0, 1 y 2 están implementadas y validadas; no se iniciará la Fase 3 sin la revisión y confirmación previstas entre fases.
44

55
## 1. Alcance y decisiones cerradas
66

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# LLMatch v2
22

3-
Reescritura segura de LLMatch como monorepo Go + React. La implementación avanza por las fases aprobadas en [PLAN.md](PLAN.md); actualmente están implementadas la **Fase 0 — Fundación** y la **Fase 1 — Auth**.
3+
Reescritura segura de LLMatch como monorepo Go + React. La implementación avanza por las fases aprobadas en [PLAN.md](PLAN.md); actualmente están implementadas la **Fase 0 — Fundación**, la **Fase 1 — Auth** y la **Fase 2 — Perfil y fotos**.
44

55
## Requisitos
66

@@ -70,4 +70,11 @@ Healthchecks:
7070
- Refresh token opaco de 256 bits en cookie `HttpOnly`, `Secure` en producción, `SameSite=Strict` y `Path=/api/v1/auth`; rota en cada uso y revoca toda su familia si se detecta reutilización.
7171
- El middleware de rutas autenticadas es fail-closed: si Redis no responde al comprobar el `jti`, la respuesta es `503 AUTH_DEPENDENCY_UNAVAILABLE` y el handler protegido nunca se ejecuta.
7272
- Rate limiting distribuido en Redis por IP y por email normalizado, con backoff progresivo ante intentos repetidos en register y login.
73-
- El resto de funcionalidades (perfiles, discovery, mensajería, verificación de email, recuperación de contraseña) no pertenecen a esta fase y no se anuncian como implementadas.
73+
74+
## Perfil y fotos (Fase 2)
75+
76+
- Endpoints `GET/PUT /profile`, `GET/PUT /profile/preferences`, `GET/POST /profile/photos`, `GET /profile/photos/{id}/content`, `PUT /profile/photos/order`, `PUT /profile/photos/{id}/primary`, `DELETE /profile/photos/{id}` y `POST/GET/DELETE /account/consents[/{purpose}]`. Contrato completo en [api/openapi.yaml](api/openapi.yaml).
77+
- `user_preferences.genders` es una categoría especial (RGPD art. 9): nunca se guarda sin un consentimiento activo y separado en `privacy_consents`; retirarlo borra el valor en la misma transacción que revoca el consentimiento.
78+
- Fotos: máximo 6, JPEG/PNG/WebP hasta 10 MiB, MIME y dimensiones detectados decodificando el contenido real (nunca la extensión ni el nombre original), clave de almacenamiento basada en UUID. Storage local en desarrollo, S3 (AWS SDK v2) en producción, con compensación automática si falla la base de datos tras subir el blob.
79+
- Borrado de foto: lógico y síncrono; la limpieza del blob es asíncrona y best-effort. Si se borra la foto principal, se promueve automáticamente otra restante.
80+
- El resto de funcionalidades (discovery, mensajería, verificación de email, recuperación de contraseña) no pertenecen a esta fase y no se anuncian como implementadas.

0 commit comments

Comments
 (0)