refactor(classes): split oversize modules + bootstrap hygiene

- Trait-split content-pay, vip-service, balance-service, order-repository
- Procedural split of user module into user-parts/*
- Split scripts enqueue_public into part-1b/1c; settings bulk trait
- Bootstrap: explicit notifications, widgets glob-only, home-modules init
- ADR: freeze domain placement for pay/revenue/notify boundaries
This commit is contained in:
2026-07-17 11:42:29 +08:00
parent ce1c13b947
commit 9c309b4c7f
28 changed files with 7350 additions and 6688 deletions
+37
View File
@@ -0,0 +1,37 @@
# ADR: Domain folder placement for `inc/classes`
## Status
Accepted (2026-07-17)
## Context
After moving root class files into domain folders, freeze placement for boundary types so later moves are intentional.
## Decision
| Concern | Domain | Why |
|---------|--------|-----|
| Theme shell (setup, scripts, templates, SEO, meta boxes, DB migrator, front-submit, docs presenter, home modules, stats, redirects, update checker, comment actions) | `core/` | Shared CMS plumbing |
| SPA shell + controllers + schema + native ops | `admin/` | Dual-surface IA |
| Settings facade + runtime delegates | `settings/` | Single public settings API |
| Auth, OAuth, captcha, moderation, email rollback | `auth/` | Identity & access |
| User center/home/badges/level/metrics/notifications/follow | `user/` | Account surface |
| Credits, balance wallet, signin, invite, points-free | `credits/` | Points + cash wallet |
| Download tokens/state, content pay, VIP, visibility | `content/` | Post-centric paid content |
| Topic pay, plate follow pay | `forum/` | Forum SKUs (not generic content pay) |
| Orders, gateways, coupon, charge-card, revenue, creator-revenue, withdrawal, rebate, discount, after-sale, shipping, wechat-notify | `payment/` | Commerce + settlement |
| Shop services/meta/reviews | `shop/` | Product catalog / cart |
| SMS stack | `sms/` | Messaging channel |
| AI runtime (admin AI controller stays in `admin/`) | `ai/` | Generation helpers |
| Message, private message, site notice, report center | `messages/` | In-site messaging |
| MeiliSearch, search-push, ip-geo, content-audit, api-audit | `extensions/` | Optional integrations |
| Widgets + registry | `widgets/` | WP widgets |
| Inline style / custom code / loading overlay | `frontend/` | Asset render helpers |
### Rules
- Traits live next to owner: `{domain}/{slug}-traits/`.
- Loader: manual `require_once` in `inc/bootstrap.php` only; traits before shells.
- Do not move `topic-pay` / `plate-follow-pay` into `content/` without updating this ADR.
- `creator-revenue` and `wechat-notify` stay under `payment/`.
## Out of scope
PSR-4 class namespaces; class renames.