瀏覽代碼

chore: add askyi-h5 submodule and update workspace configuration

- Added new submodule reference for askyi-h5 in .gitmodules.
- Updated workspace.json to include last opened files related to askyi-h5.
- Translated titles and labels in workspace.json from Chinese to English for consistency.
yb 3 周之前
父節點
當前提交
3721524b0f
共有 7 個文件被更改,包括 62 次插入291 次删除
  1. 3 0
      .gitmodules
  2. 58 58
      .obsidian/workspace.json
  3. 1 0
      askyi/askyi-h5
  4. 0 79
      askyi/askyi-h5/CLAUDE.md
  5. 0 73
      askyi/askyi-h5/_project.md
  6. 0 52
      askyi/askyi-h5/architecture.canvas
  7. 0 29
      askyi/askyi-h5/pages.canvas

+ 3 - 0
.gitmodules

@@ -22,3 +22,6 @@ url = https://sg-git.pwtk.cc/tg/tg-live-game-web.git
 [submodule "pwtk/tk-admin-service-master"]
 	path = pwtk/tk-admin-service-master
 	url = https://zr-svn8300.cccqx.com/pwtk/tk-admin-service-master.git
+[submodule "askyi/askyi-h5"]
+	path = askyi/askyi-h5
+	url = https://github.com/askyi-life/askyi-h5.git

+ 58 - 58
.obsidian/workspace.json

@@ -47,7 +47,7 @@
                 "autoReveal": false
               },
               "icon": "lucide-folder-closed",
-              "title": "文件列表"
+              "title": "Files"
             }
           },
           {
@@ -177,72 +177,72 @@
   },
   "left-ribbon": {
     "hiddenItems": {
-      "switcher:打开快速切换": false,
-      "graph:查看关系图谱": false,
-      "canvas:新建白板": false,
-      "daily-notes:打开/创建今天的日记": false,
-      "templates:插入模板": false,
-      "command-palette:打开命令面板": false,
-      "bases:创建新数据库": false
+      "switcher:Open quick switcher": false,
+      "graph:Open graph view": false,
+      "canvas:Create new canvas": false,
+      "daily-notes:Open today's daily note": false,
+      "templates:Insert template": false,
+      "command-palette:Open command palette": false,
+      "bases:Create new base": false
     }
   },
   "active": "cf8a89fa88ac988b",
   "lastOpenFiles": [
-    "tg-live-game/tg-live-game-web/node_modules/@element-plus",
-    "tg-live-game/tg-live-game-web/node_modules/@vue",
-    "tg-live-game/tg-live-game-web/node_modules/@vitejs",
-    "tg-live-game/tg-live-game-web/node_modules/@types",
-    "tg-live-game/tg-live-game-web/node_modules",
-    "tg-live-game/tg-live-game-web/CLAUDE.md.tmp.84570.1767690042218",
-    "tg-live-game/tg-live-game-web/src/router/index.ts.tmp.84570.1767690035600",
-    "tg-live-game/tg-live-game-web/src/views/audit/index.vue",
-    "tg-live-game/tg-live-game-web/src/views/audit",
-    "tg-live-game/tg-live-game-web/src/api/audit.ts",
+    "askyi/askyi-h5/pages.canvas",
+    "askyi/askyi-h5/CLAUDE.md",
+    "askyi/askyi-h5/architecture.canvas",
+    "askyi/askyi-h5/_project.md",
+    "askyi/askyi-h5/tsconfig.tsbuildinfo",
+    "askyi/askyi-h5/tsconfig.json",
+    "askyi/askyi-h5/tailwind.config.js",
+    "askyi/askyi-h5/start.js",
+    "askyi/askyi-h5/src/app/draft/article/[id]/page.tsx",
+    "askyi/askyi-h5/src/app/article/draft/[documentId]/page.tsx",
+    "askyi/askyi-h5/src/app/article/draft/[documentId]/article.module.css",
+    "askyi/askyi-h5/src/app/test-article/[id]/page.tsx",
+    "askyi/askyi-h5/src/app/profile/[id]/profile.module.css",
+    "askyi/askyi-h5/src/app/profile/[id]/profile.css",
+    "askyi/askyi-h5/src/types/module/readme.md",
+    "askyi/askyi-h5/public/assets/images/icons/bagua.svg",
+    "askyi/askyi-h5/public/assets/images/master5.svg",
+    "askyi/askyi-h5/public/assets/images/master4.svg",
+    "askyi/askyi-h5/public/assets/images/master3.svg",
+    "askyi/askyi-h5/public/assets/images/master2.svg",
+    "askyi/askyi-h5/public/assets/images/master1.svg",
+    "askyi/askyi-h5/public/assets/images/logo.svg",
+    "askyi/askyi-h5/public/assets/images/event1.svg",
+    "askyi/askyi-h5/public/assets/images/default-avatar.svg",
+    "askyi/askyi-h5/public/assets/bagua.svg",
+    "askyi/askyi-h5/markdown/1.md",
+    "askyi/askyi-h5/docs/api/API_STANDARDS.md",
+    "askyi/askyi-h5/docs/rendering-analysis.md",
+    "askyi/askyi-h5/docs/redis-reaction-integration-nextjs.md",
+    "askyi/askyi-h5/docs/redis-reaction-api-update.md",
+    "askyi/askyi-h5/docs/reaction-unauthenticated-user-strategy.md",
+    "askyi/askyi-h5/docs/reaction-article-id-format.md",
+    "askyi/askyi-h5/docs/reaction-api-unauthenticated-user-handling.md",
+    "askyi/askyi-h5/docs/reaction-api-redis-migration-status.md",
+    "askyi/askyi-h5/docs/react-hooks-principles.md",
+    "askyi/askyi-h5/docs/public-folder-cleanup-strategy.md",
+    "askyi/askyi-h5/docs/public-directory-analysis.md",
+    "askyi/askyi-h5/docs/nextjs-capacitor-conflict.md",
+    "askyi/askyi-h5/docs/frontend-reaction-stats-integration.md",
+    "askyi/askyi-h5/docs/following-tab-integration.md",
+    "askyi/askyi-h5/docs/following-page-implementation.md",
+    "askyi/askyi-h5/docs/following-csr-verification.md",
+    "askyi/askyi-h5/docs/following-api-backend-review-response.md",
+    "askyi/askyi-h5/docs/following-api-alignment.md",
+    "askyi/askyi-h5/docs/experts-follow-integration.md",
+    "askyi/askyi-h5/docs/duplicate-data-analysis.md",
+    "askyi/askyi-h5/docs/csr-nextjs-analysis-report.md",
+    "askyi/askyi-h5_bak/pages.canvas",
+    "askyi/askyi-h5_bak/architecture.canvas",
     "tg-live-game/rtsp-cloudflare-stream.canvas",
-    "tg-live-game/tg-live-game-web/src/views/stats/index.vue",
     "tg-live-game/architecture.canvas",
     "pwtk/architecture.canvas",
     "yshop/database.canvas",
-    "pwtk/discuss-2025-01-02.md",
-    "pwtk/tk-admin-service-master/CLAUDE.md",
-    "pwtk/pwtk-super-admin-web/README.md",
-    "pwtk/pwtk-super-admin-web/CLAUDE.md",
-    "pwtk/CLAUDE.md",
     "tg-live-game/tg-live-game-web/architecture.canvas",
-    "i18n/zh/prompts/04-命令提示词/gen/context.md",
-    "i18n/zh/prompts/04-命令提示词/task/list.md",
-    "i18n/zh/prompts/04-命令提示词/project/create.md",
-    "i18n/zh/prompts/04-命令提示词/check/spec.md",
-    "i18n/zh/prompts/04-命令提示词/README.md",
-    "pwtk/pwtk-admin-web/CLAUDE.md",
-    "pwtk/pwtk-admin-web/README.md",
-    "tg-live-game/tg-live-game-web/README.md",
-    "tg-live-game/tg-live-game-web/CLAUDE.md",
-    "tg-live-game/_project.md",
-    "tg-live-game/CLAUDE.md",
-    "pwtk/pwtk-admin-web/docs/jenkins/README_PIPELINE_COMPARISON.md",
-    "pwtk/pwtk-admin-web/docs/jenkins/README_ZENTAO.md",
-    "pwtk/pwtk-admin-web/docs/jenkins/README.md",
-    "pwtk/pwtk-admin-web/docs/jenkins/IMPLEMENTATION_SUMMARY.md",
-    "pwtk/pwtk-admin-web/docs/ENVIRONMENT_ARCHITECTURE.md",
-    "pwtk/pwtk-admin-web/bug/bug-summary.md",
-    "pwtk/pwtk-admin-web/src/views/WebVision/docs/WebVision_Architecture.md",
-    "pwtk/pwtk-admin-web/src/views/WebVision/docs/BlankArea-Component-Development-Guide.md",
-    "pwtk/pwtk-admin-web/src/views/VideoList/components/README.md",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/svg/desktop.svg",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/svg/apple-fill.svg",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/svg/android.svg",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/country/xg.png",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/images/top.png",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/country/xjp-96.png",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/country/tw-96.png",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/country/kl8.png",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/country/am.png",
-    "pwtk/pwtk-admin-web/src/views/WebVision/components/componentsbiz/assets/gfkj.gif",
     "pwtk/architecture-v1.canvas",
-    "pwtk/pwtk-admin-web/architecture-v1.canvas",
-    "pwtk/pwtk-admin-web_bak/architecture-v1.canvas",
-    "tg-live-game/tg-live-game-hono/d1-database.canvas",
-    "tg-live-game/tg-live-game-hono/auth-system.canvas"
+    "pwtk/pwtk-admin-web/architecture-v1.canvas"
   ]
 }

+ 1 - 0
askyi/askyi-h5

@@ -0,0 +1 @@
+Subproject commit 2860335a4a7ba10a7baef9762b3637ee6dfc30ad

+ 0 - 79
askyi/askyi-h5/CLAUDE.md

@@ -1,79 +0,0 @@
-# AskYi H5 前端 - Claude Code 配置
-
-> 2级子项目配置 | 继承自 askyi (1级)
-
-## 项目信息
-
-| 属性 | 值 |
-|------|-----|
-| 项目名称 | askyi-h5 |
-| 所属项目 | askyi |
-| 项目类型 | frontend (移动端主应用) |
-| 框架 | Next.js 15 |
-| 原生支持 | Capacitor 6 |
-
-## 技术栈
-
-| 类别 | 技术 | 版本 |
-|------|------|------|
-| 框架 | Next.js | 15.5 |
-| UI 库 | React | 18.2 |
-| 语言 | TypeScript | 5 |
-| 样式 | Tailwind CSS | 3.4 |
-| 原生 | Capacitor | 6.1 |
-| HTTP | Axios | 1.11 |
-| 国际化 | next-intl | 4.4 |
-| 视频 | hls.js | 1.6 |
-
-## 项目结构
-
-```
-src/
-├── api/          # 接口层 (18模块)
-├── app/          # 页面 (48目录)
-├── components/   # 组件 (43个)
-├── contexts/     # 上下文
-├── hooks/        # 钩子
-├── i18n/         # 国际化
-├── lib/          # 工具库
-└── types/        # 类型
-```
-
-## 功能模块
-
-| 模块 | 功能 |
-|------|------|
-| 首页/发现 | 内容推荐、分类浏览 |
-| 文章 | 文章列表、详情 |
-| 视频 | 视频流、播放 |
-| 专家 | 专家列表、咨询 |
-| 课程 | 课程列表、播放 |
-| 占卜 | 金钱卦、摇卦、求签 |
-| 用户中心 | 个人资料、设置 |
-| 认证 | 登录、注册 |
-
-## 开发命令
-
-```bash
-pnpm install          # 安装依赖
-pnpm run dev          # 本地开发 (localhost:3000)
-pnpm run dev:turbo    # Turbo 模式开发
-pnpm run build        # 构建
-pnpm run build:ios    # 构建 + 同步 iOS
-pnpm run build:android # 构建 + 同步 Android
-```
-
-## 部署信息
-
-| 环境 | 地址 |
-|------|------|
-| 开发 | localhost:3000 |
-| 生产 | Railway / askyi.life |
-
-## 核心文档
-
-| 文档 | 位置 | 内容 |
-|------|------|------|
-| 前端架构 | `architecture.canvas` | 组件/页面架构 |
-| 页面结构 | `pages.canvas` | 页面关系图 |
-| 系统架构 | `../architecture.canvas` | 整体架构图 |

+ 0 - 73
askyi/askyi-h5/_project.md

@@ -1,73 +0,0 @@
----
-project: askyi-h5
-parent: askyi
-type: frontend
-kanban_id: 1da5d0cd-8001-4c43-9636-65d07f1c276d
-tech_stack:
-  - Next.js 15
-  - React 18
-  - Tailwind CSS
-  - Capacitor 6
-  - TypeScript
-code_path: /Users/jamesw/dev_workspace/askyi/organization/askyi-h5
----
-
-# askyi-h5
-
-> 问易社区移动端主应用,基于 Next.js 15,支持 Capacitor 打包
-
-## 技术栈
-
-| 技术 | 版本 | 用途 |
-|------|------|------|
-| Next.js | 15 | React 框架 |
-| React | 18 | UI 库 |
-| Tailwind CSS | 3.4 | 样式 |
-| Capacitor | 6 | 原生打包 |
-| next-intl | 4.4 | 国际化 |
-| hls.js | - | 视频播放 |
-| Firebase | - | 推送/分析 |
-
-## 开发命令
-
-```bash
-cd /Users/jamesw/dev_workspace/askyi/organization/askyi-h5
-
-# 日常开发
-pnpm install          # 安装依赖
-pnpm run dev          # 本地开发 (localhost:3000)
-pnpm run dev:turbo    # Turbopack 模式
-pnpm run build        # 构建
-
-# 原生打包
-pnpm run build:ios    # 构建 + 同步 iOS
-pnpm run build:android # 构建 + 同步 Android
-pnpm run cap:sync     # 同步到原生项目
-pnpm run cap:open     # 打开原生 IDE
-```
-
-## 目录结构
-
-```
-askyi-h5/
-├── src/              # 源代码
-├── public/           # 静态资源
-├── messages/         # 国际化文件
-├── ios/              # iOS 原生代码 (Capacitor)
-├── docs/             # 文档
-└── design/           # 设计资源
-```
-
-## 环境配置
-
-| 文件 | 用途 |
-|------|------|
-| .env | 默认配置 |
-| .env.local | 本地开发 |
-| .env.staging | 预发布环境 |
-
-## 部署
-
-- **平台**: Railway
-- **域名**: askyi.life
-- **配置**: railway.json

+ 0 - 52
askyi/askyi-h5/architecture.canvas

@@ -1,52 +0,0 @@
-{
-	"nodes":[
-		{"id":"pages_course","type":"text","text":"## 课程模块\n\n**course/** 课程主页\n- page.tsx\n\n**courses/** 课程列表\n- page.tsx\n\n**course_detail/** 课程详情\n- page.tsx\n- CourseClient.tsx\n\n**course_player/** 课程播放\n- page.tsx\n- PlayerClient.tsx","x":-340,"y":-1080,"width":280,"height":480,"color":"1"},
-		{"id":"pages_expert","type":"text","text":"## 专家/咨询\n\n**expert/** 专家详情\n- page.tsx\n\n**experts/** 专家列表\n- page.tsx\n- ExpertsClient.tsx\n\n**consultation/** 咨询页\n- page.tsx\n- ConsultClient.tsx","x":-340,"y":-540,"width":280,"height":380,"color":"5"},
-		{"id":"pages_user","type":"text","text":"## 用户中心\n\n**profile/** 个人主页\n- page.tsx\n- ProfileClient.tsx\n- edit/ 编辑页\n\n**settings/** 设置\n- page.tsx\n- SettingsClient.tsx\n\n**inbox/** 收件箱\n- page.tsx\n- InboxClient.tsx\n\n**messages/** 消息\n- page.tsx\n- MessagesClient.tsx\n\n**payment/** 支付\n- page.tsx\n- PaymentClient.tsx\n\n**publish/** 发布\n- page.tsx\n- PublishClient.tsx","x":0,"y":-1420,"width":280,"height":760,"color":"5"},
-		{"id":"comp_ui","type":"text","text":"## 通用UI组件\n\n**CategoryNav/** 分类导航\n- index.tsx\n- SubCategoryNav.tsx\n- styles.module.css\n\n**SearchUnified/** 统一搜索\n- index.tsx\n\n**TagsList/** 标签列表\n- index.tsx\n\n**Icon.tsx** 图标\n**SvgSprite.tsx** SVG精灵\n**TopTagBadge.tsx** 顶部标签\n**RecommendedRibbon.tsx** 推荐标识\n**SnackbarProviderWrapper.tsx** 通知","x":740,"y":-600,"width":280,"height":560,"color":"4"},
-		{"id":"project_structure","type":"text","text":"## 项目结构\n\n```\nsrc/\n├── api/          # 接口层 (18模块)\n├── app/          # 页面 (48目录)\n├── components/   # 组件 (43个)\n├── contexts/     # 上下文 (1)\n├── hooks/        # 钩子 (4)\n├── i18n/         # 国际化\n├── lib/          # 工具库 (9)\n└── types/        # 类型 (17)\n```","x":-480,"y":180,"width":360,"height":360,"color":"6"},
-		{"id":"title","type":"text","text":"# askyi-h5 架构\n\n**版本**: 1.0.0\n**描述**: 问易社区移动端Next.js应用\n**状态**: 生产环境\n\n技术栈:Next.js 15 + React 18 + TypeScript\nUI框架:Tailwind CSS\n原生支持:Capacitor 6\n\n**源文件**: 178个\n**组件**: 43个\n**API模块**: 18个","x":-2380,"y":-1590,"width":400,"height":340,"color":"1"},
-		{"id":"pages_auth","type":"text","text":"## 认证模块\n\n**login/** 登录页\n- page.tsx\n- LoginClient.tsx\n\n**register/** 注册页\n- page.tsx\n\n**forgot-password/** 忘记密码\n- page.tsx\n\n**onboarding/** 引导页\n- page.tsx","x":-1580,"y":0,"width":280,"height":420,"color":"3"},
-		{"id":"i18n","type":"text","text":"## 国际化 (i18n)\n\n**语言支持**\n- 🇨🇳 zh 中文\n- 🇺🇸 en 英文\n\n**实现**\n- next-intl 4.4\n- messages/ 翻译文件\n- 动态切换支持","x":-1580,"y":640,"width":280,"height":320,"color":"5"},
-		{"id":"types_component","type":"text","text":"## 类型定义 (component/)\n\n- video.ts 视频组件\n- profile.ts 个人资料\n- rating.ts 评分\n- serviceList.ts 服务列表\n\n**通用类型**\n- strapi.ts Strapi响应\n- auth.ts 认证类型","x":-2100,"y":420,"width":280,"height":320,"color":"4"},
-		{"id":"pages_video","type":"text","text":"## 视频模块\n\n**video_feed/** 视频流\n- page.tsx\n- VideoFeedClient.tsx\n\n**video_player/** 视频播放\n- page.tsx\n- PlayerClient.tsx\n\n**live_stream/** 直播\n- page.tsx\n- LiveClient.tsx","x":0,"y":-1920,"width":280,"height":400,"color":"1"},
-		{"id":"pages_content","type":"text","text":"## 内容详情\n\n**article/** 文章详情\n- page.tsx\n- ArticleClient.tsx\n\n**article-direct/** 直接访问\n- page.tsx\n\n**articles/[...slug]/** 动态路由\n- page.tsx\n\n**fengshui_detail/** 风水详情\n- page.tsx\n\n**qa_details/** 问答详情\n- page.tsx","x":-1760,"y":-1685,"width":280,"height":530,"color":"3"},
-		{"id":"backend","type":"text","text":"## 后端 API\n\n**askyi-cms-railway**\nStrapi 5 + PostgreSQL + Redis\n\n**API 地址**\n- 开发: localhost:1337\n- 生产: Railway\n\n**主要端点**\n- /api/articles\n- /api/videos\n- /api/experts\n- /api/users\n- /api/auth\n- /api/reactions\n- /api/follow-*","x":2220,"y":1120,"width":280,"height":480,"color":"6"},
-		{"id":"env_config","type":"text","text":"## 环境配置\n\n**环境文件**\n- .env 默认配置\n- .env.local 本地开发\n- .env.staging 预发布\n- .env.example 配置模板\n\n**关键变量**\n- NEXT_PUBLIC_CMS_API_BASE\n- NEXT_PUBLIC_SITE_URL\n\n**构建命令**\n- dev / dev:turbo\n- dev:staging\n- build / start","x":750,"y":1100,"width":380,"height":520,"color":"2"},
-		{"id":"tech_stack","type":"text","text":"## 技术栈\n\n- **前端框架**: Next.js 15.5\n- **UI库**: React 18.2\n- **语言**: TypeScript 5\n- **样式**: Tailwind CSS 3.4\n- **原生**: Capacitor 6.1\n- **HTTP**: Axios 1.11\n- **国际化**: next-intl 4.4\n- **视频**: hls.js 1.6\n- **Markdown**: react-markdown + MDX\n- **AI**: @google/generative-ai\n- **推送**: Firebase 10.13","x":750,"y":630,"width":380,"height":400,"color":"4"},
-		{"id":"deploy","type":"text","text":"## 部署配置\n\n**Railway**\n- railway.json 配置\n- .railwayignore 忽略\n\n**Jenkins CI/CD**\n- Jenkinsfile 流水线\n- jenkins/ 配置目录\n\n**脚本**\n- build-complete.sh\n- deploy.sh\n\n**PM2**\n- ecosystem.config.cjs\n- start.js","x":360,"y":1560,"width":280,"height":520,"color":"1"},
-		{"id":"lib_layer","type":"text","text":"## Lib 工具库\n\n**HTTP客户端**\n- axios.ts Axios封装\n  - 请求拦截器 (Token注入)\n  - 响应拦截器 (错误处理)\n  - 401自动登出\n\n**Strapi 接口**\n- strapi.ts CMS工具\n  - 图片URL处理\n  - 数据格式化\n\n**认证工具**\n- auth-utils.ts\n  - Token读取\n  - 登录状态\n\n**国际化**\n- i18n-utils.ts\n- locale.ts\n\n**业务工具**\n- platform.ts 平台检测\n- reaction-utils.ts 反应工具\n- recommend-sort.ts 推荐排序\n- slugify.ts URL处理","x":1680,"y":975,"width":300,"height":770,"color":"2"},
-		{"id":"comp_content","type":"text","text":"## 内容组件\n\n**ArticleCard/** 文章卡片\n- index.tsx\n\n**ArticleItem/** 文章项\n- index.tsx\n\n**DiscoverTab.tsx** 发现Tab\n**DiscoveryContent.tsx** 发现内容\n**FollowingTab/** 关注Tab\n**CasesTab/** 案例Tab\n\n**DualColumnWaterfall.tsx** 双列瀑布流\n**InfiniteScrollList.tsx** 无限滚动\n**HomePage.tsx** 首页组件\n**HomeRecommendations.tsx** 首页推荐","x":1200,"y":250,"width":280,"height":540,"color":"3"},
-		{"id":"static","type":"text","text":"## 静态资源\n\n**public/**\n- css/ 样式文件\n- images/ 图片\n- icons/ 图标\n\n**design/**\n- 设计资源\n\n**docs/**\n- 文档 (45个)\n\n**markdown/**\n- MDX内容","x":1200,"y":-270,"width":280,"height":460,"color":"3"},
-		{"id":"api_detail","type":"text","text":"## API 详细\n\n**article/**\n- index.ts API函数\n- types.ts 类型定义\n- article.http 测试\n\n**auth/**\n- index.ts 登录/注册\n- types.ts 认证类型\n\n**reaction/**\n- index.ts 点赞/收藏\n- types.ts 反应类型\n\n**following/**\n- index.ts 关注操作\n- types.ts 关注类型\n\n**recommands/**\n- index.ts 推荐算法\n- types.ts 推荐类型\n\n**video/**\n- index.ts 视频接口\n- types.ts 视频类型","x":1630,"y":-1180,"width":300,"height":740,"color":"6"},
-		{"id":"comp_interactive","type":"text","text":"## 交互组件\n\n**FollowButton/** 关注按钮\n- index.tsx\n\n**FollowAccountButton/** 关注账号\n- index.tsx\n\n**ReactionButton/** 反应按钮\n- index.tsx\n\n**ConsultButton.tsx** 咨询按钮\n\n**LanguageSwitcher/** 语言切换\n- index.tsx\n- LanguageSwitcher.module.css\n\n**Loading/** 加载组件\n- index.tsx\n- Loading.module.css\n\n**WhatsAppButton/** WhatsApp\n- index.tsx","x":1650,"y":-2040,"width":280,"height":700,"color":"5"},
-		{"id":"hooks","type":"text","text":"## Hooks 钩子函数\n\n- **useFollow** 关注专家\n- **useFollowAccount** 关注账号\n- **useInfiniteScroll** 无限滚动\n- **useReaction** 点赞/收藏","x":2200,"y":-1800,"width":280,"height":220,"color":"5"},
-		{"id":"types_module","type":"text","text":"## 类型定义 (module/)\n\n**内容类型**\n- article.ts 文章\n- answer.ts 回答\n- comment.ts 评论\n- review.ts 评价\n\n**用户类型**\n- user.ts 用户\n- expert.ts 专家\n- authIdentity.ts 认证\n\n**业务类型**\n- booking.ts 预约\n- subscription.ts 订阅\n- message.ts 消息\n\n**分类类型**\n- category.ts 分类\n- tag.ts 标签","x":2340,"y":-1120,"width":280,"height":620,"color":"4"},
-		{"id":"comp_media","type":"text","text":"## 媒体组件\n\n**ImageUploader/** 图片上传\n- index.tsx\n\n**ImageCropper/** 图片裁剪\n- index.tsx\n\n**MediaUploader/** 媒体上传\n- index.tsx\n\n**VideoUploader/** 视频上传\n- index.tsx\n\n**VideoPlayer.tsx** 视频播放器\n**SingleVideoPlayer/** 单视频播放\n**VideoDrawer/** 视频抽屉\n**VideoCloseButton/** 关闭按钮","x":740,"y":-1230,"width":280,"height":560,"color":"1"},
-		{"id":"contexts","type":"text","text":"## Contexts 上下文\n\n**VideoDrawerContext**\n- 视频抽屉状态管理\n- 打开/关闭控制\n- 当前视频信息","x":1240,"y":-1065,"width":280,"height":230,"color":"5"},
-		{"id":"comp_explore","type":"text","text":"## Explore 组件\n\n**Explore/**\n- CategoryTabs.tsx 分类标签\n- ContentCard.tsx 内容卡片\n- ContentGrid.tsx 内容网格\n- DesktopSidebar.tsx 桌面侧边栏\n- DesktopTopBar.tsx 桌面顶栏\n- ExploreHeader.tsx 探索头部\n- Settings.tsx 设置\n- Explore.module.css 样式","x":740,"y":70,"width":280,"height":360,"color":"3"},
-		{"id":"api_layer","type":"text","text":"## API 接口层\n\n| 模块 | 功能 |\n|------|------|\n| article | 文章 |\n| auth | 认证 |\n| booking | 预约 |\n| category | 分类 |\n| expert | 专家 |\n| following | 关注 |\n| menu | 菜单 |\n| otp | 验证码 |\n| preview | 预览 |\n| reaction | 点赞收藏 |\n| recommands | 推荐 |\n| tag | 标签 |\n| upload | 上传 |\n| user | 用户 |\n| usercase | 案例 |\n| utils | 工具 |\n| video | 视频 |","x":1680,"y":200,"width":300,"height":640,"color":"6"},
-		{"id":"pages_home","type":"text","text":"## 首页/发现\n\n**home/** 首页\n- page.tsx\n- HomeClient.tsx\n- SubNav/index.tsx\n\n**explore/** 发现页\n- page.tsx\n\n**hot/** 热门\n- page.tsx\n- HotClient.tsx\n\n**following/** 关注\n- page.tsx\n- FollowingClient.tsx\n\n**search/** 搜索\n- page.tsx\n\n**search_result/** 搜索结果\n- page.tsx\n- SearchClient.tsx","x":-1340,"y":-1920,"width":280,"height":700,"color":"3"},
-		{"id":"comp_layout","type":"text","text":"## 布局组件\n\n**AppLayout/** 应用布局\n- index.tsx\n- AppLayout.module.css\n\n**BackHeader/** 返回头部\n- index.tsx\n- BackHeader.module.css\n\n**BottomNavbar/** 底部导航\n- index.tsx\n- BottomNavbar.module.css\n\n**MainNavigation/** 主导航\n- index.tsx\n- MainNavigation.module.css\n\n**TopHeader/** 顶部头\n- index.tsx\n- TopHeader.module.css\n\n**TopHotHeader/** 热门头部\n- index.tsx\n- TopHotHeader.module.css","x":-800,"y":-1950,"width":280,"height":760,"color":"3"},
-		{"id":"capacitor","type":"text","text":"## Capacitor 原生\n\n**版本**: 6.1.2\n\n**平台**\n- iOS (ios/)\n- Android (待添加)\n\n**配置**\n- capacitor.config.ts\n\n**构建命令**\n- build:ios\n- build:android\n- cap:sync\n- cap:open","x":-1340,"y":-970,"width":280,"height":460,"color":"1"},
-		{"id":"pages_divination","type":"text","text":"## 占卜功能\n\n**divination/** 占卜主页\n- page.tsx\n- 多个子组件\n\n**divination_history/** 占卜历史\n- page.tsx\n\n**coins_hexagram/** 金钱卦\n- page.tsx\n\n**shake_hexagram/** 摇卦\n- page.tsx\n\n**fortune_stick/** 求签\n- page.tsx\n\n**fortune_today/** 今日运势\n- page.tsx\n- FortuneClient.tsx\n\n**name_fortune/** 姓名测算\n- page.tsx","x":-340,"y":-1910,"width":280,"height":720,"color":"1"},
-		{"id":"pages_other","type":"text","text":"## 其他页面\n\n**about/** 关于\n- page.tsx\n\n**events/** 活动\n- page.tsx\n- EventsClient.tsx\n\n**community_qa/** 社区问答\n- page.tsx\n\n**ask_question/** 提问\n- page.tsx\n\n**ask_question_result/** 提问结果\n- page.tsx\n\n**layout.tsx** 根布局\n**page.tsx** 首页入口\n**globals.css** 全局样式","x":0,"y":-600,"width":280,"height":600,"color":"6"},
-		{"id":"data_flow","type":"text","text":"## 数据流\n\n```\n用户操作\n   ↓\nPages (app/)\n   ↓\nComponents\n   ↓\nHooks (useReaction等)\n   ↓\nAPI Layer\n   ↓\nLib (axios封装)\n   ↓\nStrapi CMS\n   ↓\n响应数据\n   ↓\nContexts (状态)\n   ↓\n组件更新\n```","x":-10,"y":73,"width":300,"height":575,"color":"6"}
-	],
-	"edges":[
-		{"id":"edge_pages_comp","fromNode":"pages_home","fromSide":"right","toNode":"comp_layout","toSide":"left","label":"使用"},
-		{"id":"edge_comp_api","fromNode":"comp_content","fromSide":"right","toNode":"api_layer","toSide":"left","label":"调用"},
-		{"id":"edge_api_lib","fromNode":"api_layer","fromSide":"bottom","toNode":"lib_layer","toSide":"top","label":"HTTP"},
-		{"id":"edge_lib_backend","fromNode":"lib_layer","fromSide":"right","toNode":"backend","toSide":"left","label":"请求"},
-		{"id":"edge_api_types","fromNode":"api_detail","fromSide":"right","toNode":"types_module","toSide":"left","label":"类型"},
-		{"id":"edge_comp_hooks","fromNode":"comp_interactive","fromSide":"right","toNode":"hooks","toSide":"left","label":"使用"},
-		{"id":"edge_hooks_api","fromNode":"hooks","fromSide":"bottom","toNode":"api_detail","toSide":"right","label":"调用"},
-		{"id":"edge_media_ctx","fromNode":"comp_media","fromSide":"right","toNode":"contexts","toSide":"left","label":"状态"},
-		{"id":"edge_env_lib","fromNode":"env_config","fromSide":"right","toNode":"lib_layer","toSide":"left","label":"配置"},
-		{"id":"edge_tech_env","fromNode":"tech_stack","fromSide":"bottom","toNode":"env_config","toSide":"top"},
-		{"id":"edge_i18n_pages","fromNode":"i18n","fromSide":"top","toNode":"pages_auth","toSide":"bottom","label":"翻译"},
-		{"id":"edge_cap_pages","fromNode":"capacitor","fromSide":"top","toNode":"pages_home","toSide":"bottom","label":"原生"},
-		{"id":"edge_struct_flow","fromNode":"project_structure","fromSide":"right","toNode":"data_flow","toSide":"left"},
-		{"id":"edge_deploy_env","fromNode":"deploy","fromSide":"top","toNode":"env_config","toSide":"left","label":"部署"}
-	]
-}

+ 0 - 29
askyi/askyi-h5/pages.canvas

@@ -1,29 +0,0 @@
-{
-	"nodes":[
-		{"id":"home","type":"text","text":"## Home 首页\n\n**路径**: `/home/`\n**优先级**: P0\n\n### UI 模式\n- 瀑布流双列布局\n- 下拉刷新 + 上拉加载\n\n### Tab 导航\n- Follow 关注\n- Discover 发现\n- User Cases 案例\n\n### 分类筛选\n- Recommended 推荐\n- Yijing Bagua 易经八卦\n- Feng Shui Guide 风水指南\n- TCM Wellness 中医养生\n- Mystical Tales 奇闻异事\n\n### 卡片组件\n- 封面图片\n- 文章标题\n- 作者头像 + 昵称\n- 点赞数\n\n### API 依赖\n- GET /api/articles (分页)\n- GET /api/categories\n\n### 跳转目标\n- 点击卡片 → ArticleDetail\n- 点击作者 → ExpertProfile","x":-1120,"y":-2120,"width":320,"height":1120,"color":"3"},
-		{"id":"divination","type":"text","text":"## Divination 占卜\n\n**路径**: `/divination/`\n**优先级**: P0\n\n### UI 模式\n- 功能入口列表\n- 卡片式布局\n\n### 当前功能\n**今日运势**\n- 基于八字五行分析\n- 分析维度:\n  - 财运\n  - 事业\n  - 健康\n  - 桃花\n\n### 计划功能\n- 金钱卦 coins\n- 摇卦 shake\n- 求签 stick\n- 姓名测算 name\n- 占卜历史 history\n\n### API 依赖\n- GET /api/divination/today\n- POST /api/divination/coins\n- POST /api/divination/shake\n\n### 跳转目标\n- 点击功能卡 → 具体占卜页\n- 查看历史 → DivinationHistory","x":-200,"y":-2000,"width":320,"height":1080,"color":"1"},
-		{"id":"login","type":"text","text":"## Login 登录\n\n**路径**: `/login/`\n**优先级**: P0\n\n### UI 模式\n- 表单页面\n- Tab 切换登录方式\n\n### 登录方式\n**邮箱登录**\n- 邮箱/用户名 输入\n- 密码 输入\n\n**手机号登录**\n- 手机号 输入\n- 验证码 输入\n\n### 社交登录\n- 微信登录 (WeChat)\n- Facebook 登录\n- Google 登录\n\n### 其他入口\n- 忘记密码 → ForgotPassword\n- 创建账号 → Register\n\n### API 依赖\n- POST /api/auth/local (邮箱)\n- POST /api/auth/sms (手机)\n- GET /api/auth/wechat (微信)\n\n### 跳转目标\n- 登录成功 → 返回来源页\n- 忘记密码 → ForgotPassword\n- 注册 → Register","x":360,"y":-2090,"width":320,"height":1170,"color":"4"},
-		{"id":"publish","type":"text","text":"## Publish 发布\n\n**路径**: `/publish/`\n**优先级**: P0\n**需要登录**: 是\n\n### UI 模式\n- 表单页面\n- 多媒体上传\n\n### 表单字段\n1. **标题** - 文本输入\n2. **封面图片** - 拖拽上传\n   - 格式: JPG/PNG/WebP\n   - 大小: 最大 5MB\n3. **视频** - 可选上传\n   - 格式: MP4/MOV\n   - 大小: 最大 100MB\n4. **内容** - Markdown 编辑器\n\n### 按钮\n- 取消 - 返回上一页\n- 发布 - 提交内容\n\n### API 依赖\n- POST /api/upload (图片/视频)\n- POST /api/articles (创建文章)\n\n### 跳转目标\n- 发布成功 → ArticleDetail\n- 取消 → 返回","x":360,"y":-3480,"width":320,"height":1080,"color":"5"},
-		{"id":"profile","type":"text","text":"## Profile 个人中心\n\n**路径**: `/profile/`\n**优先级**: P0\n**需要登录**: 是\n\n### UI 模式\n- 个人信息卡片\n- 功能列表\n\n### 用户信息区\n- 头像\n- 昵称\n- 简介\n- 关注数 / 粉丝数\n\n### 功能列表\n- 我的文章\n- 我的收藏\n- 我的关注\n- 浏览历史\n- 设置\n\n### API 依赖\n- GET /api/users/me\n- GET /api/articles?author=me\n- GET /api/reactions?type=favorite\n\n### 跳转目标\n- 编辑资料 → ProfileEdit\n- 设置 → Settings\n- 我的文章 → MyArticles\n- 未登录 → Login","x":1160,"y":-1360,"width":320,"height":1240,"color":"4"},
-		{"id":"settings","type":"text","text":"## Settings 设置\n\n**路径**: `/settings/`\n**优先级**: P2\n**需要登录**: 是\n\n### 功能列表\n- 账号安全\n- 隐私设置\n- 通知设置\n- 清除缓存\n- 关于我们\n- 退出登录","x":1180,"y":80,"width":280,"height":400,"color":"5"},
-		{"id":"article_detail","type":"text","text":"## ArticleDetail 文章详情\n\n**路径**: `/article/:id`\n**优先级**: P1\n\n### UI 模式\n- 文章阅读页\n- 底部交互栏\n\n### 内容区\n- 标题\n- 作者信息\n- 发布时间\n- 正文内容 (Markdown)\n- 封面图/视频\n\n### 交互栏\n- 点赞按钮\n- 收藏按钮\n- 分享按钮\n- 评论入口\n\n### API 依赖\n- GET /api/articles/:id\n- POST /api/reactions\n- GET /api/comments?article=:id","x":-1120,"y":-440,"width":320,"height":840,"color":"3"},
-		{"id":"expert_profile","type":"text","text":"## ExpertProfile 专家主页\n\n**路径**: `/expert/:id`\n**优先级**: P1\n\n### UI 模式\n- 个人主页\n- 内容列表\n\n### 用户信息区\n- 头像 + 认证标识\n- 昵称 + 简介\n- 关注数 / 粉丝数\n- 关注按钮\n\n### Tab 内容\n- 文章列表\n- 视频列表\n- 课程列表\n\n### API 依赖\n- GET /api/experts/:id\n- GET /api/articles?author=:id\n- GET /api/videos?author=:id\n- POST /api/followings","x":-600,"y":-440,"width":320,"height":840,"color":"3"},
-		{"id":"hot","type":"text","text":"## Hot 热门视频\n\n**路径**: `/hot/`\n**优先级**: P0\n\n### UI 模式\n- 全屏视频流(抖音风格)\n- 上滑切换视频\n- 自动播放\n\n### 右侧交互按钮\n- 头像 + 关注按钮(+)\n- 点赞 (heart + count)\n- 收藏 (star + count)\n- 分享 (share + count)\n\n### 底部信息\n- @用户名\n- 视频标题\n- #标签列表\n- 分类标签\n\n### 进度条\n- 底部视频播放进度\n\n### API 依赖\n- GET /api/videos (分页)\n- POST /api/reactions (点赞/收藏)\n- POST /api/followings (关注)\n\n### 跳转目标\n- 点击头像 → ExpertProfile\n- 点击分享 → 分享弹窗","x":-600,"y":-2080,"width":320,"height":1080,"color":"1"},
-		{"id":"tabbar","type":"text","text":"## TabBar 底部导航\n\n**固定显示**: 5个入口\n\n| 图标 | 标签 | 路径 |\n|------|------|------|\n| home | 首页 | /home/ |\n| fire | 热门 | /hot/ |\n| plus | 发布 | /publish/ |\n| compass | 占卜 | /divination/ |\n| user | 我的 | /profile/ |\n\n### 登录拦截\n- 发布 → 需要登录\n- 我的 → 需要登录","x":-1640,"y":-440,"width":320,"height":500,"color":"2"},
-		{"id":"flow_title","type":"text","text":"## 核心用户流程\n\n### 浏览流程\nHome → ArticleDetail → ExpertProfile\n\n### 视频流程\nHot → 上滑浏览 → 关注/点赞\n\n### 发布流程\nPublish → (需登录) → Login → Publish → 发布成功\n\n### 占卜流程\nDivination → 选择功能 → 获取结果","x":-1720,"y":140,"width":400,"height":520,"color":"6"},
-		{"id":"title","type":"text","text":"# askyi-h5 页面功能\n\n**描述**: 页面功能、跳转流程、数据依赖\n**更新**: 2026-01-05\n\n用于指导 askyi-uniapp 迁移开发","x":-1680,"y":-2120,"width":320,"height":200,"color":"6"},
-		{"id":"search","type":"text","text":"## Search 搜索\n\n**路径**: `/search/`\n**优先级**: P1\n\n### UI 模式\n- 搜索输入框\n- 历史记录\n- 结果列表\n\n### 搜索范围\n- 文章\n- 视频\n- 专家\n- 课程\n\n### API 依赖\n- GET /api/search?q=keyword","x":800,"y":80,"width":280,"height":640,"color":"5"}
-	],
-	"edges":[
-		{"id":"e1","fromNode":"home","fromSide":"bottom","toNode":"article_detail","toSide":"top","label":"点击卡片"},
-		{"id":"e2","fromNode":"home","fromSide":"bottom","toNode":"expert_profile","toSide":"top","label":"点击作者"},
-		{"id":"e3","fromNode":"hot","fromSide":"bottom","toNode":"expert_profile","toSide":"top","label":"点击头像"},
-		{"id":"e4","fromNode":"profile","fromSide":"top","toNode":"login","toSide":"right","label":"未登录"},
-		{"id":"e5","fromNode":"publish","fromSide":"bottom","toNode":"login","toSide":"top","label":"需要登录"},
-		{"id":"e6","fromNode":"login","fromSide":"bottom","toNode":"profile","toSide":"left","label":"登录成功"},
-		{"id":"e7","fromNode":"article_detail","fromSide":"right","toNode":"expert_profile","toSide":"left","label":"点击作者"},
-		{"id":"e8","fromNode":"profile","fromSide":"bottom","toNode":"settings","toSide":"top","label":"设置"},
-		{"id":"e9","fromNode":"tabbar","fromSide":"top","toNode":"home","toSide":"bottom","label":"首页"},
-		{"id":"e10","fromNode":"tabbar","fromSide":"top","toNode":"hot","toSide":"bottom","label":"热门"}
-	]
-}