Skip to content

Commit f96f6f7

Browse files
authored
Merge pull request #471 from ansforge/chore/improve-lrm-logs
chore(lrm): add message type in message logs metadata method
2 parents 408071b + 3b06418 commit f96f6f7

2 files changed

Lines changed: 139 additions & 0 deletions

File tree

web/lrm/server/src/logger.test.ts

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,53 @@ describe('getMessageLogsMetadata', () => {
1111
explicitAddressValue: 'recipient-789',
1212
},
1313
},
14+
content: [
15+
{
16+
jsonContent: {
17+
embeddedJsonContent: {
18+
message: {
19+
createCaseHealth: {},
20+
messageId: 'msg-001',
21+
sender: 'sender-456',
22+
}
23+
},
24+
},
25+
},
26+
],
1427
};
1528
const meta = getMessageLogsMetadata(message);
1629
expect(meta).toEqual({
1730
distributionId: 'dist-123',
1831
senderId: 'sender-456',
1932
recipientId: 'recipient-789',
33+
messageType: 'createCaseHealth',
2034
});
2135
});
2236

2337
it('should return recipientId undefined if descriptor is missing', () => {
2438
const message = {
2539
distributionID: 'dist-1',
2640
senderID: 'sender-2',
41+
content: [
42+
{
43+
jsonContent: {
44+
embeddedJsonContent: {
45+
message: {
46+
createCaseHealth: {},
47+
messageId: 'msg-001',
48+
sender: 'sender-456',
49+
}
50+
},
51+
},
52+
},
53+
],
2754
};
2855
const meta = getMessageLogsMetadata(message);
2956
expect(meta).toEqual({
3057
distributionId: 'dist-1',
3158
senderId: 'sender-2',
3259
recipientId: undefined,
60+
messageType: 'createCaseHealth',
3361
});
3462
});
3563

@@ -38,12 +66,26 @@ describe('getMessageLogsMetadata', () => {
3866
distributionID: 'dist-X',
3967
senderID: 'sender-Y',
4068
descriptor: {},
69+
content: [
70+
{
71+
jsonContent: {
72+
embeddedJsonContent: {
73+
message: {
74+
createCaseHealth: {},
75+
messageId: 'msg-001',
76+
sender: 'sender-456',
77+
}
78+
},
79+
},
80+
},
81+
],
4182
};
4283
const meta = getMessageLogsMetadata(message);
4384
expect(meta).toEqual({
4485
distributionId: 'dist-X',
4586
senderId: 'sender-Y',
4687
recipientId: undefined,
88+
messageType: 'createCaseHealth',
4789
});
4890
});
4991

@@ -54,12 +96,26 @@ describe('getMessageLogsMetadata', () => {
5496
descriptor: {
5597
explicitAddress: {},
5698
},
99+
content: [
100+
{
101+
jsonContent: {
102+
embeddedJsonContent: {
103+
message: {
104+
createCaseHealth: {},
105+
messageId: 'msg-001',
106+
sender: 'sender-456',
107+
}
108+
},
109+
},
110+
},
111+
],
57112
};
58113
const meta = getMessageLogsMetadata(message);
59114
expect(meta).toEqual({
60115
distributionId: 'dist-A',
61116
senderId: 'sender-B',
62117
recipientId: undefined,
118+
messageType: 'createCaseHealth',
63119
});
64120
});
65121

@@ -70,6 +126,7 @@ describe('getMessageLogsMetadata', () => {
70126
distributionId: undefined,
71127
senderId: undefined,
72128
recipientId: undefined,
129+
messageType: undefined,
73130
});
74131
});
75132

@@ -82,17 +139,85 @@ describe('getMessageLogsMetadata', () => {
82139
explicitAddressValue: null,
83140
},
84141
},
142+
content: null,
85143
};
86144
const meta = getMessageLogsMetadata(message);
87145
expect(meta).toEqual({
88146
distributionId: null,
89147
senderId: null,
90148
recipientId: null,
149+
messageType: undefined,
91150
});
92151
});
93152

94153
it('should return empty object for undefined message', () => {
95154
const meta = getMessageLogsMetadata(undefined);
96155
expect(meta).toEqual({});
156+
});
157+
158+
it('should return undefined messageType when multiple candidate keys', () => {
159+
const message = {
160+
distributionID: 'dist-123',
161+
senderID: 'sender-456',
162+
descriptor: {
163+
explicitAddress: {
164+
explicitAddressValue: 'recipient-789',
165+
},
166+
},
167+
content: [
168+
{
169+
jsonContent: {
170+
embeddedJsonContent: {
171+
message: {
172+
createCaseHealth: {},
173+
createCaseHealthUpdate: {},
174+
messageId: 'msg-001',
175+
sender: 'sender-456',
176+
}
177+
}
178+
}
179+
}
180+
]
181+
}
182+
183+
const metadata = getMessageLogsMetadata(message);
184+
expect(metadata).toEqual({
185+
distributionId: 'dist-123',
186+
senderId: 'sender-456',
187+
recipientId: 'recipient-789',
188+
messageType: undefined,
189+
});
190+
})
191+
192+
it('should return undefined messageType when no candidate keys', () => {
193+
const message = {
194+
distributionID: 'dist-123',
195+
senderID: 'sender-456',
196+
descriptor: {
197+
explicitAddress: {
198+
explicitAddressValue: 'recipient-789',
199+
},
200+
},
201+
content: [
202+
{
203+
jsonContent: {
204+
embeddedJsonContent: {
205+
message: {
206+
messageId: 'msg-001',
207+
sender: 'sender-456',
208+
}
209+
}
210+
}
211+
}
212+
]
213+
}
214+
215+
const metadata = getMessageLogsMetadata(message);
216+
expect(metadata).toEqual({
217+
distributionId: 'dist-123',
218+
senderId: 'sender-456',
219+
recipientId: 'recipient-789',
220+
messageType: undefined,
221+
});
97222
})
98223
});

web/lrm/server/src/logger.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,30 @@ type MessageLogsMetadata = {
1919
distributionId?: string
2020
senderId?: string
2121
recipientId?: string
22+
messageType?: string
23+
}
24+
25+
const getMessageType = (message: any): string | undefined => {
26+
const messageContent = message?.content?.[0]?.jsonContent?.embeddedJsonContent?.message ?? {};
27+
const excludedKeys = ["messageId", "sender", "sentAt", "kind", "status", "recipient"];
28+
const candidateKeys = Object.keys(messageContent)
29+
.filter(k => !excludedKeys.includes(k));
30+
31+
// Return the message type if there's exactly one candidate key, otherwise we can't determine it
32+
return candidateKeys.length === 1 ? candidateKeys[0] : undefined;
33+
2234
}
2335

2436
export const getMessageLogsMetadata = (message: any): MessageLogsMetadata => {
2537
if (!message) return {};
2638
const distributionId = message.distributionID;
2739
const senderId = message.senderID;
2840
const recipientId = message.descriptor?.explicitAddress?.explicitAddressValue;
41+
const messageType = getMessageType(message);
2942
return {
3043
distributionId,
3144
senderId,
3245
recipientId,
46+
messageType,
3347
};
3448
}

0 commit comments

Comments
 (0)