Romanes commited on
Commit
fcd2fdc
·
verified ·
1 Parent(s): c0da0af

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +171 -3
app.py CHANGED
@@ -86,15 +86,183 @@ def parse_code_name(codes_raw: str, text_original: str) -> Tuple[str, str]:
86
  # Reglas duras (ejemplo OPS)
87
  # -----------------------------
88
  REGLAS = [
 
 
 
 
89
  {
90
- "keywords": ["ops", "orden de prestación de servicios", "contrato ops"],
91
  "respuesta": {
92
  "CICP": ("2.1.2.02.02.008", "Servicios prestados a las empresas y servicios de producción"),
93
- "CPC": ("8", "Servicios prestados a las empresas y servicios de producción"),
94
- "UNSPSC":("80111600", "Servicios de personal temporal"),
95
  },
96
  "motivo": "Coincidencia con palabra clave OPS",
97
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  ]
99
 
100
  def aplicar_reglas(query: str):
 
86
  # Reglas duras (ejemplo OPS)
87
  # -----------------------------
88
  REGLAS = [
89
+ # REGLA: OPS (Orden de Prestación de Servicios)
90
+ # CUÁNDO: Cuando el texto menciona OPS/contrato OPS o su expansión.
91
+ # INTENCIÓN: Contratación de servicios profesionales/servicios técnicos por OPS.
92
+ # NOTAS: Útil para “vinculación joven investigadora OPS”, asesorías, apoyos especializados, etc.
93
  {
94
+ "keywords": ["ops", "orden de prestacion de servicios", "contrato ops"],
95
  "respuesta": {
96
  "CICP": ("2.1.2.02.02.008", "Servicios prestados a las empresas y servicios de producción"),
97
+ "CPC": ("8", "Servicios prestados a las empresas y servicios de producción"),
98
+ "UNSPSC":("80111600", "Servicios de personal temporal"),
99
  },
100
  "motivo": "Coincidencia con palabra clave OPS",
101
  },
102
+
103
+ # REGLA: Tiquetes aéreos (viajes)
104
+ # CUÁNDO: Pasajes, tiquetes, aéreos, etc.
105
+ # INTENCIÓN: Traslados aéreos a eventos/misiones.
106
+ # NOTA: Si aparece además 'viáticos', ambas reglas pueden disparar; resolver por score o prioridad contextual.
107
+ {
108
+ 'keywords': ["tiquete", "tiquetes", "pasajes", "aereos", "aereo", "aereo"],
109
+ 'respuesta': {
110
+ 'CICP': ("2.3.2.02.02.006", "Servicios prestados a las empresas y servicios de producción"),
111
+ 'CPC': ("6", "Servicios de transporte de pasajeros"),
112
+ 'UNSPSC': ("78111500", "Servicios de transporte aéreo"),
113
+ },
114
+ 'motivo': 'Auto (tiquetes). 50 ejemplos en Excel',
115
+ },
116
+
117
+ # REGLA: Viáticos (alojamiento, alimentación, transporte local)
118
+ # CUÁNDO: 'viatico', 'viaticos'
119
+ # INTENCIÓN: Gastos operativos de comisión de servicios.
120
+ # NOTA: Complementa tiquetes. Puedes sumar keywords 'alojamiento', 'hospedaje' si lo deseas.
121
+ {
122
+ 'keywords': ["viatico", "viaticos"],
123
+ 'respuesta': {
124
+ 'CICP': ("2.3.2.02.02.010", "Servicios administrativos de apoyo"),
125
+ 'CPC': ("901", "Gastos directos de la administración pública"),
126
+ 'UNSPSC': ("20102301", "Gastos de viaje y manutención"),
127
+ },
128
+ 'motivo': 'Auto (viaticos). 37 ejemplos en Excel',
129
+ },
130
+
131
+ # REGLA: Inscripción a eventos/cursos
132
+ # CUÁNDO: inscripción/registro a congresos, talleres, cursos.
133
+ # INTENCIÓN: Pago de inscripción/membresía.
134
+ # NOTA: Muchas organizaciones lo contabilizan como servicio editorial/eventos.
135
+ {
136
+ 'keywords': ["inscripcion", "inscripciones", "registro"],
137
+ 'respuesta': {
138
+ 'CICP': ("2.3.2.02.02.009", "Servicios para la comunidad"),
139
+ 'CPC': ("901", "Gastos directos de la administración pública"),
140
+ 'UNSPSC': ("82121800", "Servicios de suscripción o membresía"),
141
+ },
142
+ 'motivo': 'Auto (inscripción). 39 ejemplos en Excel',
143
+ },
144
+
145
+ # REGLA: Participación/Asistencia/Ponencia en eventos
146
+ # CUÁNDO: 'participacion', 'asistencia', 'ponente', 'conferencista'
147
+ # INTENCIÓN: Soporte a la asistencia activa; frecuentemente coexiste con tiquetes/viáticos.
148
+ {
149
+ 'keywords': ["participacion", "asistencia", "ponente", "conferencista"],
150
+ 'respuesta': {
151
+ 'CICP': ("2.3.2.02.02.006", "Servicios prestados a las empresas y servicios de producción"),
152
+ 'CPC': ("6", "Servicios de transporte de pasajeros"),
153
+ 'UNSPSC': ("78111500", "Servicios de transporte aéreo"),
154
+ },
155
+ 'motivo': 'Auto (participación). 35 ejemplos en Excel',
156
+ },
157
+
158
+ # REGLA: Impresión y material impreso
159
+ # CUÁNDO: impresión de pósteres, afiches, folletos, volantes, brochure.
160
+ # INTENCIÓN: Servicios editoriales/Impresión.
161
+ # NOTA: Para compra de impresoras (bien), ver la regla de “impresora”.
162
+ {
163
+ 'keywords': ["impresion", "imprimir", "impresiones", "material impreso", "afiches", "posters", "folletos", "volantes", "brochure"],
164
+ 'respuesta': {
165
+ 'CICP': ("2.3.2.02.02.008", "Servicios prestados a las empresas y servicios de producción"),
166
+ 'CPC': ("8", "Servicios prestados a las empresas y servicios de producción"),
167
+ 'UNSPSC': ("82121500", "Servicios de impresión"),
168
+ },
169
+ 'motivo': 'Auto (impresión). 16 ejemplos en Excel',
170
+ },
171
+
172
+ # REGLA: Publicación científica (APC/Open Access)
173
+ # CUÁNDO: 'publicacion', 'APC', 'article processing charge', 'open access'
174
+ # INTENCIÓN: Pagar cargos editoriales de publicación científica.
175
+ {
176
+ 'keywords': ["publicacion", "article processing charge", "apc", "cuota publicacion", "edicion articulo", "open access"],
177
+ 'respuesta': {
178
+ 'CICP': ("2.3.2.02.02.008", "Servicios prestados a las empresas y servicios de producción"),
179
+ 'CPC': ("8", "Servicios editoriales"),
180
+ 'UNSPSC': ("82121800", "Servicios editoriales y de publicación"),
181
+ },
182
+ 'motivo': 'Auto (publicación). 37 ejemplos en Excel',
183
+ },
184
+
185
+ # REGLA: Servicios técnicos / Ensayos / Caracterización (Laboratorio)
186
+ # CUÁNDO: 'servicios tecnicos', 'analisis de laboratorio', 'caracterizacion', 'ensayo'
187
+ # INTENCIÓN: Análisis como SERVICIO (terceros).
188
+ # NOTA: Si en cambio es COMPRA de equipo, ver reglas de 'reactivos' o 'impresora'/'equipos'.
189
+ {
190
+ 'keywords': ["servicios tecnicos", "servicio tecnico", "analisis de laboratorio", "caracterizacion", "ensayo"],
191
+ 'respuesta': {
192
+ 'CICP': ("2.3.2.02.02.008", "Servicios prestados a las empresas y servicios de producción"),
193
+ 'CPC': ("8", "Servicios técnicos y de apoyo"),
194
+ 'UNSPSC': ("81101703", "Servicios de análisis y ensayo de laboratorio"),
195
+ },
196
+ 'motivo': 'Auto (servicios técnicos). 7 ejemplos en Excel',
197
+ },
198
+
199
+ # REGLA: Mantenimiento / Calibración
200
+ # CUÁNDO: 'mantenimiento', 'preventivo', 'correctivo', 'calibracion'
201
+ # INTENCIÓN: Servicios de mantenimiento/calibración de equipos.
202
+ {
203
+ 'keywords': ["mantenimiento", "mantenimientos", "preventivo", "correctivo", "calibracion", "calibraciones"],
204
+ 'respuesta': {
205
+ 'CICP': ("2.1.2.02.02.008", "Servicios de mantenimiento y reparación"),
206
+ 'CPC': ("8", "Servicios de mantenimiento preventivo y correctivo"),
207
+ 'UNSPSC': ("80111600", "Servicios de soporte técnico o mantenimiento"),
208
+ },
209
+ 'motivo': 'Auto (mantenimiento). 2 ejemplos en Excel',
210
+ },
211
+
212
+ # REGLA: Software / Suscripciones
213
+ # CUÁNDO: 'software', 'licenciamiento', 'suscripcion', 'suite'
214
+ # INTENCIÓN: Servicios/licencias de software como servicio.
215
+ # NOTA: Si es COMPRA de equipo (hardware), ver regla de “equipos de computo/impresora”.
216
+ {
217
+ 'keywords': ["software", "licenciamiento", "suscripcion", "suscripciones", "sistemas", "suite"],
218
+ 'respuesta': {
219
+ 'CICP': ("2.3.2.02.02.008", "Servicios prestados a las empresas y servicios de producción"),
220
+ 'CPC': ("8", "Servicios de desarrollo y licencias de software"),
221
+ 'UNSPSC': ("81112500", "Servicios de software o licencias informáticas"),
222
+ },
223
+ 'motivo': 'Auto (software). 17 ejemplos en Excel',
224
+ },
225
+
226
+ # REGLA: Licencia (genérico)
227
+ # CUÁNDO: cuando sólo se menciona "licencia(s)" sin más contexto.
228
+ # INTENCIÓN: Asumir licenciamiento de uso (software/documentos).
229
+ {
230
+ 'keywords': ["licencia", "licencias", "licenciamiento"],
231
+ 'respuesta': {
232
+ 'CICP': ("2.3.2.02.02.008", "Servicios prestados a las empresas y servicios de producción"),
233
+ 'CPC': ("8", "Servicios de licenciamiento"),
234
+ 'UNSPSC': ("80111600", "Servicios de personal temporal"),
235
+ },
236
+ 'motivo': 'Auto (licencia). 4 ejemplos en Excel',
237
+ },
238
+
239
+ # REGLA: Reactivos / Insumos de laboratorio (BIEN)
240
+ # CUÁNDO: 'reactivos', 'insumos de laboratorio', 'quimicos'
241
+ # INTENCIÓN: COMPRA de insumos (no servicio).
242
+ # NOTA: Si el texto dice “análisis/ensayo” sin ‘compra/adquisición’, prioriza la regla de servicios técnicos.
243
+ {
244
+ 'keywords': ["reactivos", "insumos de laboratorio", "quimicos", "quimicas", "repuestos laboratorio"],
245
+ 'respuesta': {
246
+ 'CICP': ("2.3.2.02.01.003", "Productos químicos y reactivos"),
247
+ 'CPC': ("3", "Productos químicos y reactivos de laboratorio"),
248
+ 'UNSPSC': ("41000000", "Equipos y suministros de laboratorio"),
249
+ },
250
+ 'motivo': 'Auto (reactivos). 14 ejemplos en Excel',
251
+ },
252
+
253
+ # REGLA: Espectrometría / HPLC / RMN (como SERVICIO de análisis)
254
+ # CUÁNDO: 'hplc', 'q tof', 'rmn', 'lc ms', 'gc ms', 'espectrometria', etc.
255
+ # INTENCIÓN: Servicios analíticos de laboratorio (terceros).
256
+ # NOTA: Si el texto dice “adquisición/compra de HPLC/RMN”, redirigir a bienes (equipo).
257
+ {
258
+ 'keywords': ["espectrometria", "hplc", "q tof", "qtof", "lc ms", "gc ms", "nmr", "rmn", "tiempo de vuelo", "masas"],
259
+ 'respuesta': {
260
+ 'CICP': ("2.3.2.02.02.008", "Servicios prestados a las empresas y servicios de producción"),
261
+ 'CPC': ("8", "Servicios técnicos o de laboratorio"),
262
+ 'UNSPSC': ("81101703", "Servicios de análisis espectrométrico o químico"),
263
+ },
264
+ 'motivo': 'Auto (espectrometría). 6 ejemplos en Excel',
265
+ },
266
  ]
267
 
268
  def aplicar_reglas(query: str):