chore: import coordenador (subtree)
git-subtree-dir: coordenador git-subtree-mainline:facbe2e340git-subtree-split:ce7af94d55
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
const { test } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const { needsReanalysis, buildCacheKey } = require('./cache');
|
||||
|
||||
test('sem memoria previa, sempre precisa de IA', () => {
|
||||
const result = needsReanalysis({ memory: null, currentHash: 'abc', now: 1000 });
|
||||
assert.equal(result.needsAi, true);
|
||||
assert.equal(result.reason, 'no_cache');
|
||||
});
|
||||
|
||||
test('hash igual e sem next_review_at vencido usa cache', () => {
|
||||
const memory = { last_context_hash: 'abc', next_review_at: null };
|
||||
const result = needsReanalysis({ memory, currentHash: 'abc', now: 1000 });
|
||||
assert.equal(result.needsAi, false);
|
||||
assert.equal(result.reason, 'cache_valid');
|
||||
});
|
||||
|
||||
test('hash diferente forca reavaliacao (mudanca significativa)', () => {
|
||||
const memory = { last_context_hash: 'abc', next_review_at: null };
|
||||
const result = needsReanalysis({ memory, currentHash: 'xyz', now: 1000 });
|
||||
assert.equal(result.needsAi, true);
|
||||
assert.equal(result.reason, 'context_changed');
|
||||
});
|
||||
|
||||
test('next_review_at vencido forca reavaliacao mesmo com hash igual', () => {
|
||||
const memory = { last_context_hash: 'abc', next_review_at: 500 };
|
||||
const result = needsReanalysis({ memory, currentHash: 'abc', now: 1000 });
|
||||
assert.equal(result.needsAi, true);
|
||||
assert.equal(result.reason, 'review_due');
|
||||
});
|
||||
|
||||
test('buildCacheKey combina hash de conteudo e versao do classificador', () => {
|
||||
assert.equal(buildCacheKey('abc123', 3), 'abc123:v3');
|
||||
assert.equal(buildCacheKey('abc123', 4), 'abc123:v4');
|
||||
});
|
||||
|
||||
test('mudanca de AI_CLASSIFIER_VERSION invalida o cache mesmo com conteudo identico -- missao secao 12', () => {
|
||||
const contentHash = 'abc123';
|
||||
const oldCacheKey = buildCacheKey(contentHash, 2);
|
||||
const newCacheKey = buildCacheKey(contentHash, 3);
|
||||
const memory = { last_context_hash: oldCacheKey, next_review_at: null };
|
||||
const result = needsReanalysis({ memory, currentHash: newCacheKey, now: 1000 });
|
||||
assert.equal(result.needsAi, true, 'bump de versao deve forcar reclassificacao mesmo com o mesmo conteudo');
|
||||
});
|
||||
|
||||
test('mesma versao + mesmo hash de conteudo usa cache normalmente -- missao secao 12', () => {
|
||||
const cacheKey = buildCacheKey('abc123', 3);
|
||||
const memory = { last_context_hash: cacheKey, next_review_at: null };
|
||||
const result = needsReanalysis({ memory, currentHash: cacheKey, now: 1000 });
|
||||
assert.equal(result.needsAi, false);
|
||||
assert.equal(result.reason, 'cache_valid');
|
||||
});
|
||||
Reference in New Issue
Block a user