whisper-money/routes
Víctor Falcón 2472260ec8 feat(ai): make AI categorization confidence threshold configurable
The confidence bar that decides whether the AI's suggested category is
auto-applied to a transaction was a fixed config value
(ai_categorization.label_confidence, 0.7). Let each user tune it with a
slider in Settings > Manage Plan, next to the AI categorization toggle.

- Add nullable user_settings.ai_confidence_threshold (percent, 0-100);
  null falls back to the global config default.
- User::aiConfidenceThresholdPercent() centralises the "user value else
  config default" resolution used by both the billing page and the
  categorization engine.
- CategorizeTransactions reads the per-user bar instead of the config.
- Gate tier-2 rule learning on the outcome being applied, so the
  effective rule bar becomes max(label bar, rule_confidence): raising the
  threshold to reduce automation now also holds back forward rules
  (previously a suggestion above 0.85 could still spawn a rule even when
  the user's raised bar left the transaction uncategorized).
- Slider (50-95%, debounced save) rendered when AI consent is on.
2026-07-17 18:53:15 +02:00
..
ai.php feat(mcp): read-only MCP server for Pro accounts (#689) 2026-07-17 16:54:15 +02:00
api.php fix: address remaining security audit findings (round 2) (#628) 2026-07-03 15:04:03 +00:00
console.php chore(schedule): stop scheduling the stuck cohort report (#676) 2026-07-14 21:22:58 +00:00
settings.php feat(ai): make AI categorization confidence threshold configurable 2026-07-17 18:53:15 +02:00
web.php fix: address remaining security audit findings (round 2) (#628) 2026-07-03 15:04:03 +00:00