Maison  >  Article  >  Périphériques technologiques  >  Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

王林
王林avant
2023-04-14 12:43:021344parcourir

Auteur : Yong Haogengen, Wang Xin et autres

1 Avant-propos

L'activité intégrée en magasin de Meituan (ci-après dénommée l'activité globale) est l'un des segments importants de l'activité en magasin de Meituan, couvrant le bain, KTV et industries de la beauté, beauté médicale, parent-enfant, mariage, sports et fitness, divertissement, éducation et formation, ameublement, animaux de compagnie, bars, services de vie et d'autres dizaines de sous-secteurs clés pour répondre aux divers besoins de la vie locale de des centaines de millions d'utilisateurs.

Le système de recommandation est un maillon important pour parvenir à une adéquation efficace de l'offre et de la demande, et constitue le débouché pour la transmission de la valeur des données. La qualité du système de recommandation détermine la perte de l'effet de correspondance. Comme le montre la figure 1 ci-dessous, les données sont traitées par l'entrepôt de données et l'algorithme, puis envoyées à divers systèmes d'entreprise via les services de données. Enfin, elles sont retransférées à l'entrepôt de données via le client, formant un « effet volant ». Les données et la qualité sont exactement cela. Le point clé de l'engrènement des engrenages dans un lien est une condition préalable importante pour améliorer l'efficacité et garantir l'efficacité.

Une assurance qualité doit être réalisée autour de la mesure afin qu'elle soit "visible", "clarifiée" et "corrigée". Cependant, les indicateurs traditionnels de qualité du service backend ne peuvent pas décrire correctement la qualité du « volant de données » actuel. Nous espérons que grâce à la construction d'un modèle de qualité pour un système complet de recommandation commerciale, nous pourrons fournir une nouvelle perspective de réflexion et une référence pratique pour une mesure de la qualité d'un système similaire multi-secteurs d'activité et orientée vers les effets.

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 1 « Volant de données » du système de recommandation

2 Analyse de la situation actuelle

Le système de recommandation est un système basé sur les effets et ses caractéristiques de qualité sont différentes des systèmes fonctionnels. Généralement, les systèmes fonctionnels affecteront considérablement l'expérience utilisateur après avoir été rétrogradés. Cependant, si le résultat de la recommandation renvoie A ou A', il est difficile pour les utilisateurs de le remarquer clairement. Mais en fait, si l'effet de correspondance s'aggrave, cela affectera directement l'expérience implicite de l'utilisateur et doit être identifié. Les systèmes fonctionnels construisent généralement des systèmes d'index de qualité dont la convivialité est la base. Dans la pratique commerciale des systèmes complets de recommandation commerciale, nous avons constaté que la convivialité et d'autres indicateurs présentent les limites suivantes :

  • La convivialité n'est pas sensible à certains défauts : Convivialité Elle dépend de la fréquence et de la durée des interruptions et reflète la capacité du système à continuer à fournir des services. Tant que les défauts du système n’affectent pas les services externes, ils n’affectent pas la convivialité, mais certains affectent en réalité l’expérience utilisateur. Les défauts ici peuvent être attendus (comme un déclassement actif) ou inattendus (délai de mise à jour du modèle), et doivent être inclus dans la mesure de la qualité.
  • Il est difficile de couvrir l'intégralité du lien des données en raison de la convivialité : Le lien du système de recommandation couvre la production, le traitement, l'application, l'analyse et d'autres liens des données. L’une est que la convivialité n’implique pas la qualité du tableau de données, et l’autre est que lorsque des mesures de performance sont disponibles, elles ne peuvent pas refléter l’image complète de la qualité des données. La qualité des données doit prendre en compte des caractéristiques telles que l’exhaustivité, l’exactitude, l’actualité et la sécurité, qui vont au-delà de la portée de la disponibilité. L'universitaire de renommée internationale Andrew Ng a dit un jour que 80 % de la valeur de l'intelligence artificielle dépend des données. La qualité de l'effet de recommandation délivré par le système de recommandation (taux de conversion des clics, taux de conversion des transactions, temps de séjour des utilisateurs, etc.). dépend principalement de la qualité des données.
  • La disponibilité est difficile à refléter les différences commerciales : Meituan Zhizong couvre des centaines de secteurs et des dizaines de pages de canaux. En raison de considérations d'efficacité et de coûts dans le système de recommandation, les entreprises ne peuvent pas être complètement isolées des calculs de disponibilité en série et en parallèle. Cette méthode rend difficile la distinction des entreprises pour une évaluation séparée. Les différents services sur le réseau varient considérablement, avec des fréquences d'accès, des périodes de pointe de trafic et des stratégies commerciales différentes. Par conséquent, les caractéristiques de qualité et la répartition des problèmes sont également différentes. Les indicateurs de disponibilité actuels manquent d’informations sur la dimension commerciale, ce qui ne permet pas de guider des opérations de qualité raffinées.

Dans la construction de qualité, le niveau de défaut était utilisé comme objectif dans le passé. Le cycle de vérification était long et contingent, et la relation entre l'objectif et la dérivation logique des actions n'était pas forte. De plus, la panne elle-même est une réflexion secondaire, et cette approche axée sur les problèmes n'est pas propice à la poursuite des opérations. En général, avec la convivialité comme objectif, il existe divers problèmes dans les calculs de mise en œuvre réels, nous envisageons donc de construire un modèle de qualité pour le système de recommandation, basé sur la convivialité, puis d'ajuster la méthode de calcul pour guider les opérations de qualité raffinées.

3 Idées de construction

3.1 La qualité dans le contexte commercial

Pour construire un modèle de qualité, revenons d'abord à la compréhension de l'essence de la qualité. Selon l'Organisation internationale de normalisation (ISO), la qualité est la somme des caractéristiques qui reflètent la capacité d'une entité à répondre à des « besoins » explicites ou implicites. Un autre concept de qualité couramment utilisé est la stabilité. Le cœur de la stabilité est de permettre au système de fonctionner dans l'état « attendu » pendant une longue période. Qu’il s’agisse de qualité ou de stabilité, il est important de comprendre à quels besoins et attentes le système doit répondre. Dans le scénario de recommandation, cet objet est le produit et l'algorithme. Les produits commerciaux comprennent les scénarios des utilisateurs, résument les besoins des utilisateurs et proposent les exigences du produit à l'équipe de recommandation, ce qui se reflète dans les itérations externes du produit. Dans le même temps, l'équipe du système de recommandation collabore en interne pour apprendre la meilleure stratégie de modèle d'optimisation, qui se reflète dans les itérations des algorithmes au sein de l’équipe de données.

Comme le montre la figure 2 ci-dessous, dans la formule de calcul de la disponibilité, le temps long est mis en avant, tandis que le « besoin » et les « attentes » ne se reflètent que dans la fourniture de services externes. Il y a une certaine rationalité ici. Premièrement, la disponibilité est un indicateur courant dans l'industrie, et la définition doit être généralisée. Ensuite, le point commun et l'essentiel de la qualité sont de fournir des services externes ; les services externes sont pour la plupart fournis dans les catégories « entre » et « aucun », il existe également une certaine marge pour une dégradation des services. Cependant, pour les systèmes de recommandation dont l'objectif principal est l'efficacité, il existe un long spectre de « bons » et de « mauvais » effets entre les fonctions « avec » et « sans ». Dans notre itération de réflexion sur la qualité du système de recommandation, le changement fondamental passe du « oui » et du « non » des services externes aux « bons » et « mauvais » des services externes. C'est aussi le point de départ de la transformation. la méthode de calcul de l’utilisabilité.

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 2 La perception des défauts affecte la mesure de la qualité

3.2 Considération et sélection des défauts

Le fait de ne pas répondre aux « besoins » ou aux « attentes » produira des défauts, et les défauts sont la cause d'une perte de qualité . Modèle de qualité logicielle ISO/IEC 25010 (2011) Le modèle de qualité logicielle définit les défauts logiciels et peut être considéré comme l'ensemble complet des défauts. Il comprend l'adéquation fonctionnelle, l'efficacité des performances, la compatibilité, la disponibilité, la fiabilité, la sécurité et la maintenabilité. et 31 sous-fonctionnalités de portabilité. Certaines fonctionnalités de qualité ne sont pas couvertes par les services backend (Esthétique de l'interface utilisateur, facilité d'apprentissage, etc.), et certains éléments exceptionnels ne constituent pas la qualité côté C dans les perceptions actuelles (Modularité, coexistence, non- répudiation, fiabilité, etc.) Réutilisabilité etc). En combinant les caractéristiques commerciales et les problèmes de qualité à haute fréquence du système de recommandation, nous nous concentrons à ce stade sur la considération des caractéristiques de qualité illustrées dans la figure 3 ci-dessous comme source de défauts.

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 3 Caractéristiques de qualité du système de recommandation

Nous avons constaté que les mesures d'utilisabilité traditionnelles se concentrent principalement sur la fiabilité, l'exhaustivité fonctionnelle et l'exactitude, mais pour la plupart de l'exactitude et de la pertinence fonctionnelles et du manque de mesure de la sécurité, qui sont étroitement liés à la qualité et à l’efficacité des recommandations. L’impact de l’exactitude et de la pertinence sur l’effet est relativement intuitif, tandis que d’autres sont plus indirects. Par exemple, en matière de sécurité, prenons comme exemple l'accès des robots d'exploration. Parce que le comportement d'accès des robots d'exploration n'est pas conforme aux habitudes réelles du comportement humain, cela affectera le recyclage des indicateurs de base tels que l'UVCTR, ce qui entraînera une mauvaise appréciation des effets ; Dans le même temps, si les données du robot ne peuvent pas être identifiées et éliminées, le bruit affectera davantage la précision de la formation du modèle. Les problèmes de qualité des données sont la « pilule empoisonnée » de « l’effet volant » des données, qui générera des retours positifs et amplifiera continuellement les défauts. Nous quantifierons les défauts ci-dessus et élargirons la portée de l'utilisabilité dans le chapitre 4 Règles de calcul.

3.3 Sélection de la mesure et du calcul

La disponibilité peut être divisée en méthode de mesure et méthode de calcul : la mesure est ce que l'on appelle souvent N neuf, et le calcul est mesuré en fonction du temps moyen entre les pannes et du temps moyen de récupération. En termes de méthodes de mesure, les méthodes de mesure de la qualité couramment utilisées dans l'industrie sont présentées dans la figure 4 ci-dessous : Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 4 Méthodes de mesure

Le choix de quelques points pour la méthode de mesure n'est pas au centre du score de qualité à ce stade. Les N neuf utilisés pour la convivialité elle-même sont assez simples et comparables, nous nous concentrons donc sur la méthode de calcul. En raison du grand nombre de secteurs d'activité complets et du système de recommandation en tant que produit de plate-forme, la relation entre le système et l'entreprise est N:N. Il est difficile de calculer la disponibilité du système actuel pour chaque secteur, projet et entreprise. Une position de trafic peut être attribuée au secteur des loisirs et du divertissement, au projet de destruction de scripts, à une partie du chemin principal d'affichage ou à un type de recommandation de contenu. Ce type d'attribution flexible peut être utilisé pour agréger les calculs. sont les plus appropriés. Comme le montre la figure 5 ci-dessous, si la disponibilité est fonction des demandes, elle peut inclure non seulement les fonctionnalités de qualité qui nous intéressent dans la section précédente, mais également des statistiques de qualité significatives pour l'entreprise dans plusieurs dimensions.

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 5 Mesurer la qualité du point de vue des demandes

4 Méthode de calcul

Selon les idées de construction du chapitre précédent, de défauts en défauts, de "oui" et "non" dans le résultats de la recommandation concernant les « bons » et les « mauvais » effets de la recommandation, de l'ensemble à chaque entreprise, nous décrivons les caractéristiques que devrait avoir un bon score de qualité. Dans ce chapitre, nous nous concentrons sur la logique de calcul des indicateurs, sélectionnons les défauts clés, définissons la « réponse réussie à la demande » et ajoutons la dimension d'agrégation commerciale des scores de qualité.

4.1 Formule de calcul

Combinée aux caractéristiques de qualité décrites au chapitre 3.2, la qualité du système est évaluée du point de vue de la proportion de demandes réussies dans le calcul de la mise en œuvre réelle, elle peut être divisée en quatre niveaux de défauts suivants. :

  • Niveau système  : La requête déclenche une exception système, qui est une réponse de défaut. Les plus courants incluent le délai d'attente du rappel, l'échec du rappel, le rappel du résultat vide, etc.
  • Niveau de données : Si les données utilisées dans la requête sont anormales, il s'agit d'une réponse défectueuse. Les plus courantes incluent une quantité d'approvisionnement anormale, une distribution anormale des étiquettes, etc. L'impact réel des données sur les demandes des utilisateurs dépend de l'établissement du traçage des données et de l'évaluation de l'impact.
  • Niveau d'algorithme : Si les fonctionnalités, modèles et stratégies utilisés dans le processus de rappel et de tri de cette demande sont anormaux, il s'agit d'une réponse défectueuse. Les plus courants incluent la mise à jour retardée du modèle, les fonctionnalités manquantes, etc., qui affectent l'expression des effets de recommandation.
  • Niveau commercial : la demande déclenche des exigences d'adéquation commerciale ou de conformité en matière de sécurité, et les demandes contenant les résultats ci-dessus sont des réponses défectueuses. Les retours opérationnels courants incluent de graves cas négatifs tels que la qualité de l'approvisionnement et la sécurité du contenu.

Si une demande présente un défaut dans une partie quelconque du cycle de vie, le résultat est défini comme une réponse au défaut. Le lien de défaut spécifique est la dimension de l'analyse et de l'exploration. Nous sélectionnons les problèmes typiques (Points douloureux de l'entreprise, problèmes de qualité à haute fréquence) à partir des caractéristiques de qualité du chapitre 3.2 et des quatre aspects des défauts ci-dessus pour le calcul. Prenez la figure 6 ci-dessous comme exemple :

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

. Figure 6 Méthode de calcul du score de qualité

4.2 Généralisation commerciale

Les caractéristiques commerciales du système de recommandation complet sont plusieurs secteurs d'activité, de grandes différences sectorielles et de nombreux emplacements de matériaux recommandés. Cela reflète la mesure de la qualité. tous les niveaux pour guider le raffinement. Le fonctionnement est illustré dans la figure 7 ci-dessous :

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 7 Analyse d'agrégation de chaque niveau d'activité

Il existe de nombreux services à moyenne et basse fréquence dans le réseau intégré. Dans le temps, la fluctuation du ratio est grandement affectée par la valeur absolue de la demande. Pour ces scénarios, certains petits bits de trafic peuvent être regroupés et surveillés uniquement au niveau de l'industrie ou du projet, à la minute près.

4.3 Système d'indicateurs

Comme le montre la figure 8 ci-dessous, nous traitons une demande répondue par le système de recommandation comme un comportement de livraison de produit. La proportion de ces demandes qui sont sans défaut est le score de qualité du système de recommandation, qui est. l’indicateur de qualité de sortie de haut niveau. Sur la base du cycle de vie de la demande, des indicateurs d'entrée de premier niveau peuvent être établis pour mesurer l'état de qualité du processus principal, tels que le taux de défauts de rappel, le taux de défauts de tri, etc. Les indicateurs de premier niveau peuvent également être démontés davantage pour obtenir les indicateurs d'entrée de deuxième niveau. Par exemple, lorsque le taux de défauts de rappel est relativement élevé, le taux de rappel nul, le taux de temporisation de rappel, etc. peuvent être mesurés. Les demandes des utilisateurs peuvent également être regroupées verticalement, horizontalement et dans le temps en fonction de l'activité pour obtenir des scores de qualité avec des attributs commerciaux, qui seront plus ciblés et ciblés.

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 8 Système d'indicateurs de qualité

Cet ensemble amélioré de scores de qualité, avec les requêtes comme unité de base, résout dans une certaine mesure ses limites par rapport à la méthode de calcul de disponibilité originale : Il est sensible aux défauts et peut inclure l'impact des liaisons de données pour faciliter l'analyse globale de plusieurs dimensions commerciales.

4.4 Expansion de la lignée

Les statistiques de qualité sont basées sur la granularité des demandes. Dans les services d'application de données, les demandes ne sont qu'une des formes de sortie de données vers le monde extérieur. Après avoir obtenu le score de qualité de base, le cycle de vie de la demande doit être étendu à l'ensemble de la liaison de données, afin que la mesure de la qualité soit complète. A ce moment, nous nous appuyons sur la relation sanguine des données pour associer table de données - système métier - trafic côté C pour construire un portrait panoramique de qualité, comme le montre la figure 9 ci-dessous :

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 9 Données relation de sang du système de recommandation

La relation de sang est la relation interpersonnelle générée par le mariage et l'accouchement dans la société humaine, telle que la relation entre parents et enfants, la relation entre frères et sœurs et d'autres relations de parenté qui en dérivent. peut également être fusionné et transformé pour générer des relations de sang de relation. La relation de sang des données est divisée en bases de données, tableaux de données et champs à différents niveaux, qui sont généralement utilisés pour les actifs de données (calcul de la popularité des citations, compréhension du contexte des données), le développement des données (analyse d'impact, analyse d'attribution), et la gouvernance des données (lien Quatre aspects : suivi des statuts, gestion de l'entrepôt de données), et la sécurité des données (inspection de conformité de sécurité, diffusion des labels). Dans le cadre de l'idée actuelle des scores de qualité du système recommandés, l'analyse d'impact est principalement utilisée pour étendre les scores de qualité, et toutes les demandes provenant de nœuds défectueux sont marquées et les scores correspondants sont déduits.

Sous la sémantique métier du système de recommandation, nous avons défini six types de métadonnées métier : instantanés, solutions, composants, index, modèles et fonctionnalités. Sur la base des métadonnées, nous construisons un lignage, qui peut être divisé en accès aux tâches. , analyse de lignage, export de données. L'accès aux tâches est divisé en un module de collecte et un module d'entreposage. Une fois l'accès aux tâches terminé, les nœuds et leurs relations seront stockés dans la base de données graphique, et l'algorithme graphique sera utilisé pour établir les relations sanguines. Une fois la relation sanguine établie, l'anomalie du nœud lui-même prend en charge la découverte du système et le marquage manuel, et l'analyse d'impact peut être effectuée automatiquement. Lorsqu'une anomalie se produit dans un nœud, un message est notifié et les informations anormales se propagent le long de la lignée, ce qui affectera alors le calcul du score de qualité des liens en aval.

Lorsque l'exception affecte l'utilisateur final, nous essayons de re-décrire la perte en langage commercial. Sur la base du modèle de revenus complet, la valeur de chaque UV d'intention de chaque secteur d'activité peut être calculée (les visites des utilisateurs sur les pages de détails des commerçants et les pages de détails des commandes de groupe sont appelées visites d'intention), puis utiliser le trafic pour calculer automatiquement l'année. -état des visites sur l'année. Dérivation des pertes commerciales.

5 Fonctionnement de l'indicateur

5.1 Mise en œuvre du système

La méthode de mise en œuvre du système de score de qualité repose sur les points d'enfouissement et le diagnostic. Il est recommandé que le lien complet inclut la saisie des paramètres, le prétraitement du rappel, le rappel, le post-traitement du rappel, le tri grossier, le tri fin, le réarrangement, etc. Chaque lien peut échouer, la collecte de données doit donc couvrir les exceptions d'exécution et la saisie clé. et les informations de sortie de chaque lien, etc. Comme le montre la figure 10 ci-dessous, nous collectons de manière asynchrone des données cachées via Kafka, puis effectuons le traitement des données selon des scénarios : dans l'environnement de production, ES en temps quasi réel crée un index pour fournir des services de requête rapides pour les 4 derniers jours, et les journaux d'il y a 4 jours sont archivés dans Hive. De plus, les données des points enterrés sont analysées via le moteur Flink. Après le diagnostic nécessaire, les scores sont calculés en temps réel et les informations d'alarme sont transmises dans l'environnement de test, les journaux sont triés vers MySQL. en temps réel pour faciliter les tests et le dépannage. Enfin, un affichage structuré de la qualité des recommandations aux différentes étapes améliore la lisibilité des résultats.

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 10 Mise en œuvre du système de score de qualité

L'amélioration du système de score doit être progressivement encouragée Pour les systèmes de recommandation, le manque de résultats recommandés est le problème de qualité le plus grave. La première chose que nous collectons et calculons est le résultat nul de recommandation, qui correspond au taux de défaut de résultat et au taux de défaut de rappel dans les indicateurs de premier niveau et au taux de résultat nul et au taux de rappel nul dans les indicateurs de deuxième niveau. Dans le même temps, en raison des caractéristiques commerciales de l'entreprise globale, il existe de nombreuses industries et l'offre est inégalement répartie dans le temps et dans l'espace, un grand nombre de conditions de filtrage qui se croisent auront également des résultats vides, affectant le calcul des scores de qualité. .

Comment éliminer les résultats vides qui répondent aux attentes de l'entreprise et éliminer le bruit de qualité Sur la base de la prise de conscience des points cachés, le diagnostic devient très important. En prenant comme exemple les résultats vides, nous les identifions principalement sous trois aspects : le diagnostic des paramètres, le diagnostic des données et le diagnostic des liens. Le diagnostic des données fait référence au moment où une condition de filtrage en ligne produit un résultat vide, retournant à la source pour vérifier les données sous-jacentes une seconde fois et demandant si les données de la table inférieure sont vides. S'il n'y a effectivement aucun approvisionnement pertinent dans le tableau du bas, la règle sans alarme sera précipitée et la période de validité sans alarme sera définie. Au cours d'une période de temps, l'industrie actuelle dans la ville actuelle manque d'approvisionnement pertinent, et. le résultat vide ne sera pas inclus dans le calcul du score de qualité.

S'il y a une alimentation dans le tableau du bas, cela signifie qu'il y a une anomalie dans le processus de traitement des données ou de service, ce qui rend impossible le rappel. Ensuite, le lien d'erreur sera déterminé par le diagnostic du lien et inclus dans le correspondant. calcul du score de qualité. Comment établir un mécanisme de correspondance de règles (c'est-à-dire un moteur de règles) est la clé du moteur de diagnostic. Il existe aujourd'hui de nombreux choix de moteurs de règles, tels que EasyRule, Drools, Zools, Aviator, etc. Selon l'analyse ci-dessus, le moteur de diagnostic doit être capable d'effectuer un diagnostic de règles sur les paramètres de requête, les liens recommandés et les données sous-jacentes. Le diagnostic des paramètres de requête et des liens recommandés peut être effectué via les paramètres de mémoire, tandis que le diagnostic des données nécessite des informations provenant d'un stockage tiers, dont certaines doivent donc être personnalisées et développées. Compte tenu de la maturité et de la commodité des outils humains, le moteur d’expression Aviator est plus adapté. Afin de s'adapter au contenu qui doit être diagnostiqué, la primitive de diagnostic d'expression conçue est la suivante :

<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//参数诊断-原语表达</span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//是否符合一定参数的诊断原语</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cityId</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">include</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">string</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">split</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'1,2,3,4,5,6,7,8,9,10,16,17'</span>,<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">','</span>),<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">str</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cityId</span>))]<br><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//链路诊断-原语表达</span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//1、召回异常诊断原语</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallException</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recall</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#exception</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallException</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallException</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">''</span> ]<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//2、召回空无异常的诊断原语</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmpty</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recall</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#after</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmpty</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmpty</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">''</span> ]<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//3、召回不为空,过滤规则执行后为空的诊断原语</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmptyCode</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recall</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#after</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">predictFiltersEmptyCode</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">predict</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#after</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#filters</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">==</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">||</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recallEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">==</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">''</span>)<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">predictFiltersEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span>]<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//4、执行某一具体过滤规则后,导致无结果的匹配</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">filterEmptyCode</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">param</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">PredictStage</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#filter</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#after</span><span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#_compSkRef</span>#}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">filterEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">filterEmptyCode</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">==</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'deleteItemByConditionalFilter'</span> ]<br><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">//数据诊断-原语表达(判断底层是否有数据,若没有则为true,否则为false)</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">keys</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">keySpread</span>[<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">prefix</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">138_</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">ymtags_</span>][<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">crossOrder</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">city_$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cityId</span>}<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">_platform_$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">platformNo</span>}<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">_surgery_prj_$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">genericLvlIds</span>}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cnt</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cellar</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cellar</span>[<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">count</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$</span>{<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">keys</span>}],<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">global</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">check</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">aviator</span>[<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cnt</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">nil</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cnt</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">!=</span><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">''</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">&&</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">long</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cnt</span>) <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);"> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">0</span> ]</span>

5.2 Suivi des alarmes

Les points de qualité peuvent être utilisés pour la surveillance en temps réel et l'examen opérationnel, et les membres de l'équipe devez suivre les changements en temps opportun. Généralement, les systèmes d'alarme communs aux entreprises configurent les destinataires des alarmes en fonction de la granularité du nom du service. Les services de plate-forme tels que les systèmes de recommandation fournissent des services via une interface unifiée, mais les stratégies modèles sont gérées par différents étudiants et il existe un certain seuil de connaissance et de compréhension du secteur entre les entreprises. Le type d'alarmes diffusées par défaut peut facilement provoquer des tempêtes d'alarmes. Chacun ne peut pas se concentrer sur les problèmes de ses propres modules et manque parfois des alarmes. Dans un souci de taux de suivi (comme le montre la figure 11 ci-dessous), nous avons développé une fonction de suivi basée sur les alarmes existantes, acheminant les alarmes de niveaux de trafic spécifiques vers la personne en charge dédiée et enregistrant le suivi. flux d'état -up pour faciliter la notification en temps opportun et l'examen ultérieur. En termes d'opérations, nous construisons un tableau de bord qualité à travers des rapports de données et examinons régulièrement les fluctuations de qualité des différentes entreprises.

Modèle de qualité et pratique du système complet de recommandation commerciale de Meituan

Figure 11 Processus de suivi des alarmes

5.3 Effet de gouvernance

La mise en œuvre du score de qualité commence par le taux nul de résultat, et démonte et collecte le taux nul de rappel et le taux nul de prédiction du modèle en fonction le processus, réorganisez le taux nul de l'opérateur et agrégez-le en plusieurs dimensions de plate-forme, d'activité, de forme, de projet et de position du trafic en fonction de l'activité. Les actions et résultats de gouvernance sont répartis selon les aspects suivants :

  • Grâce au suivi et au diagnostic, nous pouvons déterminer si les résultats vides actuels sont des problèmes d'approvisionnement ou des problèmes de qualité, et exclure 98 % des résultats vides de l'inclusion dans le calcul du score de qualité pour éviter les fausses alarmes. les alarmes de résultat ont été réduites de 40 à 5. .
  • Sur la base de l'analyse du taux nul de chaque lien dans le processus de liaison, des mesures de gouvernance sont prises, y compris les spécifications des données (standardisation de la couche de données, spécifications d'étiquetage), l'architecture des services (isolation métier, données sous-jacentes double média, déclassement ), modifier les spécifications (Configurer l'inspection des pipelines en ligne, la lecture du trafic) et maintenir le taux de découverte du système de résultats vides au-dessus de 60 %.
  • Développement personnalisé du routage des alarmes pour éviter la diffusion des alarmes et prendre en charge l'état de suivi du marquage. Le taux de suivi des alarmes de résultat vide va d'un suivi indénombrable à 100 % au niveau du trafic principal.

Après la gestion et l'identification des résultats nuls, le taux nul actuel du trafic principal est de 0,01%, ce qui signifie que 99,99% des demandes de trafic principal ont des résultats. Lors de la création de scores de qualité, le taux de découverte du système et le suivi des alarmes sont garantis. . taux de progression.

5.4 Précipitation des actifs

Le système de recommandation fournit la valeur des données Ce n'est que lorsque les données sont capitalisées que cette valeur peut être durable et ajouter de la valeur. Le processus de création d’un modèle de qualité du système de recommandation concerne également l’accumulation d’actifs de données. Une fois les données collectées, elles deviennent un atout et doivent généralement remplir les quatre conditions suivantes : fluides, mesurables, contrôlables et à valeur ajoutée. Celles-ci sont toutes couvertes dans la méthode de calcul du chapitre 4. Le processus de fonctionnement des indicateurs est également le processus d’accumulation d’actifs de connaissances de qualité. Comment le modèle de défaut logiciel affecte-t-il la qualité de livraison du produit final ? Existe-t-il une corrélation ou une causalité entre eux ? Cet impact est-il explicitement impliqué dans le calcul du score ou est-il indirect ? Au cours du processus de sous-opération qualité, nous pouvons progressivement remplir la carte de qualité dans notre esprit et former des relations topologiques entre les indicateurs, les défauts, et les indicateurs et les défauts. Il s'agit d'un processus de capitalisation de la qualité. Par exemple, grâce aux pratiques commerciales des systèmes de recommandation, nous avons constaté que 80 % des échecs en ligne sont causés par la publication et que 80 % des échecs de publication sont causés par la publication de données. Cela peut nous guider pour réduire les échecs en ligne grâce à la gouvernance de la publication des données.

6 Plan futur

Sur la base de la convivialité, nous avons ajusté la méthode de calcul et établi un score de qualité du système de recommandation à plusieurs niveaux, et l'avons étendu à divers matériaux recommandés et divers modules commerciaux. des services provenant de parties externes. L'itération cognitive de la « présence ou de l'absence » au « bon ou mauvais » des services externes est également la base d'opérations raffinées en termes de qualité. Le plan de suivi consiste à continuer à enrichir le calcul et la couverture des liens du modèle de qualité ; d'autre part, nous effectuerons davantage de travaux de gouvernance de la qualité basés sur certaines des directions sur lesquelles nous nous concentrerons et que nous répéterons dans le modèle. L'avenir comprend :

  • En améliorant le suivi et le diagnostic, nous mettrons progressivement en œuvre des indicateurs à tous les niveaux du système de notation de qualité, enrichirons la connotation des scores de qualité et prendrons en compte davantage de problèmes de qualité.
  • En créant des déclassements flexibles de recommandations à plusieurs niveaux, itérez sur la compréhension des scores de qualité et quantifiez l'impact des différents déclassements sur le système.
  • Optimisez l'exactitude, la couverture et l'actualité du traçage des données, et évaluez plus précisément et plus rapidement l'impact des problèmes de qualité dans un certain lien.

7

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer