retrainLearnedFromRules function exported ✓ 84.0%
Last updated: 2026-02-25T14:02:03.587Z
Location
Metrics
LOC: 71
Complexity: 3
Params: 2
Coverage: 84.0% (21/25 lines, 4x executed)
Signature
retrainLearnedFromRules(
rules: FieldRule[],
): : Promise<RetrainResult>
Summary
Rebuild learned entries from the currently configured rules.
Source Code
export async function retrainLearnedFromRules(
rules: FieldRule[],
): Promise<RetrainResult> {
const t0 = Date.now();
log.info(`Iniciando retreino: ${rules.length} regra(s) encontrada(s).`);
const prevCount = await getLearnedCount();
log.debug(`Entradas aprendidas antes do retreino: ${prevCount}`);
// Only remove rule-derived entries; organic (auto) entries are preserved.
await clearRuleDerivedEntries();
log.debug(
"Entradas de regras anteriores removidas do storage (entradas orgânicas preservadas).",
);
let imported = 0;
let skipped = 0;
const details: RetrainDetail[] = [];
for (const rule of rules) {
const signals = buildSignalsFromRule(rule);
if (!signals) {
log.warn(
`Regra ignorada (sem signals): id=${rule.id} selector=${rule.fieldSelector}`,
);
details.push({
ruleId: rule.id,
selector: rule.fieldSelector,
type: rule.fieldType,
signals: "",
status: "skipped",
});
skipped += 1;
continue;
}
await storeLearnedEntry(signals, rule.fieldType, undefined, "rule");
await addDatasetEntry({
signals,
type: rule.fieldType,
source: "manual",
difficulty: "easy",
});
details.push({
ruleId: rule.id,
selector: rule.fieldSelector,
type: rule.fieldType,
signals,
status: "imported",
});
imported += 1;
log.debug(
` ✔ ${rule.fieldType.padEnd(12)} ← "${signals.slice(0, 80)}" (${rule.fieldSelector})`,
);
}
const durationMs = Date.now() - t0;
log.info(
`Retreino finalizado em ${durationMs}ms. ` +
`Importadas: ${imported}, Ignoradas: ${skipped}`,
);
log.debug(
"NOTA: este retreino atualiza apenas os vetores de " +
"aprendizado (cosine similarity). Os pesos da rede neural TF.js NÃO " +
"são alterados. Para retreinar o modelo neural, execute: npm run train:model",
);
return { imported, skipped, totalRules: rules.length, durationMs, details };
}
Dependencies (Outgoing)
| Target | Type |
|---|---|
| getLearnedCount | calls |
| clearRuleDerivedEntries | calls |
| buildSignalsFromRule | calls |
| storeLearnedEntry | calls |