set define off -- ============================================================================ -- Lab: Annotations para SELECT AI -- ============================================================================ -- Este script documenta tablas relacionales generadas desde una JSON COLLECTION -- TABLE y la JSON Relational Duality View que recompone el documento. -- -- SELECT AI usa nombres, relaciones y metadatos para generar SQL. Las -- annotations ayudan a explicar el significado de tablas y columnas con -- lenguaje de negocio, sinonimos y pistas de uso. -- -- Nota: para ejecutar el lab mas de una vez, cambie ADD por REPLACE en las -- annotations que ya existan. -- ============================================================================ -- ============================================================================ -- T_ROOT: tabla raiz del documento JSON -- ============================================================================ ALTER TABLE t_root ANNOTATIONS ( ADD display_name 'Documento de promocion', ADD business_description 'Tabla raiz de cada promocion extraida desde markdown. Une promocion, medios de pago, cuotas, reintegro, exclusiones y listas hijas.', ADD select_ai_hint 'Use esta tabla como punto de partida cuando la pregunta sea sobre una promocion completa o sobre condiciones generales.', ADD example_questions 'Que promociones existen? Cuales son las exclusiones? Que banco emite la promocion?' ); ALTER TABLE t_root MODIFY "_id" ANNOTATIONS ( ADD display_name 'Identificador del documento', ADD business_description 'Clave tecnica RAW que identifica un documento JSON de promocion.', ADD select_ai_hint 'No mostrar al usuario final salvo que pida identificadores tecnicos.' ); ALTER TABLE t_root MODIFY exclusoes ANNOTATIONS ( ADD display_name 'Exclusiones de la promocion', ADD business_description 'Lista JSON con reglas, restricciones y condiciones que excluyen compras o situaciones del beneficio.', ADD synonyms 'restricciones, condiciones, limitaciones, no aplica, fuera de promocion', ADD select_ai_hint 'Cuando el usuario pregunte que no aplica o que esta excluido, consulte este campo JSON.' ); ALTER TABLE t_root MODIFY titulo_t_promocao ANNOTATIONS ( ADD display_name 'Titulo de la promocion', ADD business_description 'Referencia al titulo principal de la promocion.', ADD relationship_hint 'Clave foranea hacia T_PROMOCAO.TITULO.' ); ALTER TABLE t_root MODIFY emissor_t_medios_pago ANNOTATIONS ( ADD display_name 'Emisor del medio de pago', ADD business_description 'Banco o entidad emisora usada para enlazar los medios de pago aceptados.', ADD relationship_hint 'Clave foranea hacia T_MEDIOS_PAGO.EMISSOR.' ); ALTER TABLE t_root MODIFY maximo_sin_intereses_t_cuotas ANNOTATIONS ( ADD display_name 'Maximo de cuotas sin intereses', ADD business_description 'Valor usado para enlazar las condiciones de cuotas sin intereses.', ADD unit 'cuotas', ADD relationship_hint 'Clave foranea hacia T_CUOTAS.MAXIMO_SIN_INTERESES.' ); ALTER TABLE t_root MODIFY prazo_dias_habiles_t_acreditacao_reintegro ANNOTATIONS ( ADD display_name 'Plazo de acreditacion del reintegro', ADD business_description 'Cantidad de dias habiles usada para enlazar la regla de acreditacion del reintegro.', ADD unit 'dias habiles', ADD relationship_hint 'Clave foranea hacia T_ACREDITACAO_REINTEGRO.PRAZO_DIAS_HABILES.' ); -- ============================================================================ -- T_PROMOCAO y T_VIGENCIA: datos principales de la promocion -- ============================================================================ ALTER TABLE t_promocao ANNOTATIONS ( ADD display_name 'Promocion', ADD business_description 'Datos principales de la oferta bancaria, incluyendo titulo y vigencia.', ADD select_ai_hint 'Use esta tabla para responder preguntas sobre el nombre de la promocion y sus fechas.' ); ALTER TABLE t_promocao MODIFY titulo ANNOTATIONS ( ADD display_name 'Titulo', ADD business_description 'Nombre oficial de la promocion segun el documento markdown.', ADD synonyms 'nombre de promocion, campana, oferta' ); ALTER TABLE t_promocao MODIFY data_inicio_t_vigencia ANNOTATIONS ( ADD display_name 'Fecha de inicio', ADD business_description 'Fecha inicial de vigencia enlazada con T_VIGENCIA.', ADD relationship_hint 'Parte de la clave compuesta hacia T_VIGENCIA.' ); ALTER TABLE t_promocao MODIFY data_fim_t_vigencia ANNOTATIONS ( ADD display_name 'Fecha de fin', ADD business_description 'Fecha final de vigencia enlazada con T_VIGENCIA.', ADD relationship_hint 'Parte de la clave compuesta hacia T_VIGENCIA.' ); ALTER TABLE t_vigencia ANNOTATIONS ( ADD display_name 'Vigencia', ADD business_description 'Rango de fechas en que la promocion esta activa.', ADD example_questions 'La promocion sigue vigente? Cuando termina la promocion?' ); ALTER TABLE t_vigencia MODIFY data_inicio ANNOTATIONS ( ADD display_name 'Inicio de vigencia', ADD business_description 'Primer dia en que la promocion puede ser aplicada.', ADD unit 'fecha' ); ALTER TABLE t_vigencia MODIFY data_fim ANNOTATIONS ( ADD display_name 'Fin de vigencia', ADD business_description 'Ultimo dia en que la promocion puede ser aplicada.', ADD unit 'fecha' ); -- ============================================================================ -- T_MEDIOS_PAGO: tarjetas, QR, ecommerce y billeteras -- ============================================================================ ALTER TABLE t_medios_pago ANNOTATIONS ( ADD display_name 'Medios de pago', ADD business_description 'Condiciones de pago aceptadas por la promocion, como tarjetas, red, QR, ecommerce y billeteras electronicas.', ADD select_ai_hint 'Use esta tabla para preguntas sobre como pagar para recibir el beneficio.' ); ALTER TABLE t_medios_pago MODIFY emissor ANNOTATIONS ( ADD display_name 'Emisor', ADD business_description 'Entidad emisora aceptada para participar de la promocion.', ADD synonyms 'banco, entidad, issuer' ); ALTER TABLE t_medios_pago MODIFY rede ANNOTATIONS ( ADD display_name 'Red de tarjeta', ADD business_description 'Red o marca de tarjeta aceptada por la promocion.', ADD synonyms 'marca, red, network' ); ALTER TABLE t_medios_pago MODIFY qr_permitido ANNOTATIONS ( ADD display_name 'QR permitido', ADD business_description 'Indica si el pago por QR participa de la promocion.', ADD select_ai_hint 'Campo booleano: true significa que QR esta permitido.' ); ALTER TABLE t_medios_pago MODIFY ecommerce_permitido ANNOTATIONS ( ADD display_name 'Ecommerce permitido', ADD business_description 'Indica si compras online o ecommerce participan de la promocion.', ADD select_ai_hint 'Campo booleano: true significa que ecommerce esta permitido.' ); ALTER TABLE t_medios_pago MODIFY tarjetas_aceitas ANNOTATIONS ( ADD display_name 'Tarjetas aceptadas', ADD business_description 'Array JSON con las tarjetas o productos de tarjeta que califican.', ADD synonyms 'tarjetas validas, tarjetas admitidas, tarjetas participantes', ADD select_ai_hint 'Use funciones JSON cuando necesite filtrar por una tarjeta especifica.' ); ALTER TABLE t_medios_pago MODIFY billeteras_electronicas ANNOTATIONS ( ADD display_name 'Billeteras electronicas', ADD business_description 'Array JSON con billeteras digitales aceptadas por la promocion.', ADD synonyms 'wallets, billeteras, monederos digitales', ADD select_ai_hint 'Use funciones JSON cuando el usuario pregunte por una billetera especifica.' ); -- ============================================================================ -- T_CUOTAS: informacion de financiamiento -- ============================================================================ ALTER TABLE t_cuotas ANNOTATIONS ( ADD display_name 'Cuotas', ADD business_description 'Reglas de financiamiento sin intereses para la promocion.', ADD example_questions 'Cuantas cuotas sin intereses permite la promocion? El cliente debe pedir las cuotas?' ); ALTER TABLE t_cuotas MODIFY maximo_sin_intereses ANNOTATIONS ( ADD display_name 'Maximo sin intereses', ADD business_description 'Cantidad maxima de cuotas sin intereses permitidas.', ADD unit 'cuotas' ); ALTER TABLE t_cuotas MODIFY requer_solicitacao_cliente ANNOTATIONS ( ADD display_name 'Requiere solicitud del cliente', ADD business_description 'Indica si el cliente debe solicitar expresamente el pago en cuotas.', ADD select_ai_hint 'Campo booleano: true significa que el cliente debe solicitarlo.' ); -- ============================================================================ -- T_ACREDITACAO_REINTEGRO: como se acredita el beneficio -- ============================================================================ ALTER TABLE t_acreditacao_reintegro ANNOTATIONS ( ADD display_name 'Acreditacion del reintegro', ADD business_description 'Reglas de acreditacion del reintegro: plazo, porcentaje acreditado y tipo de cuenta.', ADD select_ai_hint 'Use esta tabla para preguntas sobre cuando y donde se acredita el reintegro.' ); ALTER TABLE t_acreditacao_reintegro MODIFY prazo_dias_habiles ANNOTATIONS ( ADD display_name 'Plazo en dias habiles', ADD business_description 'Cantidad de dias habiles hasta acreditar el reintegro.', ADD unit 'dias habiles', ADD synonyms 'plazo, demora, tiempo de acreditacion' ); ALTER TABLE t_acreditacao_reintegro MODIFY percentual_creditado ANNOTATIONS ( ADD display_name 'Porcentaje acreditado', ADD business_description 'Porcentaje del reintegro que sera acreditado al cliente.', ADD unit 'porcentaje' ); ALTER TABLE t_acreditacao_reintegro MODIFY tipo_conta ANNOTATIONS ( ADD display_name 'Tipo de cuenta', ADD business_description 'Cuenta o producto donde se acredita el reintegro.', ADD synonyms 'cuenta destino, producto, cuenta de acreditacion' ); -- ============================================================================ -- T_COMERCIOS: comercios participantes -- ============================================================================ ALTER TABLE t_comercios ANNOTATIONS ( ADD display_name 'Comercios participantes', ADD business_description 'Lista de comercios que participan de la promocion, con categoria y procesador de pago.', ADD select_ai_hint 'Use esta tabla para preguntas sobre donde comprar, rubros participantes o procesadores de pago.' ); ALTER TABLE t_comercios MODIFY name ANNOTATIONS ( ADD display_name 'Nombre del comercio', ADD business_description 'Nombre del comercio tal como aparece en el documento original.', ADD synonyms 'tienda, local, merchant, comercio' ); ALTER TABLE t_comercios MODIFY category ANNOTATIONS ( ADD display_name 'Categoria del comercio', ADD business_description 'Rubro o seccion del markdown donde aparece el comercio.', ADD synonyms 'rubro, segmento, categoria, grupo' ); ALTER TABLE t_comercios MODIFY payment_processor ANNOTATIONS ( ADD display_name 'Procesador de pago', ADD business_description 'Procesador asociado al comercio, por ejemplo upay o bancard.', ADD synonyms 'procesadora, adquirente, payment processor' ); ALTER TABLE t_comercios MODIFY "_id_t_root" ANNOTATIONS ( ADD display_name 'Documento de origen', ADD business_description 'Clave tecnica que enlaza el comercio con el documento raiz de la promocion.', ADD relationship_hint 'Clave foranea hacia T_ROOT."_id".' ); -- ============================================================================ -- T_BENEFICIOS_POR_NIVEL: reglas de reintegro por nivel -- ============================================================================ ALTER TABLE t_beneficios_por_nivel ANNOTATIONS ( ADD display_name 'Beneficios por nivel', ADD business_description 'Lista de niveles de cliente y sus reglas de reintegro, compra minima y tope maximo.', ADD select_ai_hint 'Use esta tabla para comparar beneficios entre niveles.' ); ALTER TABLE t_beneficios_por_nivel MODIFY nivel ANNOTATIONS ( ADD display_name 'Nivel del cliente', ADD business_description 'Nivel o segmento del cliente dentro de la promocion.', ADD synonyms 'segmento, nivel, categoria de cliente' ); ALTER TABLE t_beneficios_por_nivel MODIFY percentual_reintegro ANNOTATIONS ( ADD display_name 'Porcentaje de reintegro', ADD business_description 'Porcentaje de reintegro ofrecido para el nivel.', ADD unit 'porcentaje' ); ALTER TABLE t_beneficios_por_nivel MODIFY monto_compra_minimo_gs ANNOTATIONS ( ADD display_name 'Compra minima', ADD business_description 'Monto minimo de compra requerido para aplicar el beneficio.', ADD unit 'guaranies' ); ALTER TABLE t_beneficios_por_nivel MODIFY reintegro_maximo_gs ANNOTATIONS ( ADD display_name 'Tope maximo de reintegro', ADD business_description 'Monto maximo de reintegro que puede recibir el cliente en guaranies.', ADD unit 'guaranies', ADD synonyms 'tope, limite, maximo de devolucion' ); ALTER TABLE t_beneficios_por_nivel MODIFY "_id_t_root" ANNOTATIONS ( ADD display_name 'Documento de origen', ADD business_description 'Clave tecnica que enlaza el beneficio por nivel con el documento raiz de la promocion.', ADD relationship_hint 'Clave foranea hacia T_ROOT."_id".' ); -- ============================================================================ -- V_PARSED_MARKDOWN_FILES: vista JSON Relational Duality -- ============================================================================ ALTER VIEW v_parsed_markdown_files ANNOTATIONS ( ADD display_name 'Documento JSON de promocion', ADD business_description 'JSON Relational Duality View que presenta las tablas normalizadas como un unico documento JSON consultable y actualizable.', ADD select_ai_hint 'Use esta vista cuando el usuario pregunte por el documento completo o quiera ver la estructura JSON de la promocion.', ADD example_questions 'Muestre el JSON completo de la promocion. Que comercios aparecen dentro del documento? Que condiciones tiene la promocion?' );