feat/Update_Controllers_to_Allow_for_Premium_Membership

This commit is contained in:
cesnimda
2026-08-03 09:17:28 +02:00
parent de937d25dc
commit c3f4a57195
187 changed files with 26062 additions and 991 deletions
+37
View File
@@ -0,0 +1,37 @@
# POL-002 verification — AI privacy and external consent
Updated: 2026-08-03
Status: `IMPLEMENTED — NOT VERIFIED`.
## Implemented
- Server-persisted per-user AI enable/disable and external-processing consent.
- Live AI authorization rejects a Pro user who disables AI with the stable `ai_disabled` reason.
- Optional job enrichment and queued CV processing recheck the live AI-enabled preference.
- External `/cv/*` processing requires administrator enablement, supported provider configuration, current Pro entitlement, AI enabled and explicit user consent.
- The sidecar independently rejects external selection unless its administrator gate and the backend permission header are both present.
- Settings UI explains local-only/default behaviour and cannot opt in while the deployment gate is unavailable.
- Provider credentials remain environment/server-only.
## Automated evidence
- Focused backend policy/entitlement/worker/CV tests: 72/72.
- Focused policy/header tests after final changes: 28/28.
- Sidecar tests: 18/18, including absent/present permission-header routing.
- Focused settings/entitlement UI tests: 8/8.
- Full backend: 576/576.
- Full frontend: 47/47 suites, 158/158 tests.
- Frontend production build: pass.
- EF pending-model check: pass; SQLite script adds `AiEnabled DEFAULT 1` and `ExternalAiProcessingAllowed DEFAULT 0`.
- `docker compose config --quiet`: pass with expected unset optional-environment warnings.
- `git diff --check`: pass; line-ending notices only.
## Unverified / remaining
- Browser verification is blocked by administrator policy.
- No external provider, paid service, production environment or real private data was used.
- MariaDB migration execution remains unavailable.
- Direct clean `dotnet ef database update` fails in the pre-existing historical SQLite migration chain before this migration (`AddJobEntityAndProspectStages` expects a reconciler-added column). The application startup reconciler path was not exercised because the local process-launch command was blocked by execution policy.
- Background operations do not yet carry a policy snapshot; they fail safe to local. AI-001/AI-002 own durable admission/recheck, actual-provider/reason recording, cost controls, payload minimization and bounded local-first fallback triggers.