enterprise-logging-system 1.0.37 → 1.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend/models/AccessLog.d.ts +70 -1
- package/dist/backend/models/AccessLog.d.ts.map +1 -1
- package/dist/backend/models/AccessLog.js +18 -4
- package/dist/backend/models/AccessLog.js.map +1 -1
- package/dist/backend/repositories/AccessLogRepository.d.ts +2 -3
- package/dist/backend/repositories/AccessLogRepository.d.ts.map +1 -1
- package/dist/backend/repositories/AccessLogRepository.js +87 -95
- package/dist/backend/repositories/AccessLogRepository.js.map +1 -1
- package/package.json +1 -1
|
@@ -41,5 +41,74 @@ export interface AccessLog extends BaseLogEntry {
|
|
|
41
41
|
session_date: string;
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
-
export declare const ACCESS_LOG_INDEXES:
|
|
44
|
+
export declare const ACCESS_LOG_INDEXES: ({
|
|
45
|
+
keys: {
|
|
46
|
+
userId: number;
|
|
47
|
+
timestamp: number;
|
|
48
|
+
tenantId?: undefined;
|
|
49
|
+
sessionId?: undefined;
|
|
50
|
+
activityType?: undefined;
|
|
51
|
+
pageId?: undefined;
|
|
52
|
+
};
|
|
53
|
+
name: string;
|
|
54
|
+
unique: boolean;
|
|
55
|
+
partialFilterExpression: {
|
|
56
|
+
timestamp: {
|
|
57
|
+
$type: string;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
expireAfterSeconds?: undefined;
|
|
61
|
+
} | {
|
|
62
|
+
keys: {
|
|
63
|
+
tenantId: number;
|
|
64
|
+
userId: number;
|
|
65
|
+
timestamp: number;
|
|
66
|
+
sessionId?: undefined;
|
|
67
|
+
activityType?: undefined;
|
|
68
|
+
pageId?: undefined;
|
|
69
|
+
};
|
|
70
|
+
name: string;
|
|
71
|
+
unique?: undefined;
|
|
72
|
+
partialFilterExpression?: undefined;
|
|
73
|
+
expireAfterSeconds?: undefined;
|
|
74
|
+
} | {
|
|
75
|
+
keys: {
|
|
76
|
+
sessionId: number;
|
|
77
|
+
activityType: number;
|
|
78
|
+
timestamp: number;
|
|
79
|
+
userId?: undefined;
|
|
80
|
+
tenantId?: undefined;
|
|
81
|
+
pageId?: undefined;
|
|
82
|
+
};
|
|
83
|
+
name: string;
|
|
84
|
+
unique?: undefined;
|
|
85
|
+
partialFilterExpression?: undefined;
|
|
86
|
+
expireAfterSeconds?: undefined;
|
|
87
|
+
} | {
|
|
88
|
+
keys: {
|
|
89
|
+
pageId: number;
|
|
90
|
+
timestamp: number;
|
|
91
|
+
userId?: undefined;
|
|
92
|
+
tenantId?: undefined;
|
|
93
|
+
sessionId?: undefined;
|
|
94
|
+
activityType?: undefined;
|
|
95
|
+
};
|
|
96
|
+
name: string;
|
|
97
|
+
unique?: undefined;
|
|
98
|
+
partialFilterExpression?: undefined;
|
|
99
|
+
expireAfterSeconds?: undefined;
|
|
100
|
+
} | {
|
|
101
|
+
keys: {
|
|
102
|
+
timestamp: number;
|
|
103
|
+
userId?: undefined;
|
|
104
|
+
tenantId?: undefined;
|
|
105
|
+
sessionId?: undefined;
|
|
106
|
+
activityType?: undefined;
|
|
107
|
+
pageId?: undefined;
|
|
108
|
+
};
|
|
109
|
+
name: string;
|
|
110
|
+
expireAfterSeconds: number;
|
|
111
|
+
unique?: undefined;
|
|
112
|
+
partialFilterExpression?: undefined;
|
|
113
|
+
})[];
|
|
45
114
|
//# sourceMappingURL=AccessLog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessLog.d.ts","sourceRoot":"","sources":["../../../src/backend/models/AccessLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzF,MAAM,WAAW,SAAU,SAAQ,YAAY;IAE7C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,IAAI,EAAE,WAAW,GAAG,kBAAkB,GAAG,eAAe,GAAG,aAAa,CAAC;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAGjC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IAGjB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IAGtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,IAAI,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IAGH,OAAO,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"AccessLog.d.ts","sourceRoot":"","sources":["../../../src/backend/models/AccessLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzF,MAAM,WAAW,SAAU,SAAQ,YAAY;IAE7C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,IAAI,EAAE,WAAW,GAAG,kBAAkB,GAAG,eAAe,GAAG,aAAa,CAAC;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAGjC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IAGjB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IAGtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,IAAI,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IAGH,OAAO,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmB9B,CAAC"}
|
|
@@ -2,9 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ACCESS_LOG_INDEXES = void 0;
|
|
4
4
|
exports.ACCESS_LOG_INDEXES = [
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
// UNBREAKABLE: Unique compound index on userId + date to prevent duplicates at database level
|
|
6
|
+
// This is the ultimate guarantee - MongoDB will reject any duplicate entries
|
|
7
|
+
{
|
|
8
|
+
keys: {
|
|
9
|
+
userId: 1,
|
|
10
|
+
timestamp: 1
|
|
11
|
+
},
|
|
12
|
+
name: 'unique_user_daily_idx',
|
|
13
|
+
unique: true,
|
|
14
|
+
partialFilterExpression: {
|
|
15
|
+
timestamp: { $type: 'date' }
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
// Additional indexes for performance
|
|
19
|
+
{ keys: { tenantId: 1, userId: 1, timestamp: -1 }, name: 'tenant_user_date_idx' },
|
|
20
|
+
{ keys: { sessionId: 1, activityType: 1, timestamp: -1 }, name: 'session_activity_idx' },
|
|
21
|
+
{ keys: { pageId: 1, timestamp: -1 }, name: 'page_tracking_idx' },
|
|
22
|
+
{ keys: { timestamp: 1 }, name: 'timestamp_idx', expireAfterSeconds: 2592000 } // 30 days TTL
|
|
9
23
|
];
|
|
10
24
|
//# sourceMappingURL=AccessLog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessLog.js","sourceRoot":"","sources":["../../../src/backend/models/AccessLog.ts"],"names":[],"mappings":";;;AA8Da,QAAA,kBAAkB,GAAG;
|
|
1
|
+
{"version":3,"file":"AccessLog.js","sourceRoot":"","sources":["../../../src/backend/models/AccessLog.ts"],"names":[],"mappings":";;;AA8Da,QAAA,kBAAkB,GAAG;IAChC,8FAA8F;IAC9F,6EAA6E;IAC7E;QACE,IAAI,EAAE;YACJ,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;SACb;QACD,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,IAAI;QACZ,uBAAuB,EAAE;YACvB,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SAC7B;KACF;IACD,qCAAqC;IACrC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE;IACjF,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE;IACxF,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACjE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,cAAc;CAC9F,CAAC"}
|
|
@@ -5,9 +5,8 @@ import { DateRange, AccessLogListQuery, ListResult } from '../../shared/types';
|
|
|
5
5
|
export declare class AccessLogRepository extends BaseRepository<AccessLog> {
|
|
6
6
|
constructor(db: Db);
|
|
7
7
|
/**
|
|
8
|
-
* Log a page view.
|
|
9
|
-
*
|
|
10
|
-
* a new one. This ensures ONE access log entry per USER per DAY.
|
|
8
|
+
* Log a page view. UNBREAKABLE RULE: ONE entry per userId per day.
|
|
9
|
+
* Uses userId + date as the ONLY unique key. NEVER creates duplicates.
|
|
11
10
|
*/
|
|
12
11
|
logPageView(log: Omit<AccessLog, '_id' | 'type' | 'indexes'>): Promise<AccessLog>;
|
|
13
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessLogRepository.d.ts","sourceRoot":"","sources":["../../../src/backend/repositories/AccessLogRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAoB,kBAAkB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjG,qBAAa,mBAAoB,SAAQ,cAAc,CAAC,SAAS,CAAC;gBACpD,EAAE,EAAE,EAAE;IAIlB
|
|
1
|
+
{"version":3,"file":"AccessLogRepository.d.ts","sourceRoot":"","sources":["../../../src/backend/repositories/AccessLogRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAoB,kBAAkB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjG,qBAAa,mBAAoB,SAAQ,cAAc,CAAC,SAAS,CAAC;gBACpD,EAAE,EAAE,EAAE;IAIlB;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAsJvF;;;;OAIG;IACG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IA0H/E,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAO3E,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAInE;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAyC/D,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAYrF,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -8,142 +8,134 @@ class AccessLogRepository extends BaseRepository_1.BaseRepository {
|
|
|
8
8
|
super(db, 'access_logs', AccessLog_1.ACCESS_LOG_INDEXES);
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
|
-
* Log a page view.
|
|
12
|
-
*
|
|
13
|
-
* a new one. This ensures ONE access log entry per USER per DAY.
|
|
11
|
+
* Log a page view. UNBREAKABLE RULE: ONE entry per userId per day.
|
|
12
|
+
* Uses userId + date as the ONLY unique key. NEVER creates duplicates.
|
|
14
13
|
*/
|
|
15
14
|
async logPageView(log) {
|
|
16
|
-
// Get start and end of the day for the current timestamp
|
|
17
15
|
const currentDate = new Date(log.timestamp);
|
|
18
|
-
const startOfDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 0, 0, 0, 0);
|
|
19
|
-
const endOfDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 23, 59, 59, 999);
|
|
20
|
-
// Create a unique daily key for this USER (not session)
|
|
21
|
-
// This ensures one entry per user per day, regardless of session
|
|
22
16
|
const dateKey = `${currentDate.getFullYear()}-${String(currentDate.getMonth() + 1).padStart(2, '0')}-${String(currentDate.getDate()).padStart(2, '0')}`;
|
|
23
17
|
const dailyKey = `${log.userId}_${dateKey}`;
|
|
24
|
-
console.log(`🔍
|
|
25
|
-
//
|
|
18
|
+
console.log(`🔍 AccessLog: UNBREAKABLE KEY: ${dailyKey}`);
|
|
19
|
+
// UNBREAKABLE: Use findOneAndUpdate with upsert to GUARANTEE single entry
|
|
20
|
+
// This is atomic and prevents race conditions
|
|
21
|
+
const startOfDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 0, 0, 0, 0);
|
|
22
|
+
const endOfDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 23, 59, 59, 999);
|
|
23
|
+
// First, check if entry exists
|
|
26
24
|
const existingLog = await this.collection.findOne({
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
]
|
|
25
|
+
userId: log.userId,
|
|
26
|
+
timestamp: {
|
|
27
|
+
$gte: startOfDay,
|
|
28
|
+
$lte: endOfDay
|
|
29
|
+
}
|
|
34
30
|
});
|
|
35
31
|
if (existingLog) {
|
|
36
|
-
console.log(`✅
|
|
37
|
-
// Check
|
|
32
|
+
console.log(`✅ AccessLog: UPDATING existing entry for ${log.userId}`);
|
|
33
|
+
// Check for rapid duplicates (same page within 10 seconds)
|
|
38
34
|
const pageVisits = existingLog.pageVisits || [];
|
|
39
35
|
if (pageVisits.length > 0) {
|
|
40
36
|
const lastVisit = pageVisits[pageVisits.length - 1];
|
|
41
37
|
const timeSinceLastVisit = log.timestamp.getTime() - new Date(lastVisit.visitTime).getTime();
|
|
42
38
|
const isSamePage = lastVisit.pageRoute === (log.pageRoute || log.pageId);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
console.log(`⏭️ Skipping duplicate page visit: ${log.pageRoute} (${timeSinceLastVisit}ms since last visit)`);
|
|
39
|
+
if (isSamePage && timeSinceLastVisit < 10000) {
|
|
40
|
+
console.log(`⏭️ AccessLog: Skipping duplicate (${timeSinceLastVisit}ms ago)`);
|
|
46
41
|
return existingLog;
|
|
47
42
|
}
|
|
48
43
|
}
|
|
49
|
-
//
|
|
50
|
-
const startTime = new Date(existingLog.startTime || existingLog.timestamp);
|
|
51
|
-
const newDuration = log.timestamp.getTime() - startTime.getTime();
|
|
52
|
-
// Increment activity count
|
|
53
|
-
const newActivityCount = (existingLog.activityCount || 0) + 1;
|
|
54
|
-
// Add this page visit to the pageVisits array
|
|
44
|
+
// Add new page visit
|
|
55
45
|
const newPageVisit = {
|
|
56
46
|
pageId: log.pageId || log.pageRoute || 'unknown',
|
|
57
47
|
pageTitle: log.pageTitle || 'Unknown Page',
|
|
58
48
|
pageRoute: log.pageRoute || log.pageId || '/unknown',
|
|
59
49
|
visitTime: log.timestamp,
|
|
60
|
-
duration: 0,
|
|
61
|
-
sessionId: log.sessionId
|
|
50
|
+
duration: 0,
|
|
51
|
+
sessionId: log.sessionId
|
|
62
52
|
};
|
|
63
|
-
// Update duration of previous visit
|
|
53
|
+
// Update duration of previous visit
|
|
64
54
|
if (pageVisits.length > 0) {
|
|
65
55
|
const lastVisit = pageVisits[pageVisits.length - 1];
|
|
66
|
-
lastVisit.duration = log.timestamp.getTime() - new Date(lastVisit.visitTime).getTime();
|
|
56
|
+
lastVisit.duration = Math.max(0, log.timestamp.getTime() - new Date(lastVisit.visitTime).getTime());
|
|
67
57
|
}
|
|
68
58
|
pageVisits.push(newPageVisit);
|
|
69
|
-
|
|
70
|
-
const
|
|
59
|
+
const startTime = new Date(existingLog.startTime || existingLog.timestamp);
|
|
60
|
+
const newDuration = log.timestamp.getTime() - startTime.getTime();
|
|
61
|
+
const newActivityCount = (existingLog.activityCount || 0) + 1;
|
|
62
|
+
// ATOMIC UPDATE - prevents race conditions
|
|
63
|
+
const result = await this.collection.findOneAndUpdate({
|
|
64
|
+
_id: existingLog._id,
|
|
65
|
+
userId: log.userId,
|
|
66
|
+
timestamp: { $gte: startOfDay, $lte: endOfDay }
|
|
67
|
+
}, {
|
|
68
|
+
$set: {
|
|
69
|
+
timestamp: log.timestamp,
|
|
70
|
+
pageId: log.pageId,
|
|
71
|
+
pageTitle: log.pageTitle,
|
|
72
|
+
pageUrl: log.pageUrl,
|
|
73
|
+
pageRoute: log.pageRoute,
|
|
74
|
+
endTime: log.timestamp,
|
|
75
|
+
activeDuration: newDuration,
|
|
76
|
+
activityCount: newActivityCount,
|
|
77
|
+
pageVisits: pageVisits,
|
|
78
|
+
sessionId: log.sessionId,
|
|
79
|
+
'indexes.session_date': dailyKey
|
|
80
|
+
}
|
|
81
|
+
}, { returnDocument: 'after' });
|
|
82
|
+
console.log(`✅ AccessLog: Updated - ${pageVisits.length} visits, ${Math.round(newDuration / 1000)}s duration`);
|
|
83
|
+
return result.value || existingLog;
|
|
84
|
+
}
|
|
85
|
+
console.log(`📝 AccessLog: Creating FIRST entry for ${log.userId} on ${dateKey}`);
|
|
86
|
+
// UNBREAKABLE: Use findOneAndUpdate with upsert for atomic insert
|
|
87
|
+
// This prevents race conditions where two requests try to create at the same time
|
|
88
|
+
const result = await this.collection.findOneAndUpdate({
|
|
89
|
+
userId: log.userId,
|
|
90
|
+
timestamp: { $gte: startOfDay, $lte: endOfDay }
|
|
91
|
+
}, {
|
|
92
|
+
$setOnInsert: {
|
|
93
|
+
_id: this.generateId(),
|
|
94
|
+
tenantId: log.tenantId,
|
|
95
|
+
userId: log.userId,
|
|
96
|
+
userRole: log.userRole,
|
|
97
|
+
sessionId: log.sessionId,
|
|
98
|
+
ipAddress: log.ipAddress,
|
|
99
|
+
userAgent: log.userAgent,
|
|
71
100
|
timestamp: log.timestamp,
|
|
101
|
+
metadata: log.metadata,
|
|
102
|
+
username: log.username,
|
|
103
|
+
employeeId: log.employeeId,
|
|
104
|
+
type: 'PAGE_OPEN',
|
|
105
|
+
activityType: log.activityType,
|
|
106
|
+
activityName: log.activityName,
|
|
107
|
+
eventTime: log.eventTime,
|
|
108
|
+
startTime: log.startTime || log.timestamp,
|
|
109
|
+
browser: log.browser,
|
|
72
110
|
pageId: log.pageId,
|
|
73
111
|
pageTitle: log.pageTitle,
|
|
74
112
|
pageUrl: log.pageUrl,
|
|
75
113
|
pageRoute: log.pageRoute,
|
|
76
114
|
previousPage: log.previousPage,
|
|
77
|
-
endTime: log.timestamp,
|
|
78
|
-
activeDuration: newDuration,
|
|
79
|
-
activityCount: newActivityCount,
|
|
80
|
-
pageVisits: pageVisits,
|
|
81
|
-
browser: log.browser,
|
|
82
115
|
geoLocation: log.geoLocation,
|
|
83
116
|
network: log.network,
|
|
84
|
-
|
|
85
|
-
|
|
117
|
+
activityCount: 1,
|
|
118
|
+
pageVisits: [{
|
|
119
|
+
pageId: log.pageId || log.pageRoute || 'unknown',
|
|
120
|
+
pageTitle: log.pageTitle || 'Unknown Page',
|
|
121
|
+
pageRoute: log.pageRoute || log.pageId || '/unknown',
|
|
122
|
+
visitTime: log.timestamp,
|
|
123
|
+
duration: 0,
|
|
124
|
+
sessionId: log.sessionId
|
|
125
|
+
}],
|
|
86
126
|
indexes: {
|
|
87
127
|
tenant_user_date: `${log.tenantId}_${log.userId}_${log.timestamp.getTime()}`,
|
|
88
128
|
session_time: `${log.sessionId}_${log.activityType}`,
|
|
89
129
|
page_time: `${log.pageId}_${log.timestamp.getTime()}`,
|
|
90
130
|
session_date: dailyKey
|
|
91
131
|
}
|
|
92
|
-
});
|
|
93
|
-
if (updatedLog) {
|
|
94
|
-
console.log(`✅ Updated access log: duration=${Math.round(newDuration / 1000)}s, activities=${newActivityCount}, pageVisits=${pageVisits.length}`);
|
|
95
|
-
return updatedLog;
|
|
96
132
|
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
tenantId: log.tenantId,
|
|
104
|
-
userId: log.userId,
|
|
105
|
-
userRole: log.userRole,
|
|
106
|
-
sessionId: log.sessionId,
|
|
107
|
-
ipAddress: log.ipAddress,
|
|
108
|
-
userAgent: log.userAgent,
|
|
109
|
-
timestamp: log.timestamp,
|
|
110
|
-
metadata: log.metadata,
|
|
111
|
-
// AccessLog specific fields
|
|
112
|
-
username: log.username,
|
|
113
|
-
employeeId: log.employeeId,
|
|
114
|
-
type: 'PAGE_OPEN',
|
|
115
|
-
activityType: log.activityType,
|
|
116
|
-
activityName: log.activityName,
|
|
117
|
-
eventTime: log.eventTime,
|
|
118
|
-
startTime: log.startTime || log.timestamp,
|
|
119
|
-
browser: log.browser,
|
|
120
|
-
// Optional fields
|
|
121
|
-
pageId: log.pageId,
|
|
122
|
-
pageTitle: log.pageTitle,
|
|
123
|
-
pageUrl: log.pageUrl,
|
|
124
|
-
pageRoute: log.pageRoute,
|
|
125
|
-
previousPage: log.previousPage,
|
|
126
|
-
geoLocation: log.geoLocation,
|
|
127
|
-
network: log.network,
|
|
128
|
-
// Tracking fields
|
|
129
|
-
activityCount: 1,
|
|
130
|
-
pageVisits: [{
|
|
131
|
-
pageId: log.pageId || log.pageRoute || 'unknown',
|
|
132
|
-
pageTitle: log.pageTitle || 'Unknown Page',
|
|
133
|
-
pageRoute: log.pageRoute || log.pageId || '/unknown',
|
|
134
|
-
visitTime: log.timestamp,
|
|
135
|
-
duration: 0,
|
|
136
|
-
sessionId: log.sessionId
|
|
137
|
-
}],
|
|
138
|
-
// Indexes
|
|
139
|
-
indexes: {
|
|
140
|
-
tenant_user_date: `${log.tenantId}_${log.userId}_${log.timestamp.getTime()}`,
|
|
141
|
-
session_time: `${log.sessionId}_${log.activityType}`,
|
|
142
|
-
page_time: `${log.pageId}_${log.timestamp.getTime()}`,
|
|
143
|
-
session_date: dailyKey
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
return this.create(accessLog);
|
|
133
|
+
}, {
|
|
134
|
+
upsert: true,
|
|
135
|
+
returnDocument: 'after'
|
|
136
|
+
});
|
|
137
|
+
console.log(`✅ AccessLog: Created with atomic upsert`);
|
|
138
|
+
return result.value;
|
|
147
139
|
}
|
|
148
140
|
/**
|
|
149
141
|
* Log a user action. Implements upsert logic: if an access log entry already exists
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessLogRepository.js","sourceRoot":"","sources":["../../../src/backend/repositories/AccessLogRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccessLogRepository.js","sourceRoot":"","sources":["../../../src/backend/repositories/AccessLogRepository.ts"],"names":[],"mappings":"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"}
|