Files
pyGoEdge-UserPanel/.trae/documents/推进 PyGoEdge 面板开发(Django+GoEdge).md

80 lines
6.1 KiB
Markdown
Raw Normal View History

2025-11-18 03:36:49 +08:00
## 当前状态快照
- 账户/认证登录、注册、资料、密码修改、登录历史已就绪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 现有风格,复用已建模型与模板结构)。