Skip to content

Commit d41052b

Browse files
committed
refactored classified activity model to support multiple aggregated messages
1 parent b3ddba2 commit d41052b

34 files changed

Lines changed: 774 additions & 518 deletions

src/cache/integration.test.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,16 @@ function createCandidate(id: number, content: string): CandidateMessage {
5656

5757
function createClassifiedActivity(id: number, activity: string, city: string): ClassifiedActivity {
5858
return createActivity({
59-
messageId: id,
6059
activity,
6160
category: 'food',
62-
originalMessage: `Lets go to ${city}`,
63-
timestamp: new Date('2025-01-15T10:30:00Z'),
61+
messages: [
62+
{
63+
id,
64+
sender: 'Test User',
65+
timestamp: new Date('2025-01-15T10:30:00Z'),
66+
message: `Lets go to ${city}`
67+
}
68+
],
6469
city
6570
})
6671
}

src/classifier/index.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -602,9 +602,9 @@ describe('Classifier Module', () => {
602602

603603
it('returns all activities (no filtering)', () => {
604604
const suggestions = [
605-
createTestActivity({ messageId: 1, activity: 'Test 1' }),
606-
createTestActivity({ messageId: 2, activity: 'Test 2' }),
607-
createTestActivity({ messageId: 3, activity: 'Test 3' })
605+
createTestActivity({ activity: 'Test 1', funScore: 0.9 }),
606+
createTestActivity({ activity: 'Test 2', funScore: 0.5 }),
607+
createTestActivity({ activity: 'Test 3', funScore: 0.2 })
608608
]
609609

610610
const filtered = filterActivities(suggestions)
@@ -618,10 +618,10 @@ describe('Classifier Module', () => {
618618

619619
it('groups suggestions by category', () => {
620620
const suggestions = [
621-
createTestActivity({ messageId: 1, activity: 'Food 1', category: 'food' }),
622-
createTestActivity({ messageId: 2, activity: 'Nature 1', category: 'nature' }),
623-
createTestActivity({ messageId: 3, activity: 'Food 2', category: 'food' }),
624-
createTestActivity({ messageId: 4, activity: 'Entertainment 1', category: 'entertainment' })
621+
createTestActivity({ activity: 'Restaurant 1', category: 'food' }),
622+
createTestActivity({ activity: 'Restaurant 2', category: 'food' }),
623+
createTestActivity({ activity: 'Hiking', category: 'nature' }),
624+
createTestActivity({ activity: 'Movie', category: 'entertainment' })
625625
]
626626

627627
const groups = groupByCategory(suggestions)

src/classifier/index.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,20 @@ function toClassifiedActivity(
6565
const score = interestingScore * 2 + funScore
6666

6767
const activity = {
68-
messageId: candidate.messageId,
6968
activity: capitalizedTitle,
7069
funScore,
7170
interestingScore,
7271
score,
7372
category: normalizeCategory(response.cat),
7473
confidence: response.conf,
75-
originalMessage: candidate.content,
76-
sender: candidate.sender,
77-
timestamp: candidate.timestamp,
74+
messages: [
75+
{
76+
id: candidate.messageId,
77+
timestamp: candidate.timestamp,
78+
sender: candidate.sender,
79+
message: candidate.content
80+
}
81+
],
7882
isGeneric: response.gen,
7983
isCompound: response.com,
8084
action: response.act,

src/classifier/pronoun-resolution.integration.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ describe('Classifier Pronoun Resolution', () => {
8282

8383
expect(activity.action).toBe('visit')
8484
expect(activity.object).toBeOneOf(['person', 'friend'])
85-
expect(activity.messageId).toBe(5)
86-
expect(activity.sender).toBe('Bob Jones')
87-
expect(activity.originalMessage).toBe('Can we visit her on Wednesday, please?')
85+
expect(activity.messages[0]?.id).toBe(5)
86+
expect(activity.messages[0]?.sender).toBe('Bob Jones')
87+
expect(activity.messages[0]?.message).toBe('Can we visit her on Wednesday, please?')
8888
// AI may resolve "her" to "Sarah" or keep it as "her" depending on prompt
8989
expect(activity.activity.toLowerCase()).toContain('visit')
9090
// Timestamp is timezone-dependent, just verify it's a valid date
91-
expect(activity.timestamp).toBeInstanceOf(Date)
91+
expect(activity.messages[0]?.timestamp).toBeInstanceOf(Date)
9292
})
9393
})

0 commit comments

Comments
 (0)