NOTICE Asistencia Biométrica — BAST Colombia ===================================== Este producto incorpora y redistribuye trabajo de terceros. Abajo está cada uno, con su titular, su licencia y su procedencia. POR QUÉ ESTE ARCHIVO EXISTE --------------------------- El producto se explota como SERVICIO: el software corre en servidores de BAST Colombia y los clientes lo usan por la red. Nadie recibe una copia del servidor, ni una imagen de Docker, ni un instalador. Eso importa, porque en licencias de código abierto **usar y distribuir son cosas distintas**. Bajo MIT, Apache 2.0, BSD y LGPL, ejecutar el software en un servidor propio para prestar un servicio NO es distribución, y no dispara la obligación de entregar avisos ni código a quien usa el servicio. (La licencia que sí se dispara con el uso en red es la AGPL. Aquí no hay ninguna dependencia AGPL: se auditaron los 33 paquetes del servicio el 10-sep-2026.) PERO HAY UNA MITAD QUE SÍ VIAJA ------------------------------- El kiosco es una aplicación web, y para reconocer rostros SIN CONEXIÓN el navegador tiene que tener los modelos. Así que el servicio ENVÍA al dispositivo ~40 MB de modelos entrenados por terceros y una copia de ONNX Runtime Web, y el Service Worker los GUARDA allí de forma permanente. Eso ya no es solo uso: es una copia completa de software ajeno transferida a un aparato que el servicio no controla, y que sobrevive a la conexión. Esa mitad —la del dispositivo— es la que este archivo cubre, y es la única que lo necesita. Las licencias MIT y Apache 2.0 permiten uso comercial sin pagar nada, y a cambio piden lo mismo: que el aviso de copyright y el texto de la licencia viajen con el software. La Apache 2.0 lo detalla en su sección 4 — conservar los avisos, incluir copia de la licencia, y declarar los archivos modificados. Por eso el aviso no vive solo en el repositorio: se sirve en /aviso-licencias, desde el mismo servidor que entrega los modelos. Y hay una razón propia: el argumento comercial de esta solución se sostiene sobre las licencias. Se descartó InsightFace —cuyo código es MIT pero cuyos PESOS PREENTRENADOS son solo para investigación no comercial— justamente por rigor. Si después no se atribuye lo que sí se usa, el argumento se cae solo, y una revisión legal del cliente lo va a mirar. DECLARACIÓN DE MODIFICACIONES (Apache 2.0, §4.b) ------------------------------------------------ Los modelos .onnx se ejecutan TAL CUAL, sin reentrenar, sin afinar y sin alterar sus pesos. No se ha modificado ningún archivo de los componentes listados abajo. El preprocesamiento (detección, alineación, recorte) y todo el código del servicio, del módulo de Odoo y del kiosco son obra propia de BAST Colombia. =============================================================================== MODELOS DE VISIÓN (se redistribuyen a cada dispositivo) =============================================================================== YuNet — detección de rostro y 5 puntos de referencia Archivo face_detection_yunet_2023mar.onnx (227 KB) Licencia MIT Copyright Copyright (c) 2020 Shiqi Yu Origen OpenCV Zoo https://github.com/opencv/opencv_zoo models/face_detection_yunet/LICENSE Texto licenses/MIT-YuNet.txt SFace — vector facial de 128 dimensiones Archivo face_recognition_sface_2021dec.onnx (37 MB) Licencia Apache License 2.0 «All files in this directory are licensed under Apache 2.0 License» (README del modelo). El archivo LICENSE del directorio es el texto Apache 2.0 sin titular rellenado; el crédito viene del README. Créditos Modelo aportado por Yaoyao Zhong; conversión a ONNX por Chengrui Wang. Basado en el código original de SFace (https://github.com/zhongyy/SFace) y en el artículo https://ieeexplore.ieee.org/document/9318547 Arquitectura MobileFaceNet entrenada con la función de pérdida SFace (arXiv:2205.12010). Origen OpenCV Zoo https://github.com/opencv/opencv_zoo models/face_recognition_sface/ Texto licenses/Apache-2.0.txt MiniFASNet v2 — prueba de vida pasiva (anti-suplantación) Archivo minifasnet_v2.onnx (1,7 MB) Licencia Apache License 2.0 Copyright Copyright 2020 Minivision (Beijing Mininglamp Vision Technology Co., Ltd.) Origen Silent-Face-Anti-Spoofing https://github.com/minivision-ai/Silent-Face-Anti-Spoofing Conversión ONNX redistribuida en Hugging Face: garciafido/minifasnet-v2-anti-spoofing-onnx Declara Apache 2.0 y explícitamente NO reclama autoría ni entrenamiento del modelo, solo la conversión de formato. Texto licenses/Apache-2.0.txt =============================================================================== CÓDIGO QUE SE SIRVE AL NAVEGADOR (se redistribuye a cada dispositivo) =============================================================================== ONNX Runtime Web Archivos static/vendor/ort.wasm.min.js static/vendor/ort-wasm-simd-threaded.wasm static/vendor/ort-wasm-simd-threaded.mjs Licencia MIT Copyright (c) Microsoft Corporation Origen https://github.com/microsoft/onnxruntime Texto licenses/MIT-onnxruntime.txt =============================================================================== DEPENDENCIAS DEL SERVICIO (versiones fijadas en service/requirements.txt) =============================================================================== Estas NO se distribuyen: corren en el servidor y nadie recibe una copia. Se listan por transparencia y para poder auditarlas, no porque haya obligación de publicarlas mientras el producto se explote como servicio. onnxruntime 1.29.0 MIT (c) Microsoft Corporation opencv-python-headless 5.0.0.93 Apache-2.0 (c) OpenCV team numpy 2.5.2 BSD-3-Clause (c) NumPy Developers fastapi 0.141.1 MIT (c) Sebastián Ramírez starlette 1.6.0 BSD-3-Clause (c) Encode OSS Ltd. uvicorn 0.52.4 BSD-3-Clause (c) Encode OSS Ltd. pydantic 2.13.5 MIT (c) Pydantic Services Inc. python-multipart 0.0.32 Apache-2.0 (c) Andrew Dunham psycopg 3.3.4 LGPL-3.0 (c) The Psycopg Team cryptography 46.0.4 Apache-2.0 / BSD-3-Clause (c) The cryptography devs tzdata 2026.3 Apache-2.0 (c) Python Software Foundation Nota sobre psycopg (LGPL-3.0): se usa como biblioteca, sin modificarla y sin enlazado estático. Además, al no distribuirse, la LGPL ni siquiera llega a aplicar sus obligaciones de entrega: esas se disparan al CONVEYAR una copia, no al ejecutar el software en un servidor propio. Ninguna dependencia es AGPL, que es la única licencia habitual que convierte el uso en red en una obligación. Auditado el 10-sep-2026 sobre los 33 paquetes instalados en la imagen. =============================================================================== ESTE PRODUCTO =============================================================================== Módulo de Odoo `hr_attendance_biometrico` Licencia LGPL-3 Copyright (c) 2026 BAST Colombia Servicio de reconocimiento y kiosco web Copyright (c) 2026 BAST Colombia Todos los derechos reservados salvo acuerdo escrito. Odoo Community Edition sobre el que corre el módulo se distribuye bajo LGPL-3 por Odoo S.A. =============================================================================== LO QUE ESTE ARCHIVO TODAVÍA NO CUBRE =============================================================================== Se dice para que nadie lo lea como un certificado. 1. VERIFICACIÓN PERIÓDICA. Las licencias de arriba se comprobaron contra los archivos LICENSE de cada proyecto el 10-sep-2026. Un proyecto puede cambiar de licencia entre versiones: al subir de versión, se vuelve a mirar. Esto es lo único que hay que sostener en el tiempo. 2. SI ALGÚN DÍA SE ENTREGA SOFTWARE, CAMBIA EL ANÁLISIS. Todo lo de arriba se apoya en que el producto se explota como servicio. En el momento en que se entregue a un cliente una imagen de Docker, un instalable o el código del servicio, eso SÍ es distribución y aparecen dos obligaciones nuevas: - incluir los textos de licencia de TODAS las dependencias del servicio (hoy `licenses/` solo trae Apache 2.0 y las dos MIT); - cumplir la LGPL de psycopg: ofrecer el código de la biblioteca o dónde obtenerlo, y permitir sustituirla por otra versión. Ninguna de las dos es difícil; las dos son fáciles de olvidar. Si cambia el modelo de negocio, se revisa este archivo ANTES de la primera entrega. 3. ESTO NO ES ASESORÍA LEGAL. La frontera entre «usar» y «distribuir» cuando se sirve JavaScript a un navegador tiene lecturas distintas. Aquí se tomó la más conservadora —tratar como distribución todo lo que se guarda en el dispositivo— porque cumplirla cuesta un archivo de texto y no cumplirla cuesta el argumento comercial entero. =============================================================================== CÓMO SE MANTIENE =============================================================================== Verificado contra los archivos LICENSE de cada proyecto el 10-sep-2026. Este archivo se actualiza EN EL MISMO MOMENTO en que se agrega, se quita o se sube de versión cualquier dependencia o modelo. Un NOTICE vencido incumple igual que uno ausente, y además da la impresión contraria: la de que se revisó. Para verificar las versiones contra lo que realmente corre: docker exec biometria_app python -c "import importlib.metadata as m; \ print(m.version('onnxruntime'))"