Commit Graph

34 Commits

Author SHA1 Message Date
TradeMate Dev 6850ceff56 fix(seo): 详情页服务端渲染写入静态HTML并修复skills预渲染报错
- courses/skills/contents/practices 详情页改为服务端取数 + initialData 渲染,正文进入静态 HTML(解决百度弱 JS 收录盲点)
- contents 的 markdown 由 useEffect+setState 改为 useMemo 同步输出
- 四个 generateStaticParams 改用 API 真实 id;getX 校验 data.id 防后端 200+error 体被当有效数据导致 undefined.map 报错
- 更新进度文档至 v1.3.0
2026-07-11 17:46:31 +08:00
TradeMate Dev 09bf329544 feat(seo): 结构化数据/每页元数据/列表页metadata/hreflang修正/OG分享图
- 详情页注入 Article+BreadcrumbList JSON-LD,工具页 SoftwareApplication
- 课程/技能/文章/练习 动态 generateMetadata(canonical/OG)
- 新增 skills/contents/practices/prompts/models 列表页 metadata
- 修正 hreflang(删除不存在的/en),用 next/og 生成 OG 分享图
2026-07-11 17:23:56 +08:00
TradeMate Dev 8f13604e0e chore: 全站改为免费+联盟模式,原支付保留备用
- 课程详情页下架付费购买与扫码支付弹窗
- 首页/能力导览文案 购买→免费使用
- 付费面(会员/技能广场/用量包/课程)均已免费化,原 orders/payment 模块保留后端备用
2026-07-11 17:08:32 +08:00
TradeMate Dev 00a3904eba feat: 落地打赏(个人码捐赠)模式并将付费面改为免费+赞助(无ICP证合规)
- 新增 Donation 模型/迁移/后端 API(GET,POST /donations)
- 新增前端 /donate 页:收款码+感谢留言+感谢墙
- 会员页/技能广场/用量包 下架付费,改免费开放+赞助入口
- 沙箱用量耗尽引导至 /donate 赞助
- 导航与页脚新增 赞助/联盟返佣 入口,补充 i18n
2026-07-11 15:02:08 +08:00
TradeMate Dev 31cc1e02ce feat: 联盟返佣系统规范化并打通技能广场(无 ICP 证合规变现主路径)
- 新增 AffiliateProgram / AffiliateLink / AffiliateClick 规范化 Prisma 模型
  取代原手写裸表 affiliate_stats / affiliate_clicks
- 新增迁移 prisma/migrations/20260711000000_add_affiliate_models
- 重构 affiliate.service.ts 改用 Prisma ORM,消除 $queryRawUnsafe SQL 注入
- 重构 affiliate.controller.ts 接口:programs / links(?skillId,?toolId) / stats / click
- 前端 affiliate 页接入真实接口,移除硬编码 demo 数据
- 技能详情页新增「学此技能推荐使用的工具」联盟链接区块
- 新增 affiliate.service.spec.ts(4 用例通过)与幂等种子 seed-affiliate.ts
- 更新 docs/progress/current.md,明确无 ICP 经营许可证下以联盟返佣为合规变现主路径
- 含此前工作区未提交改动(工具 slug 路由、支付/订单、SEO 等)

Co-Authored-By: opencode <opencode@anthropic.com>
2026-07-11 14:47:41 +08:00
TradeMate Dev 15ff424f11 feat: Admin 工具管理页新增返佣链接字段
- new/page.tsx: 表单添加 affiliateLink 输入字段 + 提示文案
- [id]/client.tsx: 从只读展示重写为可编辑表单,调用 PUT /admin/tools/:id 保存
                   添加 affiliateLink 字段,修复原页面不保存的 Bug

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-23 21:23:49 +08:00
TradeMate Dev 7c92729c3f feat: 前端沙盒模型列表仅显示国内已备案模型
- models.ts 移除 GPT/Claude/Gemini/Llama,仅保留 domestic 模型
- DEFAULT_MODEL 改为 deepseek-v4-flash(原为 general)
- ModelSelector 改为从 /sandbox/models 获取可用模型列表

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-23 21:23:25 +08:00
yuzhiran-dev 0f215d2aad P8 平台轻量化改造 + SSG修复 + 编程导师 + 文档完善
- Prisma: Tool 模型加 affiliateLink;免费用户沙盒 10→5 次/日
- 后端: Tools API + /admin/tools CRUD 5 端点;Practices 完整模块
- 导航: 主菜单隐藏企业版/社区(URL 可访问)
- 首页: 重定位为 AI 工具指南;新增精选工具区块;Feature 重写
- 工具页: affiliateLink 绿色推荐 Badge
- SSG 修复: config.ts 构建时直连 localhost:4000,页面 108→127
- 沙盒: 新增编程导师场景(苏格拉底教学法)
- 练习系统: Practices 多场景练习(含结构化评分)
- 技能广场: 6 个付费 Skill(标题大师/回款助手等)
- 管理后台: Models/Posts/Practices CRUD 页面
- 文档: README + progress.md 全面更新;AGENTS.md 同步定位
- 清理: .env.example 移除;tsbuildinfo gitignore
2026-06-18 18:14:07 +08:00
yuzhiran-dev fb8152401b 支付功能对齐网关文档 + 完善管理操作
- GatewayPayService: 新增 remark 字段(传uid/oid), 移除废弃 return_url, 新增 closeOrder/syncOrderStatus
- PaymentController: 新增 POST /payment/gateway/sync/:orderNo 和 /close/:id 端点
- Admin 订单页: 待支付订单增加「同步状态」按钮
- OrdersService: 下单时传入 remark 使 webhook 可匹配
- 清理 PaymentService 未使用依赖
- docs/progress.md 更新支付架构
2026-06-05 13:19:44 +08:00
yuzhiran-dev 538de50bb1 注册支持用户名/手机号/邮箱 + 镜像站部署脚本 + AI 助手 Tool Calling 重构
- Prisma User 模型新增 username 字段(唯一索引)
- 注册先查重复再创建,返回友好中文提示(非 500)
- 登录支持用户名/手机号/邮箱三种方式
- 前端注册表单增加用户名输入框,预校验 2-20 位格式
- 新增 scripts/deploy.sh:一键构建并部署主站+镜像站+重启后端+重载 Nginx
- 镜像站 www.yuzhiran.com.cn Nginx 配置与主站同步
- AI 助手架构升级:用户端/管理后台均采用完整 Tool Calling 架构
- 新增 UserAiAssistantService(18 工具)+ AiAssistantController
- admin 助手新增 search + mark-all-notifications-read 工具
- 修复注册 500 错误:catch Prisma P2002 → BadRequestException
- Baidu Analytics Script 注入 root layout
2026-06-01 23:14:42 +08:00
yuzhiran-dev 6f3fe50ee0 docs & cleanup: update stack info, remove dead code, fix backend bugs
- Fix AGENTS.md and 技术架构设计.md to reflect actual stack (Prisma+MySQL, static export, PM2)
- Remove 4 unused frontend components (page-transition, page-layout, image-upload, section-card)
- Fix card.tsx hardcoded colors → CSS variables
- Remove provider name from model selector, remove sensenova-u1-fast from models
- Fix analytics.controller.ts raw SQL table names (runtime bug)
- Add JWT auth guard to tools POST endpoint
- Fix AI gateway test: update env vars and model names
- Fix admin test: mock role structure for Prisma relation
2026-05-29 10:26:50 +08:00
yuzhiran-dev 417fb266d4 feat: AI沙箱流式对话+引导学习+静态服务优化
- 后端: AI沙箱流式对话(SSE), reasoning_content 回退支持
- 前端: 沙箱页流式渲染, 引导学习面板, 默认场景/Starter兜底
- 优化: 前端改用静态文件服务器(node server.js)替代next dev, CSS永不丢失
- 修复: 通用模型默认改为可用模型, predev不再删.next缓存
2026-05-27 18:26:30 +08:00
yuzhiran-dev 0b66d752ce feat: 系统配置页动态渲染 + AI 配置完善
- 配置页重写:从 API 动态加载配置项,不再依赖硬编码字段列表
- AI 配置扩展:新增 provider API Key/URL、配额、Token 等 11 项配置
- 站点配置扩展:联系电话、公司名称
- 支持新增自定义配置项(+ 新增配置按钮)
- 配置项显示已有 DB 数据 + 预定义字段的合并列表
2026-05-25 13:54:20 +08:00
yuzhiran-dev 25ebcdc622 fix: 沙盒页英文换行 + Logo 多语言
- 沙盒页标题/副标题添加 truncate 防止英文换行
- Logo 使用 t.brand.name/suffix 实现中英切换(宇之然/Yuzhiran)
- 新增 brand 翻译键(zh: 宇之然, en: Yuzhiran)
2026-05-25 11:07:40 +08:00
yuzhiran-dev e64a874499 fix: 导航 i18n 补全 + 模型/提示词页 useT()
- Header 导航 skills/models/articles 改为 t.nav.*(英文正常显示)
- 模型百科页全部文字使用 useT()(表格标题、标签等)
- 提示词库页标题使用 useT()
- models 翻译键补全 contextWindow/maxOutput
2026-05-25 09:22:25 +08:00
yuzhiran-dev 03b500b778 feat: 剩余页面 useT() + 页脚 SystemConfig 动态渲染
- 学习分析/学习路径/设置/收藏/提示词工坊 页面 useT()
- 页脚联系邮箱/ICP备案号从 GET /public/config 动态获取
- 翻译键补齐: discover.viewCount/likeCount/postStats
2026-05-22 18:09:15 +08:00
yuzhiran-dev 477226ac15 feat: 剩余页面 useT() 改造 + 首页课程动态加载
- 搜索/发现/工具/My 页面全部使用 useT(),支持中英切换
- 搜索页 Badge variant 修正
- 首页热门专题改为从 API 动态获取(无数据时用静态兜底)
- 新增 discover 翻译键 viewCount/likeCount/postStats
- 首页/仪表盘/社区 等 JSX 优化
2026-05-22 17:08:17 +08:00
yuzhiran-dev 1b4c19daa6 feat: i18n 翻译覆盖 + DB 动态数据 + 模型选择器 API 2026-05-22 16:55:18 +08:00
yuzhiran-dev 23edb74bce feat: 支付闭环 + 运营助手 Tool Calling + 管理后台完善
- 支付系统:微信支付 mock 自动完成、NATIVE 扫码支付、JSAPI 集成
- 运营助手:Tool Calling 架构,19 个可执行工具,AI 驱动操作
- 角色管理:表格布局 + Dialog 表单 + 权限勾选
- 配置统一:config.ts 单一数据源
- API 审计:补齐 status toggle / comments 端点
- 暗黑模式硬件编码颜色全部替换为 CSS 变量
2026-05-20 18:29:00 +08:00
yuzhiran-dev 728edc59ef feat: admin back-office system + AI assistant with action commands
- Admin analytics (recharts charts, overview stats, trend analysis, time range selector)
- Admin permissions (AdminRole/AdminUser models, role CRUD, permission catalog)
- Admin system config (site/AI/member category tabs, per-key save)
- Admin operations (Banner CRUD, push notification send/delete)
- Admin user management (table, search, create/edit, ban/delete)
- Admin layout (custom top bar with branding + sidebar, admin AI assistant)
- Admin login (adminToken localStorage, adminInfo display)
- Admin AI assistant (purple '运营助手', context-aware prompts, action commands)
- Public AI assistant Phase B (action commands: navigate, setModel, startChat, openSkill, setParameter)
- Assistant context mapping + action executor
- Skills API fix: tags parsing fallback (JSON.parse → split)
- Sandbox crash fix: curScene fallback system prompt
- JWT token expiration: access 2h→7d, refresh 7d→30d, admin 8h→7d
- i18n: assistant-related translations (zh/en)
- PM2 ecosystem config for process management
- AI assistant login prompt fix: admin uses getAdminToken(), public uses apiFetch with token refresh
2026-05-20 10:38:58 +08:00
yuzhiran-dev dd9240e5cf fix: 未登录沙盒改为注册提示替代 mock 回复 2026-05-18 17:19:09 +08:00
yuzhiran-dev 150ae3dcfd feat: 技能库改为数据库存储 (Prisma Skill 模型 + seed)
- Prisma 新增 Skill 模型 (id/name/description/icon/category/difficulty/systemPrompt/starters/tasks/tags/prerequisiteIds)
- SkillsService 从 DB 读取替代硬编码常量
- seed.ts 新增 seedSkills() 写入 8 个技能
- SkillsController 保持不变,API 返回 JSON 解析后的 starters/tasks
2026-05-18 16:23:52 +08:00
yuzhiran-dev 79d7535c1c feat: P4 多模态 — 图片上传 + 沙盒 vision 支持
后端:
- ChatMessage 接口支持 text | image_url 多部分内容
- sandbox chat 接受 images[] 参数
- 自动将图片转为 image_url 格式发送到 AI
- 上传模块支持 jpg/png/gif/webp/svg

前端:
- 沙盒输入区 + 图片上传按钮
- 图片缩略图预览 + 删除
- 上传后随消息发送到 API
- uploads/ 目录持久化存储
2026-05-18 14:15:56 +08:00
yuzhiran-dev ed003d0ef0 feat: P3b 会话重命名 (PATCH + 双击编辑) 2026-05-18 12:08:32 +08:00
yuzhiran-dev 4de042abcd feat: P3a 代码语法高亮 (highlight.js + CodeBlock组件) 2026-05-18 12:06:30 +08:00
yuzhiran-dev 1a8b3fbaab fix: PC 端全站移动端响应式修复
Critical:
- header.tsx: 手机菜单按钮 flex-row→flex-col, 修复 w-full 溢出
- compare/page.tsx: 参数面板 grid-cols-3→grid-cols-1 sm:grid-cols-3

High:
- sandbox/page.tsx: header 区 flex-wrap + 模型选择器 w-48→w-40 sm:w-48
- member/page.tsx: 功能对比行 grid 布局替代 flex, 防溢出
- workshop/page.tsx: 编辑区 flex-col sm:flex-row + 按钮组 flex-wrap

Medium:
- analytics/page.tsx: domain name truncate
- skills/[id]: CTA 按钮 w-full sm:w-auto
2026-05-18 11:47:50 +08:00
yuzhiran-dev fb092cb5d9 feat: P1 学习技能包 — 可组合技能模块系统
后端:
- SkillsModule (service + controller),8 个预置技能
- GET /skills (支持 category/difficulty/search 过滤)
- GET /skills/:id /categories /difficulties

前端:
- /skills 技能市场 — 分类/难度/搜索过滤
- /skills/[id] 技能详情 — system prompt、练习任务、starter
- header 导航新增「技能」入口
- sandbox page 改为从 API 加载技能(替代硬编码 SCENES)
- 支持 ?skill=xxx 直接加载指定技能
- useSearchParams Suspense 包装

全栈: 70 pages / 92 tests 全部通过
2026-05-18 11:15:00 +08:00
yuzhiran-dev cba785e6bd feat: P0f 会话分享链接 + 全栈验证
- 后端: POST /sessions/:id/share 生成 HMAC 签名分享令牌
- 后端: GET /sandbox/shared/:token 公开查看分享会话
- 前端: sandbox/page.tsx 新增「复制分享链接」按钮
- 前端: /sandbox/share?token=xxx 分享查看页面
- 全栈: 后端 build + 前端 61 页 + 92 tests 全部通过
2026-05-18 10:43:25 +08:00
yuzhiran-dev f2a6bb93f9 feat: P0e 模型选择器升级 — 卡片式下拉
- ModelSelector 组件:标签/提供商/描述/选中状态
- 替换 sandbox page + workshop page 原生 select
- 模型数据增加 provider/desc 字段
2026-05-18 10:39:32 +08:00
yuzhiran-dev 0fdad71c57 feat: P0d 会员定价页重构 — 用量可视化 + 方案对比
- 三栏定价卡片(免费/月卡/年卡),参考 opencode Go 页面风格
- 日配额用量进度条
- 功能对比表(沙盒/模型/提示词/课程/广告)
- 当前方案标记 + 最受欢迎标记
- useT 全量翻译
- 补充中/英 30+ 定价相关翻译 key
2026-05-18 10:37:58 +08:00
yuzhiran-dev a4c7d71931 feat: P0c 沙盒页面 useT 翻译迁移
- sandbox/page.tsx 全量迁移:所有用户可见文本使用 useT()
- 场景命名翻译:sceneName() 函数映射翻译 key
- formatTime 使用 i18n 时间文本(刚刚/分钟前/小时前)
- 高级参数面板抽象为 map 渲染(消除重复 markup)
- 补充中/英 justNow/minutesAgo/hoursAgo 翻译
2026-05-18 10:36:22 +08:00
yuzhiran-dev 41374f2642 feat: P0b Design Token + 共享组件库
- docs/design-tokens.md — 完整 Token 规范(色彩/间距/圆角/排版/组件模式)
- 新增 PageLayout 组件(封装 26+ 页面的重复容器模式)
- 新增 Card / StatCard 组件
- 补充 Mobile (Vue) 迁移清单和 CSS 变量映射
2026-05-18 10:18:32 +08:00
yuzhiran-dev 9efa2d0425 feat: P0a i18n 基础设施 + UI 语言切换
- 创建 i18n 模块 (provider + useT hook + useLang hook)
- 中/英翻译文件 (zh.ts / en.ts),覆盖沙盒/学习/会员/对比等核心页面
- LanguageProvider 包装 layout,支持 localStorage 持久化
- Header 添加语言切换按钮 (中<>EN)
- AGENTS.md 新增国际化约定
- opencode 源码克隆到 /tmp/opencode-source/ 供参考
2026-05-18 10:12:37 +08:00
yuzhiran-dev 11bb86854c feat: Phase 1-3 全部完成 — 沙盒增强、学情分析、学习路径 2026-05-18 09:48:51 +08:00