docs: def _network_indicator_percentages(fields, network_indicators):
      """Encapsula el cálculo de indicadores de porcentaje (de errores,
      de campos recomendados/optativos utilizados, de datasets actualizados)
      sobre la red de nodos entera.
  
      Args:
          fields (dict): Diccionario con claves 'recomendado', 'optativo',
              'total_recomendado', 'total_optativo', cada uno con valores
              que representan la cantidad de c/u en la red de nodos entera.
  
          network_indicators (dict): Diccionario de la red de nodos, con
              las cantidades de datasets_meta_ok y datasets_(des)actualizados
              calculados previamente. Se modificará este argumento con los
              nuevos indicadores.
      """
  
      # Los porcentuales no se pueden sumar, tienen que ser recalculados
      percentages = {
          'datasets_meta_ok_pct':
              (network_indicators.get('datasets_meta_ok_cant'),
               network_indicators.get('datasets_meta_error_cant')),
          'datasets_actualizados_pct':
              (network_indicators.get('datasets_actualizados_cant'),
               network_indicators.get('datasets_desactualizados_cant')),
          'datasets_federados_pct':
              (network_indicators.get('datasets_federados_cant'),
               network_indicators.get('datasets_no_federados_cant')),
          'datasets_con_datos_pct':
              (network_indicators.get('datasets_con_datos_cant'),
               network_indicators.get('datasets_sin_datos_cant')),
      }
  
      for indicator in percentages:
          pct = 0.00
          partial = percentages[indicator][0] or 0
          total = partial + (percentages[indicator][1] or 0)
          # Evita division por 0
          if total:
              pct = float(partial) / total
          network_indicators[indicator] = round(pct, 4)
  
      # % de campos recomendados y optativos utilizados en el catálogo entero
      if fields:  # 'fields' puede estar vacío si ningún campo es válido
          rec_pct = float(fields['recomendado']) / \
              fields['total_recomendado']
  
          opt_pct = float(fields['optativo']) / fields['total_optativo']
  
          network_indicators.update({
              'campos_recomendados_pct': round(rec_pct, 4),
              'campos_optativos_pct': round(opt_pct, 4)
          })