0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-02-17 22:04:19 -05:00

feat(core): dau curve contains 0 count points (#1105)

This commit is contained in:
IceHe.xyz 2022-06-13 16:18:16 +08:00 committed by GitHub
parent 6d3857ef35
commit 75ac874a2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 18 deletions

View file

@ -188,19 +188,41 @@ describe('dashboardRoutes', () => {
const response = await logRequest.get('/dashboard/users/active');
expect(response.status).toEqual(200);
expect(response.body).toEqual({
dauCurve: mockDailyActiveUserCounts,
dau: {
count: 530,
delta: 1,
},
wau: {
count: 1000,
delta: 0,
},
mau: {
count: 1000,
delta: 0,
},
dauCurve: [
{ date: '2022-05-01', count: 501 },
{ date: '2022-05-02', count: 0 },
{ date: '2022-05-03', count: 0 },
{ date: '2022-05-04', count: 0 },
{ date: '2022-05-05', count: 0 },
{ date: '2022-05-06', count: 0 },
{ date: '2022-05-07', count: 0 },
{ date: '2022-05-08', count: 0 },
{ date: '2022-05-09', count: 0 },
{ date: '2022-05-10', count: 0 },
{ date: '2022-05-11', count: 0 },
{ date: '2022-05-12', count: 0 },
{ date: '2022-05-13', count: 0 },
{ date: '2022-05-14', count: 0 },
{ date: '2022-05-15', count: 0 },
{ date: '2022-05-16', count: 0 },
{ date: '2022-05-17', count: 0 },
{ date: '2022-05-18', count: 0 },
{ date: '2022-05-19', count: 0 },
{ date: '2022-05-20', count: 0 },
{ date: '2022-05-21', count: 0 },
{ date: '2022-05-22', count: 0 },
{ date: '2022-05-23', count: 523 },
{ date: '2022-05-24', count: 0 },
{ date: '2022-05-25', count: 0 },
{ date: '2022-05-26', count: 0 },
{ date: '2022-05-27', count: 0 },
{ date: '2022-05-28', count: 0 },
{ date: '2022-05-29', count: 529 },
{ date: '2022-05-30', count: 530 },
],
dau: { count: 530, delta: 1 },
wau: { count: 1000, delta: 0 },
mau: { count: 1000, delta: 0 },
});
});
});

View file

@ -14,9 +14,9 @@ import { AuthedRouter } from './types';
const getDateString = (day: Dayjs) => day.format('YYYY-MM-DD');
const lastTimestampOfDay = (day: Dayjs) => day.endOf('day').valueOf();
const indices = (length: number) => [...Array.from({ length }).keys()];
const indicesFrom0To6 = [...Array.from({ length: 7 }).keys()];
const lastTimestampOfDay = (day: Dayjs) => day.endOf('day').valueOf();
export default function dashboardRoutes<T extends AuthedRouter>(router: T) {
router.get('/dashboard/users/total', async (ctx, next) => {
@ -43,10 +43,10 @@ export default function dashboardRoutes<T extends AuthedRouter>(router: T) {
const yesterdayNewUserCount = last14DaysNewUserCounts.get(getDateString(yesterday)) ?? 0;
const todayDelta = todayNewUserCount - yesterdayNewUserCount;
const last7DaysNewUserCount = indicesFrom0To6
const last7DaysNewUserCount = indices(7)
.map((index) => getDateString(today.subtract(index, 'day')))
.reduce((sum, date) => sum + (last14DaysNewUserCounts.get(date) ?? 0), 0);
const newUserCountFrom13DaysAgoTo7DaysAgo = indicesFrom0To6
const newUserCountFrom13DaysAgoTo7DaysAgo = indices(7)
.map((index) => getDateString(today.subtract(7 + index, 'day')))
.reduce((sum, date) => sum + (last14DaysNewUserCounts.get(date) ?? 0), 0);
const last7DaysDelta = last7DaysNewUserCount - newUserCountFrom13DaysAgoTo7DaysAgo;
@ -119,8 +119,15 @@ export default function dashboardRoutes<T extends AuthedRouter>(router: T) {
const previousDAU = last30DauCounts.find(({ date }) => date === previousDate)?.count ?? 0;
const dau = last30DauCounts.find(({ date }) => date === targetDate)?.count ?? 0;
const dauCurve = indices(30).map((index) => {
const dateString = getDateString(targetDay.subtract(29 - index, 'day'));
const count = last30DauCounts.find(({ date }) => date === dateString)?.count ?? 0;
return { date: dateString, count };
});
ctx.body = {
dauCurve: last30DauCounts,
dauCurve,
dau: {
count: dau,
delta: dau - previousDAU,