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

6.1 KiB
Raw Blame History

当前状态快照

  • 账户/认证登录、注册、资料、密码修改、登录历史已就绪accounts/views.py:33, 81, 121
  • 域名接入:支持创建域名→调用 GoEdge 创建服务→生成 CNAME→DNS 检测domains/views.py:42, 224
  • 流量统计:管理命令拉取每日流量与带宽,写入 DomainTrafficDailydomains/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
    • updateHTTPWebCacheHTTPWebService/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 过滤。
    • 提供翻页(基于 requestIdhasMore)。
    • 展示字段时间、域名、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,407admin_panel/views.py:101,126,330,357,392,451,466,482billing/views.py:51accounts/views.py:68settings/base.py:68
  • MySQL 检测:若 DB_ENGINE=mysqlpymysql.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_mapbytes_to_gb 边界用例。
  • 集成测试:
    • 域名接入→DNS 检测→流量写入→账单生成 →(策略执行)闭环。

验收与交付

  • 域名设置同步:开启功能后在 GoEdge 生效访问日志、WAF、WebSocket、HTTP/3、缓存、重写、Header、HTTPS 跳转、Referer
  • 访问日志浏览:指定日期范围能分页查看,并支持关键词/IP 筛选。
  • 账单联动:未支付账单可一键对域名执行停服/限速;支付后恢复。
  • 图表与 UX域名详情页数据可视化清晰操作反馈明确。
  • 健壮性:关键吞错点具备异常日志,配置错误有可见提示。
  • 测试:核心流程覆盖并可运行通过。

若确认以上计划,我将按迭代顺序开始实现并提交改动(保持 Django+Bootstrap 现有风格,复用已建模型与模板结构)。