Files
pyGoEdge-UserPanel/.trae/documents/推进 PyGoEdge 面板开发(Django+GoEdge).md
2025-11-18 03:36:49 +08:00

80 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 当前状态快照
- 账户/认证登录、注册、资料、密码修改、登录历史已就绪accounts/views.py:33, 81, 121
- 域名接入:支持创建域名→调用 GoEdge 创建服务→生成 CNAME→DNS 检测domains/views.py:42, 224
- 流量统计:管理命令拉取每日流量与带宽,写入 `DomainTrafficDaily`domains/management/commands/pull_traffic.py:12pull_daily_stats.py:11
- 套餐与功能Plan 模型与运营面板的创建/编辑/开关/可见性plans/models.py:4admin_panel/views.py:154
- 账单:按自然月生成(套餐费+超量费),用户侧与运营侧账单列表/详情/导出/标记支付billing/management/commands/generate_invoices.py:40billing/views.py:14admin_panel/views.py:406
- 系统设置GoEdge API、默认配额、策略ID、集群ID、验证码与异常检测配置core/models.py:4admin_panel/forms.py:9admin_panel/views.py:47
- GoEdge 封装:令牌管理、创建网站、查询每日统计/带宽、查询 webId/sslPolicyId、同步访问日志/WebSocket/WAF/HTTP3core/goedge_client.py:20
- 模板:用户与运营页面基础完成,域名详情有统计与 GoEdge 状态占位templates/domains/detail.html
## 目标增量(两周迭代)
1) 完善“域名功能设置”到 GoEdge 的同步覆盖支持缓存、路径规则、重写、Header、HTTPS 跳转、Referer、防盗链、RemoteAddr 等通用能力。
2) 增加“访问日志浏览”页面(按日/小时/IP/关键词分页查询)。
3) 执行超量/未支付策略(停服或限速),打通账单与域名状态联动。
4) 域名详情的图表可视化与 UX 优化(近 7/30 天流量曲线,峰值标注)。
5) 健壮性提升吞错点统一日志化MySQL 连接与配置检测提示;操作日志完善。
6) 运行指南与定时任务Windows 任务计划或 Linux cron 的命令与频率。
7) 测试用例:关键流程的单元/集成测试。
## 迭代拆解
### 迭代 1GoEdge 同步能力完善(功能设置)
- 扩展 `GoEdgeClient`
- `updateHTTPWebCache`HTTPWebService/updateHTTPWebCache映射 `cache_rules_json` 最小配置。
- `updateHTTPWebLocations` 映射 `page_rules_json` 中的路径/动作(最简:按前缀/正则路由到缓存/重写)。
- `updateHTTPWebRewriteRules` 支持简单重写from→to
- `updateHTTPWebRequestHeader` / `updateHTTPWebResponseHeader` 支持常用 Header 注入(如 HSTS、Cache-Control
- `updateHTTPWebRedirectToHTTPS` 一键跳转 HTTPS可由计划功能开关或自定义字段驱动
- `updateHTTPWebReferers` 防盗链白名单/黑名单的最小实现。
- `updateHTTPWebRemoteAddr` 按 X-Forwarded-For 解析真实客户端 IP与 WAF/限速联动)。
- 扩展 `domains/views.py:340 domain_settings`:在保存后,根据 `webId/sslPolicyId` 调用上述接口进行同步;失败采用 `messages.warning` 并写入 `OperationLog`
- 约定 JSON 形态:首版采取简化 schema键名与 GoEdge 文档一致),并在后端进行最小校验与 Base64 编码。
### 迭代 2访问日志浏览
- 新增路由 `/domains/<id>/logs/` 与模板:
- 使用 `HTTPAccessLogService/listHTTPAccessLogs`,支持 day/hourFrom/hourTo/size/reverse/ip/keyword 过滤。
- 提供翻页(基于 `requestId``hasMore`)。
- 展示字段时间、域名、IP、方法、路径、状态码、字节数、UA、WAF 命中。
- 权限:仅域名所有者或 staff 可访问。
### 迭代 3账单联动与策略执行
- 账单生成后(未支付):
- 运营面板增加“执行超量策略”入口:
- 停服:`HTTPWebService/updateHTTPWebShutdown` 开启;域名状态设为 `suspended`
- 限速:`HTTPWebService/updateHTTPWebRequestLimit` 设置最小限速阈值(可从 `SystemSettings.default_overage_policy` 读取)。
- 支付后:自动/手动恢复(关闭 Shutdown 或解除 RequestLimit域名状态回到 `active`)。
- 管理命令或后台任务:按周期扫描未支付账单并批量执行策略(安全保护:仅对 `active` 域名生效)。
### 迭代 4可视化与 UX
- 域名详情页:
- 使用 Chart.js 绘制近 30 天流量曲线GB与峰值带宽Mbps双轴图近 7 天摘要卡片。
- 清晰的 CNAME 生效提示与重试入口GoEdge 状态分组卡片(访问日志/WebSocket/WAF/HTTP3
### 迭代 5健壮性与日志化
- 替换 `except Exception: pass` 为日志记录:
- 例如 `core/goedge_client.py:388,407``admin_panel/views.py:101,126,330,357,392,451,466,482``billing/views.py:51``accounts/views.py:68``settings/base.py:68`
- MySQL 检测:若 `DB_ENGINE=mysql``pymysql.install_as_MySQLdb()` 失败,提示更明确的安装/环境信息。
- 操作日志:补齐失败原因与结果摘要,便于审计回溯。
### 迭代 6运行指南与定时任务
- 文档(运营面板“系统设置”页添加说明块):
- 每日 02:00 执行:`python manage.py pull_daily_stats --days 1`
- 每月 01 日 01:00 执行:`python manage.py generate_invoices --overwrite`
- Windows 任务计划/ Linux cron 配置示例与常见故障排查。
### 迭代 7测试
- 单元测试:
- `GoEdgeClient` 令牌续期与错误处理mock requests
- `check_cname_map``bytes_to_gb` 边界用例。
- 集成测试:
- 域名接入→DNS 检测→流量写入→账单生成 →(策略执行)闭环。
## 验收与交付
- 域名设置同步:开启功能后在 GoEdge 生效访问日志、WAF、WebSocket、HTTP/3、缓存、重写、Header、HTTPS 跳转、Referer
- 访问日志浏览:指定日期范围能分页查看,并支持关键词/IP 筛选。
- 账单联动:未支付账单可一键对域名执行停服/限速;支付后恢复。
- 图表与 UX域名详情页数据可视化清晰操作反馈明确。
- 健壮性:关键吞错点具备异常日志,配置错误有可见提示。
- 测试:核心流程覆盖并可运行通过。
若确认以上计划,我将按迭代顺序开始实现并提交改动(保持 Django+Bootstrap 现有风格,复用已建模型与模板结构)。