fix: limpiar puntuación en tokens @ y añadir tests de autoasignación

Co-authored-by: aider (openrouter/openai/gpt-5) <aider@aider.chat>
main
brobert 4 days ago
parent b6aab7fa1b
commit e9c2885433

@ -1070,7 +1070,7 @@ export class CommandService {
// 2) Tokens de texto que empiezan por '@' como posibles asignados // 2) Tokens de texto que empiezan por '@' como posibles asignados
const atTokenCandidates = tokens.slice(2) const atTokenCandidates = tokens.slice(2)
.filter(t => t.startsWith('@')) .filter(t => t.startsWith('@'))
.map(t => t.replace(/^@+/, '').replace(/^\+/, '')); .map(t => t.replace(/^@+/, '').replace(/^\+/, '').replace(/[.,;:!?)\]}¿¡"'’”]+$/, ''));
const normalizedFromAtTokens = Array.from(new Set( const normalizedFromAtTokens = Array.from(new Set(
atTokenCandidates.map((v) => { atTokenCandidates.map((v) => {
// Token especial: '@yo' (capturado como 'yo' tras limpiar '@') => autoasignación; no cuenta como fallo // Token especial: '@yo' (capturado como 'yo' tras limpiar '@') => autoasignación; no cuenta como fallo

@ -123,4 +123,37 @@ describe('CommandService - autoasignación con "yo" / "@yo"', () => {
expect(assignees).toContain(sender); expect(assignees).toContain(sender);
expect(String(t.description)).toBe('Mi tarea'); expect(String(t.description)).toBe('Mi tarea');
}); });
it('en grupo: "@yo," autoasigna y no incrementa métricas de fallo', async () => {
const sender = '600666777';
await CommandService.handle({
sender,
groupId: 'group2@g.us',
message: '/t n Revisar algo @yo,',
mentions: [],
});
const t = getLastTask();
const assignees = getAssignees(Number(t.id));
expect(assignees).toContain(sender);
expect(String(t.description)).toBe('Revisar algo');
const prom = Metrics.render?.('prom') || '';
expect(prom).not.toContain('onboarding_assign_failures_total');
});
it('en grupo: "(yo)" autoasigna y no queda en la descripción', async () => {
const sender = '600777888';
await CommandService.handle({
sender,
groupId: 'grp2@g.us',
message: '/t n Hacer (yo)',
mentions: [],
});
const t = getLastTask();
const assignees = getAssignees(Number(t.id));
expect(assignees).toContain(sender);
expect(String(t.description)).toBe('Hacer');
});
}); });

Loading…
Cancel
Save