50 lines
4.4 KiB
Markdown
50 lines
4.4 KiB
Markdown
# 架构与配置
|
||
|
||
## 仓库与入口
|
||
|
||
- 当前 Laravel 后端:本地 /private/var/www/wwwroot/dpl。composer.json 要求 PHP ^8.2、Laravel ^12;仍使用 App\Http\Kernel、App\Console\Kernel 绑定方式,不能直接套用新项目默认结构。
|
||
- Gitea 后端 origin:tom/dpl,远端 main;当前本地 master 跟踪 origin/main,变更分支默认用 codex/ 前缀。以 git branch -vv 为准。
|
||
- stellar/ 是独立 Vue/Vite 前台仓库,不属于后端提交;修改前分别核对其远端与差异。
|
||
- public/assets/admin 是 Git 子模块,仓库指定已构建后台资源版本;.gitmodules 指向 xboard-admin-dist。不要直接改压缩产物或擅自推送第三方仓库。
|
||
- HTTP 入口 public/index.php → bootstrap/app.php → App\Http\Kernel。API 由 App\Providers\RouteServiceProvider 加载 app/Http/Routes/V1、V2 中的映射;不是只看 routes/web.php。
|
||
- 后台 Blade:resources/views/admin.blade.php;自定义后台扩展的源文件 resources/js/admin/ 与运行副本 public/admin-custom/ 必须一致。
|
||
- 当前后台入口配置 secure_path=dove,通过 routes/web.php 使用,不是硬编码固定路由。后台 API 也使用这个配置。后台路径不是身份认证的替代。
|
||
|
||
## 主要业务入口
|
||
|
||
| 范围 | 入口 |
|
||
| --- | --- |
|
||
| 登录与注册 | app/Services/Auth/、AuthService.php、对应 Passport 控制器 |
|
||
| 套餐、订单、支付 | PlanService.php、OrderService.php、PaymentService.php、对应控制器与模型 |
|
||
| 用户、节点、流量 | UserService.php、ServerService.php、NodeRegistry.php、TrafficResetService.php |
|
||
| 工单 | TicketService.php、工单控制器 |
|
||
| 邮件 | MailService.php → SendEmailJob → MailFlow/Dispatcher;渠道、额度、状态、来信、回复、日报均在 MailFlow/ |
|
||
| 定时运行 | app/Console/Kernel.php,命令实现 app/Console/Commands/ |
|
||
| 教程 | resources/tutorials/、resources/views/tutorials/、scripts/tutorials/ |
|
||
|
||
## 配置来源
|
||
|
||
- .env 与 config/*.php 提供启动配置;config:cache 后修改 .env 需要重建缓存。不得打印整个配置或复制环境密钥进 Git。
|
||
- admin_setting() 通过 App\Support\Setting 读取 v2_settings,并在 Redis 缓存 admin_settings。设置用原设置服务保存,避免直接改表后忘记缓存失效。
|
||
- app_url、force_https 由 ApplyRuntimeSettings 在请求中应用;网站名称、主页与邮箱发信域名是不同用途的配置。
|
||
- MailFlow\Settings 合并 config/mailflow.php 与后台 mail_flow,解密三个敏感字段;publicSettings 只返回“是否已配置”,不能要求 API 回传明文密钥。
|
||
- mail_flow 中密钥采用 encrypted: 前缀,依赖当前环境 APP_KEY;不同环境不可直接复制密文当作可用凭据。已有用户密码是哈希,不能还原或写入文档。
|
||
- 自动邮件档位是 v2_settings 中独立 automatic_mail_policy 记录。直接核验当前状态;代码无记录时兼容回退到一档,不能把当前三档配置误称为全新安装默认值。
|
||
- MailTemplate 数据库自定义模板优先于文件模板。改文件后检查是否被同名数据库模板覆盖。
|
||
|
||
## 开发与验证
|
||
|
||
前台日常开发在 stellar/ 使用 npm run dev;根 package.json 没有 dev 命令。教程热更新可在 stellar/ 使用 npm run tutorials:watch。build 仅用于发布或明确构建验证。
|
||
|
||
邮件隔离回归(SQLite 内存库,测试阻止未模拟 HTTP):
|
||
|
||
```bash
|
||
vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Feature/MailFlow
|
||
```
|
||
|
||
实际 JS 文件可用 node --check 验证语法,PHP 用 php -l。业务变更选择相关测试,不盲目运行会触及真实数据库或外部服务的命令。真实发信、支付、收件轮询及日报命令可能产生副作用,先确认本次授权和去重记录。
|
||
|
||
后台邮件页面为“系统配置 → 邮件设置”,包含基本设置、模板管理、Resend 与档位、收件与自动回复、用量汇报。扩展页签复用已有样式,不使用悬浮按钮或弹窗;修改后验证原生页签、键盘切换、异步加载、保存范围和密钥留空行为。
|
||
|
||
套餐说明中的 `{{display_device_limit}}` 由 Stellar 的 `planDescription.ts` 显式替换,展示值优先读取 `display_device_limit`;说明未写变量时不会自动追加设备信息。普通连接限制继续独立使用原字段。购买页和结算摘要共用此渲染入口。开发热更新域名包含 dpl.loc,Vite 需保持运行。
|