80 lines
6.1 KiB
Markdown
80 lines
6.1 KiB
Markdown
## 当前状态快照
|
||
- 账户/认证:登录、注册、资料、密码修改、登录历史已就绪(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)。
|
||
|
||
## 目标增量(两周迭代)
|
||
1) 完善“域名功能设置”到 GoEdge 的同步覆盖,支持缓存、路径规则、重写、Header、HTTPS 跳转、Referer、防盗链、RemoteAddr 等通用能力。
|
||
2) 增加“访问日志浏览”页面(按日/小时/IP/关键词分页查询)。
|
||
3) 执行超量/未支付策略(停服或限速),打通账单与域名状态联动。
|
||
4) 域名详情的图表可视化与 UX 优化(近 7/30 天流量曲线,峰值标注)。
|
||
5) 健壮性提升:吞错点统一日志化;MySQL 连接与配置检测提示;操作日志完善。
|
||
6) 运行指南与定时任务:Windows 任务计划或 Linux cron 的命令与频率。
|
||
7) 测试用例:关键流程的单元/集成测试。
|
||
|
||
## 迭代拆解
|
||
### 迭代 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 配置示例与常见故障排查。
|
||
|
||
### 迭代 7:测试
|
||
- 单元测试:
|
||
- `GoEdgeClient` 令牌续期与错误处理(mock requests)。
|
||
- `check_cname_map` 与 `bytes_to_gb` 边界用例。
|
||
- 集成测试:
|
||
- 域名接入→DNS 检测→流量写入→账单生成 →(策略执行)闭环。
|
||
|
||
## 验收与交付
|
||
- 域名设置同步:开启功能后在 GoEdge 生效(访问日志、WAF、WebSocket、HTTP/3、缓存、重写、Header、HTTPS 跳转、Referer)。
|
||
- 访问日志浏览:指定日期范围能分页查看,并支持关键词/IP 筛选。
|
||
- 账单联动:未支付账单可一键对域名执行停服/限速;支付后恢复。
|
||
- 图表与 UX:域名详情页数据可视化清晰,操作反馈明确。
|
||
- 健壮性:关键吞错点具备异常日志,配置错误有可见提示。
|
||
- 测试:核心流程覆盖并可运行通过。
|
||
|
||
若确认以上计划,我将按迭代顺序开始实现并提交改动(保持 Django+Bootstrap 现有风格,复用已建模型与模板结构)。 |