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
-
event_domain —
filterable: true(already), addedfilterOptions:- { label: "Hệ thống", value: "system" }
-
event_subject_table — added
filterable: true+filterOptions:- { label: "Sự cố hệ thống", value: "system_issues" }
-
event_severity —
filterable: true(already), addedfilterOptions:- { 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>ortext_as_code://<id>oriu://<id>ortac://<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
curlscan 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 bytbl_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>}toevent_domain.filterOptions - final resume: P3D_INFORMATION_UNIT_TEXT_AS_CODE_RESUME once IU events exist + filter usable
Self-check
- Avoided bespoke event_outbox UI — yes
- Used table_registry config first — yes (config-only mutation)
- Avoided hardcoding "Miếng thông tin" without data — yes (deferred per discovery)
- Filter UI near "Làm mới" if feasible — yes (generic DirectusTable toolbar placement)
- Permission #1483 unchanged — yes
- Unsafe fields absent — yes (SSR scan all-zero)
- Public page verified — yes (HTTP 200, no fallback, markers present); chrome MCP unavailable, used SSR curl as substitute
- Report uploaded — yes (this document)