Clean creer stats + add satisfaction for creer
parent
a0d29b851a
commit
a4c18b5a66
|
@ -142,11 +142,6 @@ const buildCreerSegmentQuery = (period, granularity) => ({
|
|||
$eq: 'accueil',
|
||||
},
|
||||
},
|
||||
// filter: {
|
||||
// page_chapter2: {
|
||||
// $eq: 'guide',
|
||||
// },
|
||||
// },
|
||||
},
|
||||
},
|
||||
],
|
||||
|
@ -168,23 +163,9 @@ const buildCreerSegmentQuery = (period, granularity) => ({
|
|||
sort: ['-m_visits'],
|
||||
filter: {
|
||||
property: {
|
||||
// $AND: [
|
||||
// {
|
||||
// page: {
|
||||
// $neq: 'liste',
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
page_chapter1: {
|
||||
$eq: 'creer',
|
||||
},
|
||||
// },
|
||||
// {
|
||||
// page_chapter2: {
|
||||
// $eq: 'statut',
|
||||
// },
|
||||
// },
|
||||
// ],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -194,70 +175,6 @@ const buildCreerSegmentQuery = (period, granularity) => ({
|
|||
},
|
||||
})
|
||||
|
||||
// {
|
||||
// columns: [
|
||||
// 'page',
|
||||
// 'page_chapter1',
|
||||
// 'page_chapter2',
|
||||
// 'page_chapter3',
|
||||
// 'm_visits',
|
||||
// ],
|
||||
// segment: {
|
||||
// section: {
|
||||
// scope: 'visit_id',
|
||||
// category: 'property',
|
||||
// coverage: 'at_least_one_visit',
|
||||
// content: {
|
||||
// and: [
|
||||
// {
|
||||
// condition: {
|
||||
// filter: {
|
||||
// page_chapter1: {
|
||||
// $eq: 'creer',
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// condition: {
|
||||
// filter: {
|
||||
// page_chapter2: {
|
||||
// $eq: 'guide',
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// mode: 'include',
|
||||
// },
|
||||
// },
|
||||
// space: {
|
||||
// s: [617190],
|
||||
// },
|
||||
// period: {
|
||||
// p1: [period],
|
||||
// },
|
||||
// evo: {
|
||||
// granularity,
|
||||
// top: {
|
||||
// 'page-num': 1,
|
||||
// 'max-results': 500,
|
||||
// sort: ['-m_visits'],
|
||||
// filter: {
|
||||
// property: {
|
||||
// page_chapter1: {
|
||||
// $eq: 'creer',
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// options: {
|
||||
// ignore_null_properties: true,
|
||||
// },
|
||||
// }
|
||||
|
||||
const buildSatisfactionQuery = () => ({
|
||||
columns: [
|
||||
'page_chapter1',
|
||||
|
@ -283,7 +200,7 @@ const buildSatisfactionQuery = () => ({
|
|||
$AND: [
|
||||
{
|
||||
page_chapter1: {
|
||||
$in: ['gerer', 'simulateurs'],
|
||||
$in: ['creer', 'gerer', 'simulateurs'],
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -362,15 +279,13 @@ const uniformiseData = (data) =>
|
|||
// It seems to only by one per month thought... This hacks resolves it
|
||||
.filter(({ m_visits }) => m_visits === undefined || m_visits > 2)
|
||||
|
||||
const flattenPage = (list) => {
|
||||
// console.log('=>', JSON.stringify(list, null, 2))
|
||||
return list
|
||||
const flattenPage = (list) =>
|
||||
list
|
||||
.filter(
|
||||
(p) => p && (p.page_chapter2 !== 'N/A' || p.page_chapter1 === 'creer')
|
||||
) // Remove simulateur landing page
|
||||
.map(({ Rows, ...page }) => Rows.map((r) => ({ ...page, ...r })))
|
||||
.flat()
|
||||
}
|
||||
|
||||
async function fetchDailyVisits() {
|
||||
const pages = uniformiseData([
|
||||
|
@ -381,15 +296,16 @@ async function fetchDailyVisits() {
|
|||
(await fetchApi(buildSiteQuery(last60days, 'D')))[0].Rows
|
||||
)
|
||||
|
||||
const creer = uniformiseData(
|
||||
flattenPage(await fetchApi(buildCreerSegmentQuery(last60days, 'D')))
|
||||
)
|
||||
|
||||
const { start, end } = last60days
|
||||
|
||||
return {
|
||||
pages,
|
||||
site,
|
||||
creer: uniformiseData([
|
||||
// ...flattenPage(await fetchApi(buildSimulateursQuery(last60days, 'D'))),
|
||||
...flattenPage(await fetchApi(buildCreerSegmentQuery(last60days, 'D'))),
|
||||
]),
|
||||
creer,
|
||||
api: await apiStats(start, end, 'date'),
|
||||
}
|
||||
}
|
||||
|
@ -411,21 +327,20 @@ async function fetchMonthlyVisits() {
|
|||
),
|
||||
]
|
||||
|
||||
const creer = uniformiseData(
|
||||
flattenPage(await fetchApi(buildCreerSegmentQuery(last36Months, 'M')))
|
||||
)
|
||||
|
||||
const { start, end } = last36Months
|
||||
|
||||
return {
|
||||
pages,
|
||||
site,
|
||||
creer: uniformiseData([
|
||||
// ...flattenPage(await fetchApi(buildSimulateursQuery(last36Months, 'M'))),
|
||||
...flattenPage(await fetchApi(buildCreerSegmentQuery(last36Months, 'M'))),
|
||||
]),
|
||||
creer,
|
||||
api: await apiStats(start, end, 'month'),
|
||||
}
|
||||
}
|
||||
|
||||
// https://api.atinternet.io/v3/data/getData?param=%7B%22columns%22:%5B%22page%22,%22page_chapter1%22,%22page_chapter2%22,%22page_chapter3%22,%22m_unique_visitors%22%5D,%22sort%22:%5B%22-m_unique_visitors%22%5D,%22filter%22:%7B%22property%22:%7B%22$AND%22:%5B%7B%22page%22:%7B%22$neq%22:%22liste%22%7D%7D,%7B%22page_chapter1%22:%7B%22$eq%22:%22creer%22%7D%7D,%7B%22page_chapter2%22:%7B%22$eq%22:%22statut%22%7D%7D%5D%7D%7D,%22segment%22:%7B%22section%22:%7B%22scope%22:%22visit_id%22,%22category%22:%22property%22,%22coverage%22:%22at_least_one_visit%22,%22content%22:%7B%22and%22:%5B%7B%22condition%22:%7B%22filter%22:%7B%22page_chapter1%22:%7B%22$eq%22:%22creer%22%7D%7D%7D%7D,%7B%22condition%22:%7B%22filter%22:%7B%22page_chapter2%22:%7B%22$eq%22:%22guide%22%7D%7D%7D%7D%5D%7D,%22mode%22:%22include%22%7D%7D,%22space%22:%7B%22s%22:%5B617190%5D%7D,%22period%22:%7B%22p1%22:%5B%7B%22type%22:%22D%22,%22start%22:%222020-01-01%22,%22end%22:%222022-10-11%22%7D%5D%7D,%22max-results%22:50,%22page-num%22:1,%22options%22:%7B%22ignore_null_properties%22:true,%22eco_mode%22:true%7D%7D
|
||||
|
||||
async function fetchUserAnswersStats() {
|
||||
const ticketLists = await fetch(
|
||||
'https://mon-entreprise.zammad.com/api/v1/ticket_overviews?view=tickets_repondus_le_mois_dernier',
|
||||
|
@ -531,7 +446,6 @@ async function main() {
|
|||
fetchUserFeedbackIssues(),
|
||||
fetchUserAnswersStats(),
|
||||
])
|
||||
console.log('rawSatisfaction')
|
||||
const satisfaction = uniformiseData(flattenPage(await rawSatisfaction)).map(
|
||||
(page) => {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
|
|
|
@ -65,6 +65,53 @@ const filterByChapter2 = (pages: Pageish[], chapter2: Chapter2 | '') => {
|
|||
}))
|
||||
}
|
||||
|
||||
const statsCreer = (pages: Pageish[], creer: Pageish[]) => {
|
||||
const accueil = groupBy(
|
||||
pages.filter(
|
||||
(p) =>
|
||||
'page' in p &&
|
||||
p.page === 'accueil' &&
|
||||
p.page_chapter1 === 'creer' &&
|
||||
true
|
||||
),
|
||||
(p) => ('date' in p ? p.date : p.month)
|
||||
)
|
||||
|
||||
const commencee = groupBy(
|
||||
creer.filter(
|
||||
(p) =>
|
||||
'page' in p &&
|
||||
p.page === 'accueil' &&
|
||||
p.page_chapter1 === 'creer' &&
|
||||
true
|
||||
),
|
||||
(p) => ('date' in p ? p.date : p.month)
|
||||
)
|
||||
const terminee = groupBy(
|
||||
creer.filter(
|
||||
(p) =>
|
||||
'page' in p &&
|
||||
p.page !== 'liste' &&
|
||||
p.page_chapter1 === 'creer' &&
|
||||
(p.page_chapter2 as string) === 'statut' &&
|
||||
true
|
||||
),
|
||||
(p) => ('date' in p ? p.date : p.month)
|
||||
)
|
||||
|
||||
return Object.entries(commencee).map(([date, values]) => ({
|
||||
date,
|
||||
nombre: {
|
||||
accueil: accueil[date]?.reduce((acc, p) => acc + p.nombre, 0),
|
||||
simulation_commencee: values.reduce((acc, p) => acc + p.nombre, 0),
|
||||
simulation_terminee: terminee[date]?.reduce(
|
||||
(acc, p) => acc + p.nombre,
|
||||
0
|
||||
),
|
||||
},
|
||||
}))
|
||||
}
|
||||
|
||||
function groupByDate(data: Pageish[]) {
|
||||
return Object.entries(
|
||||
groupBy(
|
||||
|
@ -143,54 +190,10 @@ const StatsDetail = ({ stats }: StatsDetailProps) => {
|
|||
}))
|
||||
}
|
||||
if (chapter2 === 'guide') {
|
||||
const creer = rawData.creer as Pageish[]
|
||||
const pages = rawData.pages as Pageish[]
|
||||
const creer = rawData.creer as Pageish[]
|
||||
|
||||
const accueil = groupBy(
|
||||
pages.filter(
|
||||
(p) =>
|
||||
'page' in p &&
|
||||
p.page === 'accueil' &&
|
||||
p.page_chapter1 === 'creer' &&
|
||||
true
|
||||
),
|
||||
(p) => ('date' in p ? p.date : p.month)
|
||||
)
|
||||
|
||||
const commencee = groupBy(
|
||||
creer.filter(
|
||||
(p) =>
|
||||
'page' in p &&
|
||||
p.page === 'accueil' &&
|
||||
p.page_chapter1 === 'creer' &&
|
||||
true
|
||||
),
|
||||
(p) => ('date' in p ? p.date : p.month)
|
||||
)
|
||||
const terminee = groupBy(
|
||||
creer.filter(
|
||||
(p) =>
|
||||
'page' in p &&
|
||||
p.page !== 'liste' &&
|
||||
// p.page === 'accueil' &&
|
||||
p.page_chapter1 === 'creer' &&
|
||||
(p.page_chapter2 as string) === 'statut' &&
|
||||
true
|
||||
),
|
||||
(p) => ('date' in p ? p.date : p.month)
|
||||
)
|
||||
|
||||
return Object.entries(commencee).map(([date, values]) => ({
|
||||
date,
|
||||
nombre: {
|
||||
accueil: accueil[date]?.reduce((acc, p) => acc + p.nombre, 0),
|
||||
simulation_commencee: values.reduce((acc, p) => acc + p.nombre, 0),
|
||||
simulation_terminee: terminee[date]?.reduce(
|
||||
(acc, p) => acc + p.nombre,
|
||||
0
|
||||
),
|
||||
},
|
||||
}))
|
||||
return statsCreer(pages, creer)
|
||||
}
|
||||
|
||||
return filterByChapter2(rawData.pages as Pageish[], chapter2)
|
||||
|
|
Loading…
Reference in New Issue