-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Goal
Build a reusable policy resolution engine that resolves grace period and offline timeout settings from a hierarchy: per-license override → vendor default → global platform default.
Requirements
Functional
- Implement
resolve_policy(license_id, vendor_id) → PolicySnapshot. - Policy hierarchy:
license.grace_override>vendor.default_grace> global default (60 min). - Resolve
max_offline_hours: license override > vendor default > global (24 hours). - Resolve
heartbeat_interval_seconds: vendor default > global (300 seconds). - Snapshot Immutability: Policy is snapshotted at session creation time; subsequent changes don't affect active sessions.
Technical
- Location:
app/services/policy_service.py. - DB Migration: Create
vendor_policies,license_policies, andplatform_defaultstables. - Resolution: Single SQL query with
LEFT JOINchain andCOALESCE. - Store policy snapshot in
activation_sessions.policy_snapshot(JSONB column).
Acceptance Criteria
- Per-license override takes precedence over vendor default.
- Per-vendor override takes precedence over global default.
- Global defaults:
grace=60,offline=24,heartbeat=300. - Policy snapshot is immutable after session creation.
- RLS enforced: vendors can only resolve policies for their own licenses.
Dependencies
Reactions are currently unavailable