# TechZone POS: direcciones, funciones y comprobacion

**Comprobado:** 14 de octubre de 2026 (UTC-06:00), incluyendo el despliegue del módulo Consultorio clínico
**IP de los subdominios:** `135.237.98.79`

Este documento resume las aplicaciones, paginas, servicios y estado observado en produccion. Los codigos HTTP y DNS son una fotografia de la comprobacion indicada arriba; pueden cambiar despues de un despliegue.

## Directorio de aplicaciones y servicios

| Direccion | Funcion | Comprobacion |
|---|---|---|
| <https://tzpos.vexialabs.world/> | Aplicacion web TechZone POS: ventas, caja, catalogo, inventario y gestion segun la licencia. | HTTPS 200 |
| <https://tzposm.vexialabs.world/> | Aplicacion/acceso movil de POS y origen existente del manifiesto de actualizacion OTA. | HTTPS 200 |
| <https://consultoriotz.vexialabs.world/> | TechZone Consultorio: aplicacion y sesiones propias, separadas de POS; atencion, agenda y pacientes. | HTTPS 200 |
| <https://api.pos.vexialabs.world/health> | Estado de disponibilidad del API POS. | HTTPS 200 |
| <https://api.pos.vexialabs.world/docs> | Documentacion interactiva de las rutas del API. | HTTPS 200 |
| <https://api.pos.vexialabs.world/openapi.json> | Esquema OpenAPI de la version del API publicada. | HTTPS 200 |
| <https://api.pos.vexialabs.world/api/v1/setup/business-modules> | Lectura/guardado de giros habilitados; requiere autenticacion y permiso administrativo. | Ruta publicada en OpenAPI; requiere credenciales |
| `/api/v1/clinic/*` | Expedientes, consultas, perfil profesional y recetas; requiere autenticacion. | Rutas en OpenAPI; 401 sin sesion |
| <https://tzposm.vexialabs.world/updates/manifest.json> | Manifiesto OTA consultado por la app movil. No es el catalogo publico de instaladores. | HTTPS 200; POS 0.1.21, build 22 |
| <https://techzonepos.vexialabs.world/> | Portal oficial multipagina con accesos, descargas, guia y solicitud de factura. | HTTPS 200; certificado valido |
| <https://techzonepos.vexialabs.world/direcciones/> | Directorio web de URLs, funciones y estado. | HTTPS 200 |
| <https://techzonepos.vexialabs.world/descargas/> | Descargas actuales: POS 0.1.21 y Consultorio 1.0.1. | HTTPS 200; siete paquetes publicados |
| `/licencias/` | Panel privado del emisor, protegido por autenticacion HTTP del servidor y clave de emisor. | HTTPS 401 sin credenciales; HTTPS 200 con autenticacion Basic |

### DNS, TLS y paginas del portal

`techzonepos.vexialabs.world` **ya resuelve** a `135.237.98.79`. Tambien resuelven a esa IP `api.pos.vexialabs.world`, `tzpos.vexialabs.world`, `tzposm.vexialabs.world` y `consultoriotz.vexialabs.world`.

El vhost de Nginx sirve el portal desde `/home/azureuser/techzonepos-web` por HTTPS, y el certificado valido de Let's Encrypt cubre `techzonepos.vexialabs.world`. HTTP redirige a HTTPS. Las paginas principales, el catalogo y los cinco paquetes devolvieron respuestas correctas en las verificaciones descritas mas abajo.

## Paginas publicadas del portal multipagina

Los archivos fuente estan en `Backends/techzone_pos_web/`; el portal publico esta en `https://techzonepos.vexialabs.world/`.

| Ruta | Funcion | Estado observado |
|---|---|---|
| `/` | Inicio, resumen de la solucion y navegacion. | HTTPS 200 |
| `/accesos/` | Accesos directos a POS web, POS movil, Consultorio, API y ayuda. | HTTPS 200 |
| `/descargas/` | Catalogo de versiones, instaladores MSI/ZIP y sumas SHA-256. | HTTPS 200; POS 0.1.21 y Consultorio 1.0.1 |
| `/manual/` | Guia de usuario imprimible/guardable como PDF en papel Carta. | HTTPS 200 |
| `/facturacion/` | Solicitud de factura asociada a una venta pagada. No emite CFDI. | HTTPS 200; API fiscal no incluida |
| `/direcciones/` | Directorio web HTML con aplicaciones y comprobaciones. | HTTPS 200 |
| `/cuenta/` | Registro de negocio/cuenta o canje del mismo codigo para ampliar un negocio existente. | HTTPS 200 |
| `/licencias/` | Panel privado del emisor; no se enlaza desde navegacion publica. | HTTP Basic Auth y clave central del emisor |
| `/updates/downloads.json` | Catalogo publico de instaladores, separado de OTA. | HTTPS 200; siete paquetes |

El catalogo publica siete paquetes versionados (MSI, ZIP portables, APK y ZIP web) con sus SHA-256. POS 0.1.21 incluye cuatro artefactos (Windows MSI/ZIP, Android APK y Web ZIP); Consultorio 1.0.1 conserva tres. El manifiesto OTA se actualizo a POS 0.1.21, build 22.

## Funciones de las aplicaciones

### POS

- Venta, caja, productos, clientes, inventario, compras y reportes.
- Para negocios habilitados: restaurante con comandas/flujo de cocina; farmacia con recetas, lotes y dispensacion; y servicios con cotizaciones, proyectos y seguimiento, segun lo instalado y licenciado.
- Las recetas deben conservar la unidad elegida para cada ingrediente (por ejemplo, g); cambiar entre Kg y g requiere conversion correcta de cantidad y consumo.
- La configuracion de giros esta publicada en `GET/PATCH /api/v1/setup/business-modules`; requiere cuenta administradora del negocio.
- La administracion central esta en `/licencias/`; la pagina requiere autenticacion HTTP Basic de Nginx y las operaciones API requieren `TZ_ACTIVATION_ISSUER_KEY`.
- La base productiva ya migro las unidades de receta, las licencias por tenant, las sesiones por plataforma, los vouchers y el modulo clinico hasta Alembic `c7d8e9f01234`.
- Todos los codigos de licencia son unicos y de un solo uso. Al registrarse crean un negocio con 1/2/2 sesiones; al canjearse con el administrador de un negocio existente agregan +1/+2/+2 a ese negocio.
- Cada licencia admite hasta siete cuentas de usuario activas, incluido el titular. Dar de baja una cuenta bloquea sus sesiones, conserva su historial y libera un espacio.
- No se corrigieron automaticamente cantidades existentes como `200 Kg`; debe confirmarse la cantidad real antes de editar para evitar una conversion destructiva.

### Consultorio

- Aplicacion y sesiones independientes de POS; no comparte el cupo de sesiones POS.
- La direccion publicada comprobada es `consultoriotz.vexialabs.world`.
- El limite base de Consultorio es de 2 sesiones por negocio y se incrementa mediante vouchers asociados al mismo negocio.

### Dispositivos POS, Comandas, Cocina y Gestion

- El limite base de POS es de 1 sesion Windows/Web y 2 Android; los vouchers amplian esos cupos en +1 y +2, respectivamente.
- Comandas, Cocina y Gestion son superficies de la operacion POS, no subdominios independientes en este directorio.
- La cuenta demo se probo con inicio/cierre de sesion y se confirmo el estado activo; las sesiones activas de validacion quedaron cerradas.

### Servicios profesionales

La licencia demo tiene habilitados los giros Tienda, Farmacia, Restaurante y Servicios. Las funciones disponibles siguen dependiendo de los permisos de cada usuario y de los endpoints incluidos en la aplicacion.

### Facturacion, proveedores externos y firma

- El portal de solicitud de factura no sustituye la emision fiscal; la integracion de CFDI/SAT sigue pendiente.
- Pasarelas externas y enlaces de pago, conciliacion bancaria SPEI/ACH e integraciones de terceros no se deben dar por implementados por aparecer en este directorio.
- Firma digital certificada se dejo fuera del alcance de construccion por instruccion previa.

## Matriz de comprobacion HTTP

Consultas HTTPS efectuadas el 12 de octubre de 2026, despues del despliegue:

| Prueba | Resultado |
|---|---:|
| `https://tzpos.vexialabs.world/` | 200 |
| `https://tzposm.vexialabs.world/` | 200 |
| `https://consultoriotz.vexialabs.world/` | 200 |
| `https://api.pos.vexialabs.world/health` | 200 |
| `https://api.pos.vexialabs.world/docs` | 200 |
| `https://api.pos.vexialabs.world/openapi.json` | 200 |
| `https://api.pos.vexialabs.world/api/v1/setup/business-modules` | Ruta publicada; requiere autenticacion/autorizacion |
| `https://api.pos.vexialabs.world/api/v1/licenses/` | Ruta publicada; requiere clave central del emisor |
| `https://tzpos.vexialabs.world/direcciones/` | 200 |
| `https://tzposm.vexialabs.world/updates/manifest.json` | 200 |
| `https://techzonepos.vexialabs.world/` | 200; TLS valido |
| `https://techzonepos.vexialabs.world/assets/site.css` | 200 |
| `https://techzonepos.vexialabs.world/assets/TZLogo.png` | 200 |
| `https://techzonepos.vexialabs.world/accesos/` | 200 |
| `https://techzonepos.vexialabs.world/cuenta/` | 200 |
| `https://techzonepos.vexialabs.world/licencias/` | 401 sin Basic Auth; 200 con credenciales administrativas |
| `https://techzonepos.vexialabs.world/descargas/` | 200 |
| `https://techzonepos.vexialabs.world/manual/` | 200 |
| `https://techzonepos.vexialabs.world/direcciones/` | 200 |
| `https://techzonepos.vexialabs.world/facturacion/` | 200 |
| `https://techzonepos.vexialabs.world/updates/downloads.json` | 200 |
| Siete URL de paquetes declaradas en `downloads.json` | 200 en comprobacion HTTPS; SHA-256 verificado local y en VM |

Las respuestas `206` corresponden a la solicitud de rango `0-0`, que confirma que cada paquete se sirve sin descargar el archivo completo durante la comprobacion.

## Compilaciones y distribuciones listas para probar

Se compilaron en modo release POS 0.1.21 para Windows x64, Android ARM64 APK y Web. Sus cuatro artefactos estan publicados con SHA-256 verificado. Consultorio 1.0.1 conserva sus tres paquetes publicados.

## Respaldos y cambios en produccion

Antes del despliegue se respaldaron la base SQLite, el codigo del release activo, el portal, Nginx, la unidad de systemd y el archivo de credenciales HTTP. Se verificaron la integridad de SQLite y los SHA-256. El respaldo previo a este despliegue esta en `techzone-pos-backups/pre-deploy-20261014T063659Z` y `techzone-pos-deploy-backups/pre-deploy-20261014T063659Z`. El servicio activo es `/home/azureuser/techzone-pos-release-0.1.21`; se conserva `/home/azureuser/techzone-pos-release-0.1.19` para rollback.

La migracion completa se probo primero sobre una copia con vouchers existentes y luego se aplico en produccion hasta Alembic `c7d8e9f01234`; SQLite aprobo `integrity_check` antes y despues del cambio. El API y las paginas publicas responden HTTPS 200. `/licencias/` devuelve 401 sin autenticacion y 200 con Basic Auth; las rutas administrativas del API rechazan solicitudes sin la clave central. La clave Fernet de datos clinicos se guarda en `.env` con permisos restringidos y su valor no se publica en este documento.

La cuenta demo es `demo-techzone-20261013` (`demo@techzonepos.test`), con licencia activa y los cuatro giros habilitados. La contrasena se entrego por separado al propietario y no se almacena en el portal ni en este archivo.
