# zibll ↔ AKSRT gap matrix (admin ops entry) Three-way mapping: **zibll current → AKSRT before migration → AKSRT target**. Focus: admin **entry & page shape**. Runtime field parity is Phase 5+. --- ## Shop | zibll | AKSRT before | AKSRT target | Data / service | |-------|--------------|--------------|----------------| | CPT `shop_product` pos 35, `dashicons-store`, super-admin `show_ui` | `aksrt_product` `show_ui=true`, **`show_in_menu=false`** | Native menu pos 35, store icon; gate on `shop_s` | CPT | | Tax `shop_cat` | `aksrt_product_cat` show_ui false | show_ui + admin column under product | taxonomy | | Tax `shop_tag` | `aksrt_product_tag` show_ui false | show_ui under product | taxonomy | | Tax `shop_discount` | `shop_discount` show_ui false | show_ui under product | `AKSRT_Shop_Term_Meta` | | Product list columns | Trait exists, wired in `functions.php` | Keep/enhance on native list | admin columns trait | | Product edit meta | SPA `ShopProducts` + REST | Native meta box (Phase 1b) | product ops / post meta | | Orders | SPA `ShopOrders` | `admin.php?page=aksrt_orders` | `AKSRT_Order` | | Shipping | SPA `ShopShipping` | `aksrt_shipping` | `AKSRT_Shipping` | | After-sale | SPA `ShopAfterSale` | `aksrt_after_sale` | `AKSRT_After_Sale` | | Coupons | SPA `ShopCoupons` / zibpay coupon page | `aksrt_coupons` | `AKSRT_Coupon` | | Shop CSF config | SPA shop schema | **Keep SPA schema** | `AKSRT_Settings::get_shop_settings()` | --- ## Forum / community | zibll | AKSRT before | AKSRT target | Data / service | |-------|--------------|--------------|----------------| | CPT `plate` pos 40, forums icon | `aksrt_forum_plate` **show_in_menu false** | show_in_menu true, pos 40, `dashicons-buddicons-forums` | CPT | | Tax `plate_cat` | `aksrt_plate_cat` | show_ui under plate | taxonomy | | CPT `forum_post` pos 40, topics icon | `aksrt_forum_topic` default menu, comments icon | pos 40, `dashicons-buddicons-topics`, explicit menu | CPT | | Tax `forum_topic` / `forum_tag` | `aksrt_forum_topic_cat` / `aksrt_forum_tag` | show_ui under topic | taxonomy | | Legacy board tax | — | `aksrt_forum_board` keep rewrite bridge, **hide admin UI** (plate is canonical) | taxonomy | | Boards/topics SPA | `ForumBoards` / `ForumTopics` | Native CPT lists | `AKSRT_Forum` | | Moderators / applications | SPA | Plate meta box + optional subpage | moderation service | | BBS CSF config | SPA forum schema | **Keep SPA schema** | `get_forum_settings()` | --- ## Payment / zibpay ops | zibll page | Purpose | AKSRT before | Target slug | Service | |------------|---------|--------------|-------------|---------| | `zibpay_page` | Dashboard | SPA dashboards | `aksrt_pay` | aggregates | | `zibpay_page#/order` | Orders (new) | SPA ShopOrders | `aksrt_orders` | `AKSRT_Order` | | `zibpay_order_page` | Orders (legacy) | SPA | same native list | | | `zibpay_page#/shipping` | Shipping | SPA | `aksrt_shipping` | `AKSRT_Shipping` | | `zibpay_page#/after-sale` | After-sale | SPA | `aksrt_after_sale` | `AKSRT_After_Sale` | | `zibpay_product_page` | Paid-post sales report | partial | optional later `aksrt_pay_products` | content pay | | `zibpay_income_page` | Creator income | `PaymentRevenue` | `aksrt_income` | `AKSRT_Revenue` | | `zibpay_rebate_page` | Rebate | `PaymentRebate` | `aksrt_rebate` | `AKSRT_Rebate` | | `zibpay_withdraw` | Withdraw | `ShopWithdrawals` | `aksrt_withdraw` | `AKSRT_Withdrawal` | | `zibpay_charge_card_page` | Charge cards | `PaymentChargeCard` | `aksrt_charge_cards` | `AKSRT_Charge_Card` | | `zibpay_coupon_page` | Coupons | `ShopCoupons` | `aksrt_coupons` | `AKSRT_Coupon` | | CSF pay sections | Gateways/VIP/… | SPA payment schema | **Keep SPA** | settings | Note: zibll「商品管理」`zibpay_product_page` is **paid article sales**, not the physical `shop_product` CPT list. --- ## User governance | zibll | slug | AKSRT before | Target | |-------|------|--------------|--------| | 消息管理 | `user_messags` under users.php | SPA `UsersMessages` | `users.php?page=aksrt_messages` | | 邀请码管理 | `invit_code` | SPA `UsersInviteCodes` | `aksrt_invite_codes` | | 身份认证 | `user_auth` | SPA `UsersVerify` queue | `aksrt_user_auth` | | 举报&禁封申诉 | `user_ban` | SPA Ban + Report | single `aksrt_user_ban` with tabs | | Credits column | users list | `AKSRT_User_Credits_Admin` | keep | | CSF user config | — | SPA users schema | keep | --- ## SPA ops routes to delete (Phase 4) ### shop.js `shop-products`, `shop-orders`, `shop-after-sale`, `shop-shipping`, `shop-coupons`, `shop-withdrawals`, `shop-dashboard` ### forum.js `forum-boards`, `forum-topics`, `forum-moderators`, `forum-moderator-applications`, `forum-dashboard` ### payment.js `payment-charge-card`, `payment-revenue`, `payment-rebate` (ops tables) ### users.js `users-messages`, `users-invite-codes`, `users-ban`, `users-report` (queues) --- ## Phase status | Phase | Status | |-------|--------| | 0 Docs + matrix | done | | 1 Native CPT/tax menus | done | | 2a Pay menu + orders/withdraw/cards | done | | 2b Shipping/after-sale/coupons/income/rebate | done | | 3 users.php submenus | done | | 4 SPA strip | done (ops routes redirect to native) | | 5+ behavior parity | in progress — shipping list create + pending-to-ship board + express timeline query; after-sale filters/actions; order note/quick actions; coupons field parity + batch/enable + product_scope; charge-cards expires + code dump + search/labels; product meta shipping/service/limit fields; plate allow_view/add_limit; topic visibility column | | 5 remaining | deeper forum runtime (moderator roles UI, advanced plate options); coupon product_scope batch/edit | ## Dual-UI rule Native write path must work **before** removing the matching SPA ops route. No data migration: same tables/meta; UI only.