Commit Graph

45 Commits

Author SHA1 Message Date
Jowe
2e31d2bfd6 fix: 修复前台获取新闻时验证码验证失败的问题
问题原因:fetch请求缺少credentials选项,导致浏览器不发送session cookie
解决方案:添加credentials: 'same-origin'确保发送session cookie

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:19:34 +08:00
Jowe
1118db4837 fix: 修复NewsAdmin的joinedload导致计数查询报错
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:11:05 +08:00
Jowe
3fdbc2ac8e perf: 优化管理后台性能 - 修复N+1查询、添加索引、优化统计
- 修复NewsAdmin的N+1查询问题,使用joinedload预加载
- 添加数据库索引迁移脚本(Site、News、Tag表)
- 优化管理后台统计查询,减少数据传输

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:00:35 +08:00
Jowe
03bf1c3de7 docs: 添加v3.2开发进度文档
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 23:32:38 +08:00
Jowe
2eefaa8cc9 feat: v3.2 - 用户管理功能和后台菜单统一
新增功能:
- 用户管理列表页面(搜索、分页)
- 用户详情页面(基本信息、收藏统计)
- 管理员重置用户密码功能
- 管理员修改用户昵称功能
- 管理后台首页添加用户统计卡片

优化改进:
- 统一后台菜单结构,创建可复用的 sidebar 组件
- 所有后台页面使用统一菜单,避免硬编码
- 优化权限配置文件,清理冗余规则

技术文档:
- 添加任务分解规则文档
- 添加后台菜单统一规则文档
- 添加数据库字段修复脚本

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 23:20:35 +08:00
Jowe
c61969dfc9 feat: v3.1 - 用户密码管理和邮箱验证功能
新增功能:
1. 修改密码功能
   - 用户可以修改自己的密码
   - 需要验证旧密码
   - 新密码至少6位且不能与旧密码相同

2. 邮箱绑定功能
   - 用户可以绑定/修改邮箱
   - 邮箱格式验证和唯一性检查
   - 修改邮箱后需要重新验证

3. 邮箱验证功能
   - 发送验证邮件(24小时有效)
   - 点击邮件链接完成验证
   - 验证状态显示

技术实现:
- 新增4个数据库字段(email_verified等)
- 封装邮件发送工具(utils/email_sender.py)
- 新增5个API接口
- 新增修改密码页面
- 集成邮箱管理到个人中心

文件变更:
- 修改:app.py, models.py, base_new.html, profile.html
- 新增:change_password.html, email_sender.py, migrate_email_verification.py
- 文档:server-update.md, SERVER_RESTART_GUIDE.md

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-07 23:26:02 +08:00
Jowe
1be1f35568 docs: 更新部署指南到v3.0.1
更新内容:
- 添加 v3.0.1 修复说明
- 更新服务端路径为 /opt/1panel/apps/zjpb
- 添加数据库约束修复步骤
- 更新最新提交号 7a6fd0c

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 19:27:52 +08:00
Jowe
7a6fd0c388 fix: v3.0.1 - 修复5个代码问题
修复内容:
1. Collection 模型唯一约束逻辑错误
   - 修改约束从 (user_id, site_id, folder_id) 到 (user_id, site_id)
   - 防止用户多次收藏同一网站

2. 用户注册重复提交数据库
   - 优化为只提交一次数据库操作
   - 提升注册性能

3. JavaScript 未使用的变量
   - 删除 updateCollectButton() 中未使用的 icon 变量

4. 文件夹计数逻辑缺失
   - 为每个文件夹添加收藏数量计算
   - 修复收藏列表页面显示

5. JavaScript 错误处理不完善
   - 所有 fetch 调用添加 HTTP 状态码检查
   - 改进网络错误提示

新增文件:
- fix_collection_constraint.py - 数据库约束修复脚本
- BUGFIX_v3.0.1.md - 详细修复记录

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 19:27:12 +08:00
Jowe
423039ce68 docs: 添加v3.0服务端部署指南
包含内容:
- 完整的部署步骤(9个步骤)
- 功能测试清单(6项测试)
- 故障排查指南(5个常见问题)
- 性能优化建议
- 安全检查清单
- 后续维护建议

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 19:20:50 +08:00
Jowe
2067fb1712 feat: v3.0 - 用户系统和收藏功能
核心功能:
- 用户注册/登录系统(用户名+密码)
- 工具收藏功能(一键收藏/取消收藏)
- 收藏分组管理(文件夹)
- 用户中心(个人资料、收藏列表)

数据库变更:
- 新增 users 表(用户信息)
- 新增 folders 表(收藏分组)
- 新增 collections 表(收藏记录)

安全增强:
- Admin 和 User 完全隔离
- 修复14个管理员路由的权限漏洞
- 所有管理功能添加用户类型检查

新增文件:
- templates/auth/register.html - 注册页面
- templates/auth/login.html - 登录页面
- templates/user/profile.html - 用户中心
- templates/user/collections.html - 收藏列表
- create_user_tables.py - 数据库迁移脚本
- USER_SYSTEM_README.md - 用户系统文档
- CHANGELOG_v3.0.md - 版本更新日志

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 19:19:05 +08:00
Jowe
34cd05b01c feat: v2.6.1 - 简化验证码方案,所有手动请求都需验证
核心改进:
- 移除复杂的IP限流逻辑,改为每次请求都需验证码
- 添加简单图片验证码生成(4位字母+数字)
- 添加验证码弹窗UI,用户体验友好
- 支持回车键提交验证码,点击刷新验证码
- 验证码5分钟有效期

技术实现:
- 使用Pillow生成验证码图片,带干扰线和噪点
- Session存储验证码,一次性验证后自动清除
- 前端模态框设计,支持点击外部关闭
- 代码更简洁,维护成本更低

安全性:
- 每次请求都需要人工验证
- 有效防止API滥用和批量调用
- 不依赖第三方服务,稳定可靠

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 17:19:29 +08:00
Jowe
6b71fa4351 docs: 添加v2.6.0故障排查指南
包含部署过程中常见问题的诊断和解决方案。

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:44:42 +08:00
Jowe
659e996627 docs: 添加v2.6.0快速部署指南 2026-02-06 15:54:51 +08:00
Jowe
939717fa57 feat: v2.6.0 - API安全优化和文档整合
## 核心优化
- 移除详情页自动调用博查API的逻辑,改为按需加载
- 添加基于IP的频率限制(每小时3次)
- 实现验证码防护机制(超过阈值后要求验证)
- 新增频率限制工具类 utils/rate_limiter.py

## 成本控制
- API调用减少约90%+(只在用户点击时调用)
- 防止恶意滥用和攻击
- 可配置的频率限制和验证码策略

## 文档整合
- 创建 docs/ 目录结构
- 归档历史版本文档到 docs/archive/
- 移动部署文档到 docs/deployment/
- 添加文档索引 docs/README.md

## 技术变更
- 新增依赖: Flask-Limiter==3.5.0
- 修改: app.py (移除自动调用,新增API端点)
- 修改: templates/detail_new.html (按需加载UI)
- 新增: utils/rate_limiter.py (频率限制和验证码)
- 新增: docs/archive/DEVELOP_v2.6.0_API_SECURITY.md

## 部署说明
1. pip install Flask-Limiter==3.5.0
2. 重启应用
3. 无需数据库迁移

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:54:13 +08:00
Jowe
c1a06ad684 docs: 添加服务器部署文档和v2.5部署记录 2026-01-10 21:29:30 +08:00
Jowe
22efd8b31c fix: 修复标签页description为空时的TypeError
问题:
- 当selected_tag.description为None时,尝试与字符串相加导致TypeError
- 造成标签页访问时出现502错误

修复:
- 在index_new.html第8行添加or默认值处理
- 确保description为None时使用默认文案

测试:
- 本地验证标签页正常显示
- 修复v2.5部署502问题

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-10 18:39:19 +08:00
Jowe
e71230ca96 feat: v2.5 社媒分享功能 + 面包屑优化
新增功能:
- 社媒分享:一键生成多平台分享文案
  - 支持8个平台:通用、小红书、抖音、B站、微信公众号、朋友圈、X (Twitter)、LinkedIn
  - 智能生成适配各平台特点的文案(字数限制、风格、内容丰富度)
  - 集成DeepSeek AI自动生成 + 规则模板回退
  - "分享"按钮支持直接跳转到平台发布后台
  - X (Twitter)支持预填充文案
  - 自动复制文案到剪贴板

优化改进:
- 面包屑导航:修复折行问题,确保始终单行显示
  - 添加 white-space: nowrap 和 flex-shrink: 0
  - 长标题自动省略显示
- 社媒分享按钮文案:从"一键生成社媒分享"改为"分享"
- 更新Twitter为X,使用x.com域名

技术实现:
- 前端:detail_new.html 新增分享弹窗和交互逻辑
- 后端:app.py 新增 /api/generate-social-share 接口
- 支持按平台定制文案内容和格式

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-10 18:04:42 +08:00
Jowe
8011e5bd4a feat: 实现最新/热门/推荐标签功能
- 移除顶部热门工具排行榜模块
- 在标签下方添加三个tab(最新/热门/推荐)
- 添加is_recommended字段到Site模型
- 创建数据库迁移脚本add_is_recommended.py
- 更新后台管理界面支持推荐标记
- 更新分页链接保持tab状态
- 所有功能已本地测试验证通过

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-04 00:59:37 +08:00
Jowe
da30394ed7 feat: 添加热门工具排行榜功能
v2.5.0 - 新增首页热门工具展示

新增功能:
- 在首页顶部展示按浏览量排序的前10个热门工具
- 响应式网格布局(桌面5列、平板3列、手机2列)
- 视觉突出的排行榜徽章和排名标识(前三名金银铜色)
- 仅在首页显示,筛选和搜索时隐藏

技术实现:
- app.py: 添加popular_sites查询逻辑
- templates/index_new.html: 新增热门工具展示区域和样式

用户体验提升:
- 帮助用户快速发现最受欢迎的AI工具
- 视觉层级清晰,排名一目了然

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-04 00:19:28 +08:00
Jowe
ad93e7e8ad fix: 在所有独立管理页面添加SEO工具菜单项
- 修改 change_password.html 添加SEO工具菜单
- 修改 batch_import.html 添加SEO工具菜单和修改密码菜单
- 确保所有管理页面的侧边栏菜单保持一致
2026-01-03 23:38:36 +08:00
Jowe
c68d846daa fix: 修复SEO工具页面模板继承错误,改为独立完整HTML页面
- 将seo_tools.html从继承admin/master.html改为独立完整HTML
- 从master.html中移除SEO工具菜单项,避免url_for错误
- 修复本地UndefinedError: 'admin_view' is undefined错误
2026-01-03 23:26:25 +08:00
Jowe
c74b115ac0 feat: 添加SEO工具管理页面 - v2.4.1
新增功能:
1. 后台SEO工具管理页面 (/admin/seo-tools)
   - 显示sitemap状态(是否存在、最后更新时间、文件大小)
   - 显示动态sitemap URL并支持一键复制

2. 生成静态sitemap.xml文件 (/api/generate-static-sitemap)
   - 将动态sitemap生成为static/sitemap.xml静态文件
   - 支持手动触发更新
   - 返回URL数量统计信息

3. 通知搜索引擎功能 (/api/notify-search-engines)
   - 支持向Google、Baidu、Bing提交sitemap更新通知
   - 使用各搜索引擎的ping接口
   - 返回每个搜索引擎的提交状态

4. 一键操作
   - 提供"一键生成并通知"功能
   - 自动执行生成sitemap + 通知搜索引擎两个步骤
   - 适合日常SEO维护使用

技术实现:
- 使用Flask路由和@login_required装饰器保护后台接口
- AJAX + fetch API实现前端交互
- Bootstrap 4卡片式UI设计
- 实时显示操作结果,颜色区分成功/失败状态

用户价值:
- 无需手动登录各搜索引擎后台提交sitemap
- 支持批量更新和通知,提升SEO工作效率
- 可视化状态展示,便于监控sitemap更新情况

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 17:29:14 +08:00
Jowe
7da0bb6e54 feat: v2.4.0 - SEO全面优化
新增功能:
1. 自动化SEO基础设施
   - Sitemap.xml 动态生成 (/sitemap.xml)
   - Robots.txt 动态配置 (/robots.txt)

2. Schema.org 结构化数据
   - 工具详情页添加 SoftwareApplication 结构化数据
   - 面包屑导航添加 BreadcrumbList 结构化数据
   - Open Graph 标签支持社交媒体分享

3. 智能内链系统
   - 自动识别工具名称并添加内部链接
   - auto_link 过滤器支持内容互联

4. 标签专题页SEO优化
   - Tag模型新增字段: seo_title, seo_description, seo_keywords
   - 支持自定义标签页SEO信息
   - 提供迁移脚本: migrate_tag_seo_fields.py

5. 面包屑导航
   - 可视化导航: 首页 > 标签 > 工具名
   - 支持Schema.org和视觉显示

6. 页面级SEO改进
   - 工具详情页: canonical链接, 动态meta标签
   - 标签页: 专属SEO信息支持
   - 首页: 完整meta标签配置

技术改进:
- 迁移脚本支持幂等性检查
- Windows控制台编码兼容性优化
- 数据库字段注释标注版本

部署文档: DEPLOY_v2.4.0.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 16:32:13 +08:00
Jowe
495c3b8025 fix: 启用gunicorn守护进程模式,避免前台运行
- 修改gunicorn_config.py中daemon=True
- 解决./manage.sh restart后程序在前台运行的问题
- 应用将在后台运行,不会被Ctrl+C中断
2025-12-31 11:16:40 +08:00
Jowe
289a09b376 docs: 添加v2.3.0部署清单 2025-12-31 11:03:04 +08:00
Jowe
fdde6990fb feat: v2.3.0 - 新闻获取准确性优化
核心改进:
1. 新增专用新闻关键词字段(sites.news_keywords)
2. 严格匹配搜索策略(双引号包裹关键词)
3. 前台手动刷新新闻功能

数据库变更:
- Sites表添加news_keywords字段(VARCHAR(200))
- 提供迁移脚本migrate_news_keywords.py

代码变更:
- models.py: Site模型添加news_keywords字段
- app.py: 后台表单配置、API路由、search_site_news调用优化
- utils/news_searcher.py: 支持news_keywords参数优先匹配
- templates/detail_new.html: 添加刷新按钮和JavaScript

新增功能:
- 后台可为每个网站设置专属新闻关键词
- 详情页"获取最新资讯"按钮(前台可用,无需登录)
- 新API端点:POST /api/refresh-site-news/<site_code>

文档:
- DEPLOY_v2.3.0.md: 完整部署指南
- DEPLOY_v2.3_QUICK.md: 快速部署指南

向后兼容:
- 现有网站自动使用网站名称作为默认关键词
- 未设置关键词时降级使用网站名称搜索

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 11:01:51 +08:00
Jowe
bdf31090ed merge: 合并服务器代码,统一品牌和配置 2025-12-31 01:37:16 +08:00
ZJPB Admin
f43b608d88 fix: 删除无效的nul文件 2025-12-31 01:37:27 +08:00
Jowe
4d3163575c feat: 添加v2.2.0部署脚本和工具文件 2025-12-31 01:33:47 +08:00
ZJPB Admin
4b6a77f71b fix: 修复detail.html的品牌名称 2025-12-31 00:26:23 +08:00
ZJPB Admin
98151594f2 fix: 完善品牌名称修改,更新页脚和默认title 2025-12-31 00:24:38 +08:00
ZJPB Admin
912e9f0ce7 fix: 修复首页title,统一使用新品牌名称 2025-12-31 00:19:06 +08:00
ZJPB Admin
ec3c2f4cd9 chore: 品牌和统计优化
- 更新网站名称:ZJPB 焦提示词 → ZJPB - 自己品吧
  - 添加Google Analytics统计代码(G-LZ4FGX5LRB)
  - 统计代码放置在页面底部,Clarity之前
2025-12-31 00:12:42 +08:00
ZJPB Admin
eec4ec0cae chore: 更新.gitignore,忽略部署文件和用户上传内容 2025-12-30 23:50:29 +08:00
ZJPB Admin
b00e52e1e0 release: v2.2.0 - 博查新闻搜索功能 (生产环境部署版)
核心功能:
  - 集成博查Web Search API自动获取网站相关新闻
  - 智能新闻更新机制(每日首次访问触发)
  - 精确新闻搜索(使用引号强制匹配网站名称)
  - News模型扩展(source_name, source_icon字段)
  - 网站详情页新闻展示模块
  - 新闻来源网站信息展示
  - 自动去重防止重复新闻

  技术实现:
  - NewsSearcher工具类封装博查API
  - 数据库迁移脚本migrate_news_fields.py
  - 测试脚本test_news_feature.py
  - 定期任务脚本fetch_news_cron.py
  - API路由:/api/fetch-site-news, /api/fetch-all-news

  配置优化:
  - 修复manage.sh路径和启动命令
  - 博查API配置(BOCHA_API_KEY, BOCHA_BASE_URL)
  - 新闻搜索参数配置

  界面优化:
  - 详情页新闻模块(左侧主栏)
  - 相似推荐模块(右侧边栏)
  - 首页标签图标修复
  - 后台添加修改密码功能
  - 登录页面优化

  部署信息:
  - 部署日期: 2025-12-30
  - 部署方式: 手动上传文件
  - 数据库: 已迁移(添加source_name和source_icon字段)
2025-12-30 23:44:27 +08:00
Jowe
f5f73025d7 docs: 添加v2.2.0快速部署指南和部署就绪报告 2025-12-30 22:35:32 +08:00
Jowe
2e9f634caa docs: 添加v2.2.0部署文档和脚本
- v2.2.0.patch: Git补丁文件(56KB)
- git_patch_deploy_v2.2.sh: 自动化部署脚本
- DEPLOY_v2.2.0.md: 完整部署指南
- DEPLOY_v2.2_CHECKLIST.md: 部署检查清单
2025-12-30 22:34:24 +08:00
Jowe
495248bf5f feat: v2.2.0 智能新闻更新和布局优化
- 实现每日首次访问自动更新新闻功能
- 每个网站获取3条一周内的新闻
- 新闻模块放置在左侧主栏
- 相似推荐移至右侧边栏
- 自动去重防止重复新闻
2025-12-30 22:31:51 +08:00
Jowe
d7d21e19c9 release: v2.2.0 - 博查新闻搜索功能
新增功能:
- 集成博查Web Search API,自动获取网站相关新闻
- News模型添加source_name和source_icon字段
- 新闻管理后台界面优化
- 网站详情页新闻展示(标题、摘要、来源、链接)
- 定期任务脚本支持批量获取新闻
- 完整的API路由和测试脚本

技术实现:
- NewsSearcher工具类封装博查API
- 智能新闻搜索和去重机制
- 数据库迁移脚本migrate_news_fields.py
- API路由:/api/fetch-site-news 和 /api/fetch-all-news
- Cron任务脚本:fetch_news_cron.py

修改文件:
- config.py: 添加博查API配置
- models.py: News模型扩展
- app.py: 新闻获取路由和NewsAdmin优化
- templates/detail_new.html: 新闻展示UI

新增文件:
- utils/news_searcher.py (271行)
- migrate_news_fields.py (99行)
- fetch_news_cron.py (167行)
- test_news_feature.py (142行)
- NEWS_FEATURE_v2.2.md (408行)

统计:9个文件,1348行新增

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-30 22:04:35 +08:00
Jowe
00397a63b8 fix: v2.1.0补充提交 - 配置完善和功能修复
修复内容:
- 完善tag_generator.py的generate_description方法
- 优化index_new.html首页图标CSS
- 更新templates/admin登录页面和后台模板
- 完善config.py配置
- 更新requirements.txt依赖列表
- 优化.gitignore规则

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-30 21:40:44 +08:00
Jowe
46a34fbb1a docs: 添加v2.1.0开发进度记录
记录当前部署状态、已完成工作、待完成任务和技术要点
便于后续继续工作
2025-12-30 02:01:45 +08:00
ZJPB Admin
9f5d006090 release: v2.1.0 - Prompt管理系统、页脚优化、图标修复 2025-12-30 01:17:08 +08:00
Jowe
30b1ef75d6 release: v2.1 - Prompt管理系统、页脚优化、图标修复
新增功能:
- Prompt管理:后台新增Prompt模板管理功能
- 数据库迁移:新增prompt_templates表及默认数据
- 页脚优化:添加ICP备案号(浙ICP备2025154782号-1)和Microsoft Clarity统计
- 图标修复:详情页Material Icons替换为Emoji
- 标签显示:修复编辑页标签名称无法显示的问题

技术改进:
- 添加正则表达式提取标签名称
- 优化页脚样式和链接
- 完善增量部署文档

🚀 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-30 00:45:39 +08:00
Jowe
9e47ebe749 release: v2.0 - 完整功能管理系统
主要功能:
- 完整的Flask-Admin后台管理系统
- 网站/标签/新闻管理功能
- 用户登录认证系统
- 科技感/未来风UI设计
- 标签分类系统(取代传统分类)
- 详情页面展示
- 数据库迁移脚本
- 书签导入解析工具

技术栈:
- Flask + SQLAlchemy
- Flask-Admin管理界面
- Bootstrap 4响应式设计
- 用户认证与权限管理

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 19:21:17 +08:00
Jowe
2fbca6ebc7 feat: 完成全站UI优化 - 科技感/未来风设计
- 前台页面全面升级为Tailwind CSS框架
- 引入Google Fonts (Space Grotesk, Noto Sans)
- 主色调更新为#25c0f4 (cyan blue)
- 实现玻璃态效果和渐变背景
- 优化首页网格卡片布局和悬停动画
- 优化详情页双栏布局和渐变Logo光晕
- 优化管理员登录页,添加科技网格背景
- Flask-Admin后台完整深色主题
- 统一Material Symbols图标系统
- 网站自动抓取功能界面优化

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-27 22:45:09 +08:00