Appearance
Content And Asset Publishing — Technical Map
Route / page map
| Surface | Main page / shell | Ghi chú |
|---|---|---|
| Post list/detail/create | Posts.tsx, PostCreate.tsx, PostDetail.tsx | Mounted, nested route đầy đủ |
| Page list/detail/create | Pages.tsx, PageCreate.tsx, PageDetail.tsx | Mounted |
| Post category | PostCategories.tsx, PostCategoryCreate.tsx, PostCategoryDetail.tsx | Mounted |
| Banner | Banners.tsx, BannerCreate.tsx, BannerDetail.tsx | Files có thật nhưng route subtree đang comment |
| Banner group | BannerGroupCreate.tsx, BannerGroupDetail.tsx, BannerGroupDataTable.tsx | Phụ thuộc banner subtree |
GraphQL / data model map
| Surface | Query / model chính |
|---|---|
| Post | post, post_content, post_category_relation, post_comment, post_reaction |
| Page | page |
| Category | post_category, post_category_content |
| Banner | banner, banner_group, banner_group_item, banner_subject_type, banner_view |
| Highlight | app_highlight_feature*, label |
| Public read models | banner_current_user, banner_user_view, app_highlight_feature_current_user, app_highlight_feature_user_view |
Public visibility model
| Object | Permission signal |
|---|---|
post | anonymous/customer chỉ thấy record published_at <= now, published_at IS NOT NULL, disabled = false |
banner | anonymous/customer chỉ thấy record đã publish (published_at <= now) |
post admin | user có full CRUD-level access với audit fields |
banner admin | user có select/update; create path nhiều khả năng nằm qua nested insert trên FE/tooling khác |
Rủi ro / Findings kỹ thuật
| Mức | Finding |
|---|---|
| Cao | Block route cho ROUTE_BANNER, ROUTE_BANNER_CREATE, ROUTE_BANNER_DETAIL, ROUTE_BANNER_GROUP_* trong module.ts đang bị comment, trong khi components/pages vẫn tồn tại và nhiều component còn router.push tới các route này. Đây là drift thật giữa file coverage và runtime route coverage. |
| Trung bình | newsConfig gắn moduleId = news cho post routes, trong khi page/category/banner dùng config khác; permission boundary của content publishing không đồng nhất theo một submodule duy nhất. |
| Trung bình | post và banner public-read model đang nằm trực tiếp ở metadata permissions/functions, nên việc thay đổi publish semantics cần soi cả FE lẫn Hasura metadata, không chỉ app code. |