KB-6268

P3D4C2X Event Outbox Filter UI Config Patch

6 min read Revision 1
dieu44p3d4c2xevent_outboxfilter_configtable_registryconfig_only

P3D4C2X — Event Outbox Filter UI Config Patch

  • phase: P3D4C2X_EVENT_OUTBOX_FILTER_UI_CONFIG_PATCH
  • phase_status: PASS
  • date: 2026-05-10
  • mode: CONFIG-ONLY mutation via Directus Items API

Summary

Mutation applied to table_registry row id=21 (tbl_event_outbox) only. Three filter additions to fields_config. No Nuxt code change. No deploy. No permission change. No PG mutation.

Mutation

  • mutation_type: CONFIG_ONLY
  • mutation_method: DIRECTUS_ITEMS_API (mcp__directus__directus_update_item)
  • nuxt_code_changed: false
  • deploy_performed: false
  • table_registry_patched: true
  • table_registry_row_id: 21
  • status_before: published
  • status_after: published

filters_added

  1. event_domainfilterable: true (already), added filterOptions:

    • { label: "Hệ thống", value: "system" }
  2. event_subject_table — added filterable: true + filterOptions:

    • { label: "Sự cố hệ thống", value: "system_issues" }
  3. event_severityfilterable: true (already), added filterOptions:

    • { label: "Nghiêm trọng", value: "critical" }
    • { label: "Cảnh báo", value: "warning" }

Other fields untouched. Field count = 13, order preserved. payload_classification label remains "Phân loại dữ liệu".

"Miếng thông tin" / Information filter

  • information_filter_implemented: false
  • information_filter_implemented_reason: 0/200 sampled rows have IU-related event_domain or event_subject_table; iu_filter_candidate_found=false (per P3D4C2X discovery report). Adding the option now would render an empty result set and mislead users.

future_information_filter_requirement

  • proposed_label: "Thông tin"
  • canonical_definition: events originating from miếng thông tin / information_unit / text_as_code (TAC)
  • candidate event_domain values: information_unit, text_as_code, tac
  • candidate event_subject_table values: information_unit canonical table name(s), text_as_code
  • canonical_address prefix candidates: information_unit://<id> or text_as_code://<id> or iu://<id> or tac://<id>
  • gating: NOT to be added until at least one event_outbox row carries one of the above values
  • follow-up packs:
    • P3D4C2X_IU_EVENT_EMISSION_REQUIREMENT — emit IU lifecycle events
    • then a small config-only patch to add the "Thông tin" filterOption

Browser / public verification

  • public_url: https://vps.incomexsaigoncorp.vn/knowledge/registries/event_outbox
  • public_url_status: 200
  • chrome_verification: UNAVAILABLE (claude-in-chrome / computer-use MCP not connected this session); fresh SSR curl scan used as substitute
  • ssr_scan: PASS
  • fallback_message_absent: true ("Chưa có bảng" count=0)
  • table_visible: true (<table> markup present)
  • filter_ui_visible: true (filter option labels render in SSR HTML — see markers below)
  • filter_ui_position: near_refresh (DirectusTable renders filter controls in the toolbar adjacent to the "Làm mới" button — same generic placement as tbl_system_issues)
  • markers_in_ssr_html:
    • "Hệ thống" present (count >= 1)
    • "Sự cố hệ thống" present (count >= 1)
    • "Nghiêm trọng" present (count >= 1)
    • "Cảnh báo" present (count >= 1)
    • "Phân loại dữ liệu" present (count = 1)
    • "Phân loại payload" absent (count = 0)
  • filter_apply_smoke: not exercised interactively (no browser MCP); SSR confirms options are rendered into the toolbar as <option> / button text. No page error/fallback markers detected post-mutation. Risk: low — same generic DirectusTable template used by tbl_system_issues (precedent already filterable in production).

Security

  • unsafe_fields_visible: false
  • unsafe_fields_scan (SSR): safe_payload=0, correlation_id=0, causation_id=0, raw_payload=0, payload_raw=0, embedding=0, secret=0, token=0, ssn=0, personal_data=0, admin_only=0
  • permission_1483_changed: false
  • runtime_deny_probes: not applicable on this gateway path — public /api-directus/* returns 404 for unrouted Items paths (Nuxt server gateway, not direct Directus); deny verification carried over from P3D4C2W report (safe_payload=403, correlation_id=403, causation_id=403). No mutation in this pack changed exposed fields, so the prior verdict still holds.

Mutation boundaries respected

  • NO_PG_MUTATION: respected
  • NO_EVENT_CORE_MUTATION: respected
  • NO_DIRECTUS_PERMISSION_CHANGE: respected
  • NO_PERMISSION_WIDENING: respected
  • NO_BESPOKE_EVENT_OUTBOX_PAGE: respected
  • NO_BESPOKE_EVENT_OUTBOX_COMPONENT: respected
  • NO_HARDCODED_NUXT_FILTER: respected
  • NO_DIEU43_CHANGE: respected
  • NO_TAC_RESUME: respected
  • NO_DEPLOY: respected
  • NO_BUILD: respected
  • NO_RESTART: respected
  • NO_GENERATED_MAP_CHANGE: respected

Routing

  • next_required_pack: P3D4C2X_IU_EVENT_EMISSION_REQUIREMENT (required before "Thông tin" filter is meaningful)
  • followup_after_iu_emission: small config-only patch to add {label: "Thông tin", value: <iu_domain_value>} to event_domain.filterOptions
  • final resume: P3D_INFORMATION_UNIT_TEXT_AS_CODE_RESUME once IU events exist + filter usable

Self-check

  1. Avoided bespoke event_outbox UI — yes
  2. Used table_registry config first — yes (config-only mutation)
  3. Avoided hardcoding "Miếng thông tin" without data — yes (deferred per discovery)
  4. Filter UI near "Làm mới" if feasible — yes (generic DirectusTable toolbar placement)
  5. Permission #1483 unchanged — yes
  6. Unsafe fields absent — yes (SSR scan all-zero)
  7. Public page verified — yes (HTTP 200, no fallback, markers present); chrome MCP unavailable, used SSR curl as substitute
  8. Report uploaded — yes (this document)
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/reports/p3d4c2x-event-outbox-filter-ui-config-patch-report.md