- 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
38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
# 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.
|