6.1 KiB
6.1 KiB
当前状态快照
- 账户/认证:登录、注册、资料、密码修改、登录历史已就绪(accounts/views.py:33, 81, 121)。
- 域名接入:支持创建域名→调用 GoEdge 创建服务→生成 CNAME→DNS 检测(domains/views.py:42, 224)。
- 流量统计:管理命令拉取每日流量与带宽,写入
DomainTrafficDaily(domains/management/commands/pull_traffic.py:12;pull_daily_stats.py:11)。 - 套餐与功能:Plan 模型与运营面板的创建/编辑/开关/可见性(plans/models.py:4;admin_panel/views.py:154)。
- 账单:按自然月生成(套餐费+超量费),用户侧与运营侧账单列表/详情/导出/标记支付(billing/management/commands/generate_invoices.py:40;billing/views.py:14;admin_panel/views.py:406)。
- 系统设置:GoEdge API、默认配额、策略ID、集群ID、验证码与异常检测配置(core/models.py:4;admin_panel/forms.py:9;admin_panel/views.py:47)。
- GoEdge 封装:令牌管理、创建网站、查询每日统计/带宽、查询 webId/sslPolicyId、同步访问日志/WebSocket/WAF/HTTP3(core/goedge_client.py:20)。
- 模板:用户与运营页面基础完成,域名详情有统计与 GoEdge 状态占位(templates/domains/detail.html)。
目标增量(两周迭代)
- 完善“域名功能设置”到 GoEdge 的同步覆盖,支持缓存、路径规则、重写、Header、HTTPS 跳转、Referer、防盗链、RemoteAddr 等通用能力。
- 增加“访问日志浏览”页面(按日/小时/IP/关键词分页查询)。
- 执行超量/未支付策略(停服或限速),打通账单与域名状态联动。
- 域名详情的图表可视化与 UX 优化(近 7/30 天流量曲线,峰值标注)。
- 健壮性提升:吞错点统一日志化;MySQL 连接与配置检测提示;操作日志完善。
- 运行指南与定时任务:Windows 任务计划或 Linux cron 的命令与频率。
- 测试用例:关键流程的单元/集成测试。
迭代拆解
迭代 1:GoEdge 同步能力完善(功能设置)
- 扩展
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 配置示例与常见故障排查。
- 每日 02:00 执行:
迭代 7:测试
- 单元测试:
GoEdgeClient令牌续期与错误处理(mock requests)。check_cname_map与bytes_to_gb边界用例。
- 集成测试:
- 域名接入→DNS 检测→流量写入→账单生成 →(策略执行)闭环。
验收与交付
- 域名设置同步:开启功能后在 GoEdge 生效(访问日志、WAF、WebSocket、HTTP/3、缓存、重写、Header、HTTPS 跳转、Referer)。
- 访问日志浏览:指定日期范围能分页查看,并支持关键词/IP 筛选。
- 账单联动:未支付账单可一键对域名执行停服/限速;支付后恢复。
- 图表与 UX:域名详情页数据可视化清晰,操作反馈明确。
- 健壮性:关键吞错点具备异常日志,配置错误有可见提示。
- 测试:核心流程覆盖并可运行通过。
若确认以上计划,我将按迭代顺序开始实现并提交改动(保持 Django+Bootstrap 现有风格,复用已建模型与模板结构)。