5 Commits

Author SHA1 Message Date
8a944ad696 fix: 3 system-wide bugs found in URL health sweep (242 URLs, 0 errors after fix)
All checks were successful
Build and Push Docker Image / build (push) Successful in 2m27s
1. /config/test/ — json.loads(request.body) on GET crashed with JSONDecodeError.
   Added @require_http_methods(['POST']) so GET returns 405 instead of 500.

2. /organizations/dropdowns/subsections/ — LegacySubSection.objects.order_by('name')
   used wrong field name (model has name_en/name_ar, not 'name'). Fixed to 'name_en'.

3. /rca/create/ — RCACreateView.dispatch() called _check_rca_create(request) before
   LoginRequiredMixin ran, so AnonymousUser hit is_px_admin() → AttributeError.
   Added auth check before the RBAC check in dispatch().

Post-fix: authenticated sweep of all 242 UI URLs → 233 OK, 0 errors (500s).
2026-06-17 20:32:07 +03:00
7369d08012 feat: unified reference numbers + feedback modules QA audit
All checks were successful
Build and Push Docker Image / build (push) Successful in 4m14s
Reference numbers (unified scheme PREFIX-YYYYMM-HOSP-NNNN, e.g. CMP-202606-HHN-0001):
- new ReferenceSequence model + generate_reference() helper (apps/core)
- Complaint/Inquiry/Observation/Appreciation/Suggestion emit unified refs via save()
- prefix-based auto-routing in public track API (CMP/INQ/OBS trackable; APR/SGT internal-only)
- removed legacy CMP-/INQ- generators in ui_views, integrations, px_sources
- migrations: core.0003_referencesequence, appreciation.0006, feedback.0008, observations.0012
- unit tests (format, sanitization, monthly reset, 40-thread concurrency)

QA audit:
- isolated E2E hospital sandbox mirroring HH-N + 10 role users (create_e2e_isolated_env)
- feedback-modules-audit.spec.ts + audit helper (headed, run-to-completion)
- reports/feedback-modules-qa-report.md

Also bundles accumulated in-progress work across complaints, observations,
organizations, templates, and other modules.
2026-06-14 14:29:23 +03:00
177a7e0f5f updates 2026-04-08 17:13:35 +03:00
23d439f5a5 fix: harden multi-tenant data isolation across 8 modules
Pre-production security fixes to prevent cross-hospital data leaks:

- Standards API: add get_queryset() filtering by department__hospital
- Reports service: add user param with hospital filtering to all querysets
- RCA views: replace is_superuser with tenant_hospital pattern, add access
  checks to all 11 mutation views
- Notifications views: replace is_superuser patterns with _get_notification_hospital
  helper across all 5 settings functions
- Appreciation API: add tenant_hospital fallback to AppreciationViewSet,
  AppreciationStatsViewSet, and LeaderboardView
- AI Analytics: add tenant_hospital fallback in ExecutiveSummaryGenerator and
  ActionRecommendationEngine
- SourceUserRestrictionMiddleware: remove None from ALLOWED_URL_NAMES
- Complaint export: fix nullable patient/due_at/description crashes in CSV
  and Excel export, fix invalid get_category_display/get_source_display calls

E2E test updates:
- Update isolation gap tests to actively assert hospital filtering
- Fix CSV export test to use API context for download handling
- Switch clinical-staff tests to serial mode to prevent race conditions
2026-04-07 01:23:10 +03:00
72dd1e8e3c more updates in complaint and survey 2026-02-10 12:33:31 +03:00