mzaxd
|
2025db4a47
|
Merge branch 'main' of https://github.com/Mzaxd/agent_park
|
2026-01-16 16:59:48 +08:00 |
|
 mzaxdandClaude
|
2a37a83072
|
fix: 修复代码审查发现的安全性和性能问题
主要修复:
- 安全性:API 密钥使用恒定时间比较防止时序攻击
- 安全性:URL 验证仅允许 http/https 协议,防止 XSS
- 安全性:移除 Markdown 的 rehypeRaw 插件增强 XSS 防护
- 安全性:Webhook 错误信息脱敏,生产环境不暴露敏感数据
- 性能:项目详情页使用并行数据获取
- 性能:Webhook 批量查询标签,避免 N+1 查询问题
- 类型安全:移除 any 类型,使用 Prisma 类型注解
- 类型安全:为 useProjects 函数添加返回类型
- 代码质量:创建 slug 工具函数统一 slug 生成逻辑
- 代码质量:搜索字符串添加最小长度限制(2字符)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-01-16 14:43:46 +08:00 |
|
mzaxd
|
c545f13bd2
|
fix: 修复 Next.js 15 动态路由 params 参数类型
将 /api/projects/[slug]/route.ts 中的 params 类型从同步改为 Promise,以符合 Next.js 15 的类型要求
|
2026-01-11 16:05:58 +08:00 |
|
蔡浩涵
|
a878b526b8
|
fix: 限制 Markdown 内容中图片的显示大小
用容器包裹图片并设置最大宽度为 max-w-md (448px),避免超大图片影响页面阅读体验。
|
2026-01-11 15:51:16 +08:00 |
|
蔡浩涵
|
14b72dcb7b
|
refactor: 移除项目详情页硬编码的安装指南
移除了对所有带 GitHub 链接项目自动显示的通用安装命令(npm install),
现在安装说明应通过项目的 Markdown 内容字段自定义,更加灵活。
|
2026-01-11 14:57:58 +08:00 |
|
蔡浩涵
|
e63dce2808
|
refactor: 移除项目详情页的图片/视频显示逻辑
由于 source 字段语义不清且容易产生 CSP 错误,暂时移除
图片和视频的显示功能,待后续设计更完善的图片管理方案
|
2026-01-11 14:34:33 +08:00 |
|
蔡浩涵
|
bef12403fb
|
feat: 添加项目删除 API 接口和完整 API 文档
- 新增 DELETE /api/projects/:slug 接口,支持根据 slug 删除项目
- 删除操作会级联删除关联的外部链接和标签关系
- 新增 GET /api/projects/:slug 接口,支持查询项目详情
- 添加完整的 API 参考文档(docs/api-reference.md)
- 修复 ProjectDetail 组件的 iframe 嵌入逻辑,添加可嵌入域名白名单
- 删除旧的数据摄入流程文档,由新 API 文档替代
|
2026-01-11 13:58:52 +08:00 |
|
 mzaxdandClaude
|
2fe86f6818
|
fix: 修复 Vercel 部署时的 TypeScript 类型和 ESLint 错误
- 修复 prisma/seed.ts 中显式连接表的类型错误
- 将 webhook 路由中的 console.log 改为 console.warn
- 添加非空断言修复 badges.ts 中的类型错误
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-01-10 12:38:44 +08:00 |
|
 mzaxdandClaude
|
0b9573072f
|
refactor: 去重器改用 API 并修复 tag 唯一性约束处理
- deduplicator: 从直接数据库查询改为调用 /api/webhook/check-duplicates API
- database-ingestor: 使用 JSON 文件传参避免 curl 编码问题
- webhook: 修复 tag name 唯一性约束冲突,更新时删除旧关联重建
- 添加 check-duplicates API 端点用于批量去重检测
- 适配 ProjectTag 显式关联表的数据查询逻辑
- ProjectCard: 修复 getProjectIcon 空值处理
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-01-06 14:21:10 +08:00 |
|
 mzaxdandClaude
|
cb667b7321
|
refactor: 精简首页和项目列表页,移除重复内容
- 首页删除"按标签浏览"区块,功能与项目列表页重复
- 项目列表页删除顶部标题、副标题及装饰元素
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-30 20:07:19 +08:00 |
|
 mzaxdandClaude
|
bb1bee58c7
|
feat: 项目预览框支持图片 URL
- 添加 isImageUrl 辅助函数检测 URL 是否为图片
- 根据资源类型条件渲染 img 或 iframe 标签
- 图片资源自适应高度,iframe 保持 16:9 比例
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-30 19:57:13 +08:00 |
|
 mzaxdandClaude
|
4b0770fe44
|
fix: 完善首页和详情页国际化实现
- 首页 hero 区域标题和描述使用 i18n 翻译
- 首页 "BROWSE BY TAGS" 和 "FEATURED PROJECTS" 使用 i18n 翻译
- 详情页 "BACK TO PROJECTS" 使用 i18n 翻译
- 添加缺失的中英文翻译键
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-30 19:57:07 +08:00 |
|
 mzaxdandClaude
|
5e43a7d382
|
refactor: 项目详情页预览框改为条件渲染,无演示内容时不显示占位符
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-30 16:01:24 +08:00 |
|
 mzaxdandClaude
|
cae5686d2d
|
feat: 添加 GitHub 统计数据展示功能
新增 GitHub 统计卡片和徽章组件,在项目卡片、详情页和侧边栏中展示 GitHub stars、forks 等统计数据
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-30 14:14:02 +08:00 |
|
 mzaxdandClaude
|
443dc8370e
|
refactor: 完善项目详情与侧边栏组件国际化实现
将 ProjectDetail 和 ProjectSidebar 组件中的硬编码文本替换为国际化翻译键,提升中英文支持一致性。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-29 20:46:05 +08:00 |
|
 mzaxdandClaude
|
3869bb23bb
|
refactor: 优化组件国际化实现
- 将客户端组件改为服务端组件,使用 getTranslations
- LocaleSwitcher 简化为接收 switchUrl prop
- ProjectCard/ProjectList/ExternalLinkCard 等组件支持 i18n
- 优化 webhook 去重查询,关联 links 数据
- 移除 ProjectDetail 中的客户端交互逻辑(ShareButtons 暂时禁用)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-29 19:58:23 +08:00 |
|
 mzaxdandClaude
|
3ab2d2057c
|
feat: 添加顶部公告栏跳转链接和关闭按钮功能
- 新增 AnnouncementBar 客户端组件支持点击跳转
- 添加关闭按钮,状态保存至 localStorage
- 刷新页面后记住用户关闭状态
- 支持 i18n 配置公告内容和链接
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-29 19:57:47 +08:00 |
|
 mzaxdandClaude
|
a8a847beb2
|
fix: 修复 Markdown 代码块渲染导致的 HTML hydration 错误
- 移除客户端状态管理,改为服务端渲染
- 添加 pre 组件处理代码块的包裹样式
- 修改 code 组件只返回 <code> 元素,避免重复渲染
- 添加 p 组件块级元素检测,防止 <p><pre> 嵌套
- 使用 className 和换行符检测区分 inline code 和代码块
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-28 10:32:49 +08:00 |
|
 mzaxdandClaude
|
bf69555978
|
feat: 添加项目详情 Markdown 渲染支持及项目添加脚本
- 新增 MarkdownContent 组件支持 Markdown 渲染
- 新增 scripts 目录下的项目添加工具脚本
- 更新项目详情页面支持 Markdown 内容显示
- 更新依赖包支持 Markdown 解析
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-27 17:19:39 +08:00 |
|
 mzaxdandClaude
|
23d4c7df49
|
feat: 优化 webhook 去重策略实现多级匹配
- 新增 findExistingProject 函数实现智能去重
- 优先级1: GitHub URL 完全匹配(最准确)
- 优先级2: Website URL 完全匹配
- 优先级3: slug 匹配(兜底)
- 增强日志输出,清晰显示匹配方式和项目 ID
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-27 10:29:59 +08:00 |
|
 mzaxdandClaude
|
31ed4b7c25
|
fix: 实现中英文语言切换功能
- 新建 LocaleSwitcher 组件支持语言切换
- 使用 usePathname 保持当前页面路径
- 点击切换时自动更新 URL 语言前缀
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-26 16:50:08 +08:00 |
|
 mzaxdandClaude
|
4abe6715bb
|
feat: 优化项目网站 UI/UX 并新增项目详情组件
- 重构首页和项目列表页布局,优化视觉层次
- 新增 ProjectDetail、ProjectSidebar、RelatedProjects 组件
- 改进项目卡片样式,增加悬停效果
- 优化标签云和搜索栏交互体验
- 更新全局样式和 Tailwind 配置
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-26 16:36:33 +08:00 |
|
 mzaxdandClaude
|
ba1fab65c6
|
feat: 实现 Agent Park AI 项目导航网站核心功能
完成 Next.js 14+ 全栈应用的 MVP 实现,包含以下功能:
## 项目设置
- 初始化 Next.js 14+ 项目,配置 TypeScript 严格模式
- 配置 Tailwind CSS、ESLint、Prettier 代码质量工具
- 集成 shadcn/ui 组件库和 next-intl 国际化方案
## 数据层
- 配置 PostgreSQL + Prisma ORM
- 定义 Project、Tag、ExternalLink 数据模型
- 实现种子数据脚本(5个AI项目)
## 用户故事 1:浏览和搜索 AI 项目
- 实现首页,展示热门标签云和精选项目
- 实现项目列表页,支持搜索和标签筛选
- 创建 TagCloud、ProjectCard、ProjectList、SearchBar 组件
- 实现 ISR 缓存策略优化性能
## 用户故事 2:查看项目详细信息
- 实现项目详情页,显示完整信息
- 创建 ExternalLinkCard 组件展示外部链接
- 实现安全的 target="_blank" 外链跳转
## 用户故事 4:数据更新和管理
- 实现 webhook API 端点接收 n8n 数据推送
- 实现 API Key 身份验证
- 支持部分成功模式的批量数据处理
- 完善的错误处理和日志记录
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-25 15:12:09 +08:00 |
|