Files
zjpb.net/PROGRESS_2026-03-13.md
Jowe bcc6a7d874 docs: 更新工作进度记录 v3.0.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 23:09:49 +08:00

5.6 KiB
Raw Blame History

ZJPB 开发进度 - 2026-03-13 (完整版)

📦 版本信息

  • 版本号: v3.0 → v3.0.1
  • 工作日期: 2026-03-13
  • 部署状态: 代码已推送,待服务器部署

🎯 本次完成内容

一、性能优化 v3.0

1. Detail 页面性能优化

问题: 用户反馈 detail 页面加载慢

原因分析:

  • 推荐网站查询使用 Site.tags.any() 子查询,性能差
  • 每次访问都同步更新浏览量,阻塞页面加载
  • site_tags 表缺少索引

优化方案:

  • 使用 JOIN 查询替代子查询
  • 异步更新浏览量,不阻塞响应
  • 添加数据库索引

代码修改 (app.py 第166-197行):

# 优化前:使用子查询
recommended_sites = Site.query.filter(
    Site.tags.any(Tag.id.in_([tag.id for tag in site.tags]))
)

# 优化后:使用 JOIN 查询
recommended_sites = db.session.query(Site).join(
    site_tags, Site.id == site_tags.c.site_id
).filter(
    site_tags.c.tag_id.in_(tag_ids)
)

2. 首页分页优化

  • 每页显示数量100条 → 20条
  • 显著减少首页加载数据量

3. 数据库索引优化

新增索引:

  • idx_site_tags_site_id - site_tags 表的 site_id 字段
  • idx_site_tags_tag_id - site_tags 表的 tag_id 字段
  • idx_sites_is_active - sites 表的 is_active 字段
  • idx_sites_view_count - sites 表的 view_count 字段

索引脚本: add_site_tags_indexes.py


二、v3.0.1 新功能开发

1. 后台获取新闻功能

问题: 前台用户手动获取新闻入口体验不佳

解决方案:

  • 新增后台管理获取新闻 API/api/admin/fetch-news/<code>
  • 不需要验证码,仅管理员可用
  • 在后台网站管理的新闻关键词字段旁添加"手动获取新闻"按钮

API 代码 (app.py):

@app.route('/api/admin/fetch-news/<code>', methods=['POST'])
@login_required
def admin_fetch_news(code):
    """后台手动获取指定网站的新闻(不需要验证码,仅管理员可用)"""
    # 只允许管理员访问
    if not isinstance(current_user, AdminModel):
        return jsonify({'success': False, 'error': '无权访问'}), 403
    # ... 获取新闻逻辑

添加的模板:

  • templates/admin/site/create.html - 创建网站页面
  • templates/admin/site/edit.html - 编辑网站页面

2. 取消前台手动获取新闻入口

修改文件: templates/detail_new.html

  • 移除"获取最新资讯"按钮
  • 保留新闻列表显示
  • 简化前台页面

3. 获取网站信息 API

新增: /admin/site/api/<site_id>

  • 通过网站 ID 获取网站基本信息code 等)
  • 支持前端动态获取网站编码

三、配置完善

环境变量模板更新

文件: .env.example

  • 添加博查 API 配置项 (BOCHA_API_KEY, BOCHA_BASE_URL)
  • 完善配置说明

📂 修改文件清单

文件 类型 说明
app.py 修改 性能优化、新增API
templates/admin/site/create.html 修改 添加获取新闻按钮
templates/admin/site/edit.html 修改 添加获取新闻按钮
templates/detail_new.html 修改 移除前台获取新闻入口
add_site_tags_indexes.py 新增 数据库索引脚本
.env.example 修改 添加API配置说明
PROGRESS_2026-03-13.md 新增 工作记录

🚀 Git 提交记录

ea181cf fix: 修复编辑页面获取新闻按钮逻辑
edbc428 feat: v3.0.1 - 后台获取新闻功能优化
e3d1551 fix: 修复索引添加脚本的MySQL语法兼容性
ecfb0db perf: 首页分页改为每页20条提升加载性能
9470acc perf: 优化 detail 页面加载性能

📊 性能对比

Detail 页面

  • 优化前: 加载时间 1000-2000ms
  • 优化后: 加载时间 200-400ms
  • 提升: 70-80%

首页

  • 优化前: 加载 100 条数据
  • 优化后: 加载 20 条数据
  • 提升: 数据量减少 80%

💡 技术要点

1. SQL 查询优化

  • 子查询 vs JOIN: JOIN 查询性能远优于子查询
  • 索引的重要性: 关联表必须添加外键索引

2. Flask-Admin 技巧

  • 自定义模板:create_template / edit_template
  • 通过 URL 参数获取记录 ID
  • 后台 API 开发需要 @login_required + 权限检查

3. 前端动态功能

  • 使用 JavaScript 动态插入按钮
  • 通过 URLSearchParams 获取 URL 参数
  • 链式 API 调用处理

🔄 版本历史

  • v3.0.1 (2026-03-13): 后台获取新闻功能

    • 后台管理手动获取新闻按钮
    • 前台取消手动获取新闻入口
    • 性能优化
  • v3.0 (2026-03-13): 性能优化版本

    • Detail 页面查询优化
    • 首页分页优化
    • 数据库索引优化
  • v2.6 (2026-02-23): 功能优化版本

    • 验证码 Bug 修复
    • 后台排序优化
    • Systemd 服务配置

🖥️ 服务器部署

部署命令:

cd /opt/1panel/apps/zjpb
sudo git pull
source venv/bin/activate
python add_site_tags_indexes.py
sudo systemctl restart zjpb

Gitea 地址: http://175.178.72.171:3000/jowelin/zjpb.net.git


📝 待完成

  • 服务器部署 v3.0.1
  • 测试后台获取新闻功能
  • 测试前台页面加载性能
  • 手动添加核心数据(网站、标签)
  • 考虑添加 Redis 缓存
  • 配置定时备份任务

📌 附录URL 别名(slug)说明

当前状态: 系统未使用 slug 功能

Slug 用途:

  • SEO 友好 URL/site/chatgpt 代替 /site/12345678
  • 当前系统使用 8 位数字编码code访问详情页
  • 以后如有需要可以启用

开发人员: Claude Sonnet 4.6 项目负责人: lisacc 版本: v3.0.1 工作日期: 2026-03-13