Merge remote-tracking branch 'origin/perf/team-page-lag-optimization' into perf/team-page-lag-optimization
This commit is contained in:
commit
0b0eb45784
1 changed files with 38 additions and 38 deletions
|
|
@ -4645,7 +4645,7 @@ describe('TeamDataService', () => {
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never);
|
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never);
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadSessionTextsFromJsonl: (
|
extractLeadSessionTextsFromJsonl: (
|
||||||
|
|
@ -4680,25 +4680,25 @@ describe('TeamDataService', () => {
|
||||||
|
|
||||||
const originalExtract = (
|
const originalExtract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadAssistantTextsFromJsonl: (
|
extractLeadAssistantTextsFromJsonlLines: (
|
||||||
jsonlPath: string,
|
rawLines: readonly string[],
|
||||||
leadName: string,
|
leadName: string,
|
||||||
leadSessionId: string,
|
leadSessionId: string,
|
||||||
maxTexts: number
|
maxTexts: number
|
||||||
) => Promise<Array<{ text: string }>>;
|
) => Promise<Array<{ text: string }>>;
|
||||||
}
|
}
|
||||||
).extractLeadAssistantTextsFromJsonl.bind(service);
|
).extractLeadAssistantTextsFromJsonlLines.bind(service);
|
||||||
const assistantSpy = vi
|
const assistantSpy = vi
|
||||||
.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never)
|
.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never)
|
||||||
.mockImplementation(async (...args: unknown[]) => {
|
.mockImplementation(async (...args: unknown[]) => {
|
||||||
const [targetPath, leadName, leadSessionId, maxTexts] = args as [
|
const [rawLines, leadName, leadSessionId, maxTexts] = args as [
|
||||||
string,
|
readonly string[],
|
||||||
string,
|
string,
|
||||||
string,
|
string,
|
||||||
number,
|
number,
|
||||||
];
|
];
|
||||||
await new Promise((resolve) => setTimeout(resolve, 25));
|
await new Promise((resolve) => setTimeout(resolve, 25));
|
||||||
return originalExtract(targetPath, leadName, leadSessionId, maxTexts);
|
return originalExtract(rawLines, leadName, leadSessionId, maxTexts);
|
||||||
});
|
});
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
|
|
@ -4732,20 +4732,20 @@ describe('TeamDataService', () => {
|
||||||
|
|
||||||
const originalExtract = (
|
const originalExtract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadAssistantTextsFromJsonl: (
|
extractLeadAssistantTextsFromJsonlLines: (
|
||||||
jsonlPath: string,
|
rawLines: readonly string[],
|
||||||
leadName: string,
|
leadName: string,
|
||||||
leadSessionId: string,
|
leadSessionId: string,
|
||||||
maxTexts: number
|
maxTexts: number
|
||||||
) => Promise<Array<{ text: string }>>;
|
) => Promise<Array<{ text: string }>>;
|
||||||
}
|
}
|
||||||
).extractLeadAssistantTextsFromJsonl.bind(service);
|
).extractLeadAssistantTextsFromJsonlLines.bind(service);
|
||||||
let appended = false;
|
let appended = false;
|
||||||
const assistantSpy = vi
|
const assistantSpy = vi
|
||||||
.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never)
|
.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never)
|
||||||
.mockImplementation(async (...args: unknown[]) => {
|
.mockImplementation(async (...args: unknown[]) => {
|
||||||
const [targetPath, leadName, leadSessionId, maxTexts] = args as [
|
const [rawLines, leadName, leadSessionId, maxTexts] = args as [
|
||||||
string,
|
readonly string[],
|
||||||
string,
|
string,
|
||||||
string,
|
string,
|
||||||
number,
|
number,
|
||||||
|
|
@ -4753,7 +4753,7 @@ describe('TeamDataService', () => {
|
||||||
if (!appended) {
|
if (!appended) {
|
||||||
appended = true;
|
appended = true;
|
||||||
await fs.appendFile(
|
await fs.appendFile(
|
||||||
targetPath,
|
jsonlPath,
|
||||||
`${JSON.stringify(
|
`${JSON.stringify(
|
||||||
createLeadAssistantEntry(
|
createLeadAssistantEntry(
|
||||||
'assistant-2',
|
'assistant-2',
|
||||||
|
|
@ -4764,7 +4764,7 @@ describe('TeamDataService', () => {
|
||||||
'utf8'
|
'utf8'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return originalExtract(targetPath, leadName, leadSessionId, maxTexts);
|
return originalExtract(rawLines, leadName, leadSessionId, maxTexts);
|
||||||
});
|
});
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
|
|
@ -4781,7 +4781,7 @@ describe('TeamDataService', () => {
|
||||||
const second = await extract(jsonlPath, 'team-lead', 'lead-1', 150);
|
const second = await extract(jsonlPath, 'team-lead', 'lead-1', 150);
|
||||||
|
|
||||||
expect(assistantSpy).toHaveBeenCalledTimes(2);
|
expect(assistantSpy).toHaveBeenCalledTimes(2);
|
||||||
expect(first).toHaveLength(2);
|
expect(first).toHaveLength(1);
|
||||||
expect(second).toHaveLength(2);
|
expect(second).toHaveLength(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -4797,24 +4797,24 @@ describe('TeamDataService', () => {
|
||||||
|
|
||||||
const originalExtract = (
|
const originalExtract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadAssistantTextsFromJsonl: (
|
extractLeadAssistantTextsFromJsonlLines: (
|
||||||
jsonlPath: string,
|
rawLines: readonly string[],
|
||||||
leadName: string,
|
leadName: string,
|
||||||
leadSessionId: string,
|
leadSessionId: string,
|
||||||
maxTexts: number
|
maxTexts: number
|
||||||
) => Promise<Array<{ text: string }>>;
|
) => Promise<Array<{ text: string }>>;
|
||||||
}
|
}
|
||||||
).extractLeadAssistantTextsFromJsonl.bind(service);
|
).extractLeadAssistantTextsFromJsonlLines.bind(service);
|
||||||
let releaseFirstInvocation = () => {};
|
let releaseFirstInvocation = () => {};
|
||||||
let firstInvocationStartedResolve: (() => void) | null = null;
|
let firstInvocationStartedResolve: (() => void) | null = null;
|
||||||
const firstInvocationStarted = new Promise<void>((resolve) => {
|
const firstInvocationStarted = new Promise<void>((resolve) => {
|
||||||
firstInvocationStartedResolve = resolve;
|
firstInvocationStartedResolve = resolve;
|
||||||
});
|
});
|
||||||
const assistantSpy = vi
|
const assistantSpy = vi
|
||||||
.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never)
|
.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never)
|
||||||
.mockImplementation(async (...args: unknown[]) => {
|
.mockImplementation(async (...args: unknown[]) => {
|
||||||
const [targetPath, leadName, leadSessionId, maxTexts] = args as [
|
const [rawLines, leadName, leadSessionId, maxTexts] = args as [
|
||||||
string,
|
readonly string[],
|
||||||
string,
|
string,
|
||||||
string,
|
string,
|
||||||
number,
|
number,
|
||||||
|
|
@ -4825,7 +4825,7 @@ describe('TeamDataService', () => {
|
||||||
releaseFirstInvocation = () => resolve();
|
releaseFirstInvocation = () => resolve();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return originalExtract(targetPath, leadName, leadSessionId, maxTexts);
|
return originalExtract(rawLines, leadName, leadSessionId, maxTexts);
|
||||||
});
|
});
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
|
|
@ -4877,7 +4877,7 @@ describe('TeamDataService', () => {
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never);
|
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never);
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadSessionTextsFromJsonl: (
|
extractLeadSessionTextsFromJsonl: (
|
||||||
|
|
@ -4911,7 +4911,7 @@ describe('TeamDataService', () => {
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never);
|
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never);
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadSessionTextsFromJsonl: (
|
extractLeadSessionTextsFromJsonl: (
|
||||||
|
|
@ -4929,7 +4929,7 @@ describe('TeamDataService', () => {
|
||||||
await expect(extract(jsonlPath, 'team-lead', 'lead-1', 150)).rejects.toThrow();
|
await expect(extract(jsonlPath, 'team-lead', 'lead-1', 150)).rejects.toThrow();
|
||||||
|
|
||||||
expect(first).toHaveLength(1);
|
expect(first).toHaveLength(1);
|
||||||
expect(assistantSpy).toHaveBeenCalledTimes(2);
|
expect(assistantSpy).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('tolerates a partial trailing line and does not keep a sticky stale result after the file is fixed', async () => {
|
it('tolerates a partial trailing line and does not keep a sticky stale result after the file is fixed', async () => {
|
||||||
|
|
@ -4943,7 +4943,7 @@ describe('TeamDataService', () => {
|
||||||
]);
|
]);
|
||||||
await fs.appendFile(jsonlPath, '{"type":"assistant"', 'utf8');
|
await fs.appendFile(jsonlPath, '{"type":"assistant"', 'utf8');
|
||||||
|
|
||||||
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never);
|
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never);
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadSessionTextsFromJsonl: (
|
extractLeadSessionTextsFromJsonl: (
|
||||||
|
|
@ -4991,7 +4991,7 @@ describe('TeamDataService', () => {
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never);
|
const assistantSpy = vi.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never);
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadSessionTextsFromJsonl: (
|
extractLeadSessionTextsFromJsonl: (
|
||||||
|
|
@ -5023,20 +5023,20 @@ describe('TeamDataService', () => {
|
||||||
|
|
||||||
const originalExtract = (
|
const originalExtract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
extractLeadAssistantTextsFromJsonl: (
|
extractLeadAssistantTextsFromJsonlLines: (
|
||||||
jsonlPath: string,
|
rawLines: readonly string[],
|
||||||
leadName: string,
|
leadName: string,
|
||||||
leadSessionId: string,
|
leadSessionId: string,
|
||||||
maxTexts: number
|
maxTexts: number
|
||||||
) => Promise<Array<{ text: string }>>;
|
) => Promise<Array<{ text: string }>>;
|
||||||
}
|
}
|
||||||
).extractLeadAssistantTextsFromJsonl.bind(service);
|
).extractLeadAssistantTextsFromJsonlLines.bind(service);
|
||||||
let shouldFail = true;
|
let shouldFail = true;
|
||||||
const assistantSpy = vi
|
const assistantSpy = vi
|
||||||
.spyOn(service as never, 'extractLeadAssistantTextsFromJsonl' as never)
|
.spyOn(service as never, 'extractLeadAssistantTextsFromJsonlLines' as never)
|
||||||
.mockImplementation(async (...args: unknown[]) => {
|
.mockImplementation(async (...args: unknown[]) => {
|
||||||
const [targetPath, leadName, leadSessionId, maxTexts] = args as [
|
const [rawLines, leadName, leadSessionId, maxTexts] = args as [
|
||||||
string,
|
readonly string[],
|
||||||
string,
|
string,
|
||||||
string,
|
string,
|
||||||
number,
|
number,
|
||||||
|
|
@ -5044,7 +5044,7 @@ describe('TeamDataService', () => {
|
||||||
if (shouldFail) {
|
if (shouldFail) {
|
||||||
throw new Error('transient parse failure');
|
throw new Error('transient parse failure');
|
||||||
}
|
}
|
||||||
return originalExtract(targetPath, leadName, leadSessionId, maxTexts);
|
return originalExtract(rawLines, leadName, leadSessionId, maxTexts);
|
||||||
});
|
});
|
||||||
const extract = (
|
const extract = (
|
||||||
service as unknown as {
|
service as unknown as {
|
||||||
|
|
@ -5079,10 +5079,10 @@ describe('TeamDataService', () => {
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const firstSpy = vi.spyOn(firstService as never, 'extractLeadAssistantTextsFromJsonl' as never);
|
const firstSpy = vi.spyOn(firstService as never, 'extractLeadAssistantTextsFromJsonlLines' as never);
|
||||||
const secondSpy = vi.spyOn(
|
const secondSpy = vi.spyOn(
|
||||||
secondService as never,
|
secondService as never,
|
||||||
'extractLeadAssistantTextsFromJsonl' as never
|
'extractLeadAssistantTextsFromJsonlLines' as never
|
||||||
);
|
);
|
||||||
const firstExtract = (
|
const firstExtract = (
|
||||||
firstService as unknown as {
|
firstService as unknown as {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue