Árvore de páginas


01. DADOS GERAIS

Produto:

Empodera

Linha de Produto:

Experiência do Cliente

Segmento:

CX

Módulo:Sugestões
Função:

/server/application/opportunity/getGrupedByname.js
/server/application/opportunity/getCustomersByOpportunity.js
/server/application/opportunity/getCountCustomersByOpportunity.js

País:Brasil
Ticket:14573672 
Requisito/Story/Issue (informe o requisito relacionado) :CETEI- 5817


02. SITUAÇÃO/REQUISITO

No Empodera foi visto que na tela de sugestões está apresentado clientes negativos na coluna e nisso solicitou-se o ajuste para contemplar só os clientes ativos.

03. SOLUÇÃO

Analisado e realizado os ajustes necessários na quantidade que mostra na primeira tela e tbm ao clicar em cada uma oferta para ver a lista dos clientes. Abaixo os arquivos alterados e o que foi ajustado:

getGrupedByname.js:

'customer.active': true, => adicionado no match do filtro.

return await Opportunity.aggregate(query);
 
getGrupedByname.js retirado:
const listCountGroupedBySlug = require('../opportunityFeedback/listCountGroupedBySlug');

let opportunities = await Opportunity.aggregate(query);

  const foundFeedbacks = await listCountGroupedBySlug({adherent: false});

  const feedbacskUser = foundFeedbacks.reduce((acc, feedbackUser) =>

{     acc.set(feedbackUser._id, feedbackUser.total);     return acc;   }

, new Map());

  opportunities = opportunities.map((opportunity) =>

{     const totalNegativeFeedback = feedbacskUser.get(opportunity.slug);     opportunity.count -= totalNegativeFeedback || 0;     if (opportunity.count < 0) opportunity.count = 0;     return opportunity;   }

);

getCustomersByOpportunity.js, retirado:

{
      $match:

{         'feedback.adherent':
{$ne: false}

,
      },
    },

{
      $group:

{         _id: '$customer._id',         codT:
{$first: '$customer.codT'}

,
        name: {$first: '$customer.name'},
        segment: {$first: '$customer.contract.segment'},
        avgticketprice: {$first: '$recommendations.avgticketprice'},
        mrr: {$first: '$customer.financial.recurrent.contracted'},
        healthscore: {$first: '$customer.healthscore.empodera.result'},
        ranking: {$first: '$recommendations.ranking'},
        slug: {$first: '$recommendations.slug'},
        feedback: {$first: '$feedback'},
      },
    },
 
 
getCustomersByOpportunity.js, adicionado:

'customer.active': true,

getCountCustomersByOpportunity.js retirado:

const getCountFeedback = require('../opportunityFeedback/getCountFeedback');

{
      $match: {
        recommendations: {
          $elemMatch:

{             slug,             ...(type ?

{type}

: {}),
          },
        },
 
const countFeedbackNagative = await getCountFeedback(

{     adherent: false,     slug,   }

);

  - countFeedbackNagative;

getCountCustomersByOpportunity.js adicionado:

{$unwind: '$recommendations'},
    {
      $match:

{         'recommendations.slug': slug,         ...(type ?

{'recommendations.type': type}

: {}),
      },
    },
    {
      $lookup: {
        from: 'opportunityFeedbacks',
        let:

{           slug: '$recommendations.slug',           codT: '$codT',         }

,
        pipeline: [
          {
            $match: {
              $expr: {
                $and: [
                 

{                     $eq: ['$opportunity.slug', '$$slug'],                   }

,
                 

{                     $eq: ['$codT', '$$codT'],                   }

,
                ],
              },
            },
          },
        ],
        as: 'feedback',
      },
    },

'customer.active': true,

04. DEMAIS INFORMAÇÕES

  • Não se aplica

05. ASSUNTOS RELACIONADOS

  • Não se aplica