Răsfoiți Sursa

feat: enhance AskYi project documentation and workspace configuration

- Updated workspace.json to include new last opened files and reflect recent changes in project structure.
- Added new CLAUDE.md files for each subproject, detailing project information, technology stack, and development commands.
- Introduced architecture.canvas file outlining the overall system architecture and component relationships.
- Ensured consistency and clarity across all documentation for the AskYi project.
yb 3 săptămâni în urmă
părinte
comite
4822ee5979

+ 9 - 9
.obsidian/workspace.json

@@ -185,6 +185,14 @@
   },
   "active": "18265060efc4f04b",
   "lastOpenFiles": [
+    "askyi/prototype-h5/CLAUDE.md",
+    "askyi/askyi-app/CLAUDE.md",
+    "askyi/askyilife/CLAUDE.md",
+    "askyi/askyi-uniapp/CLAUDE.md",
+    "askyi/askyi-h5/CLAUDE.md",
+    "askyi/askyi-cms-railway/CLAUDE.md",
+    "askyi/architecture.canvas",
+    "askyi/CLAUDE.md",
     "tg-live-game/tg-live-game-web/_project.md",
     "workflow.md",
     "tg-live-game/tg-live-game-web/CLAUDE.md",
@@ -231,15 +239,7 @@
     "yshop/yshop-drink-vue/README.md",
     "yshop/yshop-drink/script/docker/Docker-HOWTO.md",
     "yshop/yshop-drink-uniapp/uni_modules/uv-waterfall/readme.md",
-    "yshop/yshop-drink-uniapp/uni_modules/uv-waterfall/changelog.md",
-    "yshop/yshop-drink-uniapp/uni_modules/uv-vtabs/readme.md",
-    "yshop/yshop-drink-uniapp/uni_modules/uv-vtabs/changelog.md",
-    "yshop/yshop-drink-uniapp/uni_modules/uv-upload/readme.md",
-    "yshop/yshop-drink-uniapp/uni_modules/uv-upload/changelog.md",
-    "yshop/yshop-drink-uniapp/uni_modules/uv-ui-tools/readme.md",
-    "yshop/yshop-drink-uniapp/uni_modules/uv-ui-tools/changelog.md",
     "pwtk-admin-web/architecture-v1.canvas",
-    "askyi/askyi-h5/pages.canvas",
-    "askyi/askyi-taro/pages.canvas"
+    "askyi/askyi-h5/pages.canvas"
   ]
 }

+ 124 - 0
askyi/CLAUDE.md

@@ -0,0 +1,124 @@
+# 问易社区 (AskYi) - Claude Code 配置
+
+## 项目信息
+
+| 属性 | 值 |
+|------|-----|
+| 项目名称 | askyi |
+| 项目类型 | project-group (多项目组) |
+| 项目描述 | 生活方式类应用平台 |
+
+## 子项目
+
+| 子项目 | 类型 | 技术栈 | 目录 |
+|--------|------|--------|------|
+| askyi-cms-railway | 后端 CMS | Strapi 5 + PostgreSQL + Redis | `./askyi-cms-railway/` |
+| askyi-h5 | 前端应用 | Next.js 15 + Capacitor 6 | `./askyi-h5/` |
+| askyi-uniapp | 小程序 | UniApp + Vue 3 + Pinia | `./askyi-uniapp/` |
+| askyilife | iOS 原生 | Swift 5.9 + SwiftUI | `./askyilife/` |
+| askyi-app | 原生壳 | Capacitor 8 | `./askyi-app/` |
+| prototype-h5 | 原型 | HTML/CSS/JS | `./prototype-h5/` |
+
+## 关联配置
+
+### Obsidian 文档路径
+```
+文档根目录: /Users/yibu/dev_workspace/vibe-coding-cn
+项目文档:   /Users/yibu/dev_workspace/vibe-coding-cn/askyi
+```
+
+### Vibe Kanban 项目
+| 项目 | Kanban ID |
+|------|-----------|
+| askyi-cms-railway | `b986657a-68d8-4600-b2c8-e39466307ef6` |
+| askyi-h5 | `1da5d0cd-8001-4c43-9636-65d07f1c276d` |
+| askyi-uniapp | `ba7aec6f-114f-49ed-b26b-4e9d234c15c4` |
+| askyilife | `0d65b167-7cff-4496-845a-3b3385223014` |
+| askyi-app | `d7d6096b-8e20-4fb5-a3d3-530d6bf12d37` |
+| prototype-h5 | `f435fea5-30f5-449d-8e8f-2d493e9af168` |
+
+## 系统架构
+
+```
+                         ┌─────────────────────┐
+                         │  askyi-cms-railway  │  ← Headless CMS (Strapi)
+                         │  PostgreSQL + Redis │
+                         │  Railway 部署        │
+                         └──────────┬──────────┘
+                                    │ API
+    ┌───────────────┬───────────────┼───────────────┬───────────────┐
+    ↓               ↓               ↓               ↓               ↓
+┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
+│ askyi-h5   │ │askyi-uniapp│ │ askyilife  │ │ askyi-app  │ │prototype-h5│
+│ Next.js 15 │ │UniApp+Vue3 │ │Swift/SwiftUI│ │Capacitor壳 │ │静态HTML原型│
+│ +Capacitor │ │ 微信小程序  │ │  iOS 原生   │ │askyi.life │ │  UI 设计   │
+└────────────┘ └────────────┘ └────────────┘ └────────────┘ └────────────┘
+```
+
+## 开发顺序约定
+
+### 功能开发顺序
+```
+1. prototype-h5    → UI 设计稿(可选)
+2. askyi-cms-railway → 后端 API + 数据模型
+3. askyi-h5        → 前端页面实现
+4. askyi-uniapp    → 微信小程序实现(从 askyi-h5 迁移)
+5. askyilife       → iOS 原生实现(如需要)
+6. askyi-app       → 同步更新套壳配置(如需要)
+```
+
+### 前后端联动
+- 先后端:定义数据模型和 API
+- 再前端:调用 API 实现页面
+
+## 开发命令
+
+### 后端 (askyi-cms-railway)
+```bash
+cd askyi-cms-railway
+pnpm install
+pnpm run dev          # 本地开发
+pnpm run build        # 构建
+```
+
+### 前端 (askyi-h5)
+```bash
+cd askyi-h5
+pnpm install
+pnpm run dev          # 本地开发
+pnpm run build:ios    # 构建 + 同步 iOS
+```
+
+### 微信小程序 (askyi-uniapp)
+```bash
+cd askyi-uniapp
+pnpm install
+pnpm run dev:mp-weixin # 微信小程序开发
+pnpm run build:mp-weixin # 构建微信小程序
+```
+
+### iOS 原生 (askyilife)
+```bash
+cd askyilife
+make setup            # 安装开发工具
+make build            # 构建项目
+# 或用 Xcode 打开
+```
+
+## 部署环境
+
+| 子项目 | 开发环境 | 生产环境 |
+|--------|----------|----------|
+| askyi-cms-railway | localhost:1337 | Railway |
+| askyi-h5 | localhost:3000 | Railway / askyi.life |
+| askyi-uniapp | HBuilderX / 微信开发者工具 | 微信小程序 |
+| askyilife | Xcode 模拟器 | App Store |
+| askyi-app | Xcode / Android Studio | App Store / Google Play |
+
+## 核心文档
+
+| 文档 | 位置 | 内容 |
+|------|------|------|
+| 系统架构 | `architecture.canvas` | 整体架构图 |
+| H5 架构 | `askyi-h5/architecture.canvas` | 前端架构 |
+| UniApp 架构 | `askyi-uniapp/architecture.canvas` | 小程序架构 |

+ 22 - 0
askyi/architecture.canvas

@@ -0,0 +1,22 @@
+{
+	"nodes":[
+		{"id":"title","type":"text","text":"# 问易社区 (AskYi) 系统架构\n\n**版本**: 1.0.0\n**描述**: 生活方式类应用平台\n\n包含 CMS 后端、Web 前端、iOS 原生应用等多个子项目","x":0,"y":-400,"width":400,"height":140,"color":"1"},
+		{"id":"backend","type":"text","text":"## askyi-cms-railway\n\n**Headless CMS**\n\n技术栈:\n- Strapi 5\n- PostgreSQL\n- Redis\n\n部署: Railway\n\n功能:\n- 内容管理\n- 用户认证\n- API 服务","x":0,"y":-180,"width":280,"height":300,"color":"6"},
+		{"id":"askyi-h5","type":"text","text":"## askyi-h5\n\n**移动端主应用**\n\n技术栈:\n- Next.js 15\n- React 18\n- Capacitor 6\n- Tailwind CSS\n\n平台:\n- Web\n- iOS (Capacitor)\n- Android (Capacitor)","x":-400,"y":200,"width":240,"height":300,"color":"5"},
+		{"id":"askyi-uniapp","type":"text","text":"## askyi-uniapp\n\n**微信小程序**\n\n技术栈:\n- UniApp\n- Vue 3\n- Pinia\n- uView Plus\n\n平台:\n- 微信小程序\n- H5","x":-120,"y":200,"width":240,"height":280,"color":"4"},
+		{"id":"askyilife","type":"text","text":"## askyilife\n\n**iOS 原生应用**\n\n技术栈:\n- Swift 5.9\n- SwiftUI\n- MVVM\n\n平台:\n- iOS App Store","x":160,"y":200,"width":240,"height":260,"color":"4"},
+		{"id":"askyi-app","type":"text","text":"## askyi-app\n\n**原生套壳**\n\n技术栈:\n- Capacitor 8\n\n功能:\n- 加载 askyi.life\n- 原生功能封装","x":440,"y":200,"width":220,"height":220,"color":"4"},
+		{"id":"prototype","type":"text","text":"## prototype-h5\n\n**UI 原型**\n\n技术栈:\n- HTML/CSS/JS\n\n用途:\n- 设计参考\n- 快速原型","x":440,"y":460,"width":220,"height":200,"color":"3"},
+		{"id":"database","type":"text","text":"## 数据存储\n\n**PostgreSQL**\n- 业务数据\n- 用户数据\n\n**Redis**\n- 缓存\n- Session","x":340,"y":-180,"width":200,"height":200,"color":"2"},
+		{"id":"external","type":"text","text":"## 外部服务\n\n- Railway (部署)\n- Firebase (推送)\n- 微信开放平台\n- App Store Connect","x":-340,"y":-180,"width":220,"height":180,"color":"2"}
+	],
+	"edges":[
+		{"id":"e1","fromNode":"askyi-h5","fromSide":"top","toNode":"backend","toSide":"bottom","label":"REST API"},
+		{"id":"e2","fromNode":"askyi-uniapp","fromSide":"top","toNode":"backend","toSide":"bottom","label":"REST API"},
+		{"id":"e3","fromNode":"askyilife","fromSide":"top","toNode":"backend","toSide":"bottom","label":"REST API"},
+		{"id":"e4","fromNode":"askyi-app","fromSide":"top","toNode":"backend","toSide":"right","label":"REST API"},
+		{"id":"e5","fromNode":"backend","fromSide":"right","toNode":"database","toSide":"left"},
+		{"id":"e6","fromNode":"backend","fromSide":"left","toNode":"external","toSide":"right"},
+		{"id":"e7","fromNode":"prototype","fromSide":"left","toNode":"askyi-h5","toSide":"right","label":"设计参考"}
+	]
+}

+ 50 - 0
askyi/askyi-app/CLAUDE.md

@@ -0,0 +1,50 @@
+# AskYi App - Claude Code 配置
+
+> 2级子项目配置 | 继承自 askyi (1级)
+
+## 项目信息
+
+| 属性 | 值 |
+|------|-----|
+| 项目名称 | askyi-app |
+| 所属项目 | askyi |
+| 项目类型 | capacitor-shell (原生套壳) |
+| 框架 | Capacitor 8 |
+
+## 技术栈
+
+| 类别 | 技术 | 用途 |
+|------|------|------|
+| 框架 | Capacitor 8 | 原生壳 |
+| 平台 | iOS / Android | 目标平台 |
+
+## 功能说明
+
+纯套壳应用,加载 askyi.life 网站:
+- 原生功能封装
+- 推送通知
+- 本地存储
+
+## 开发命令
+
+```bash
+cd app
+pnpm install
+pnpm exec cap sync ios      # 同步 iOS
+pnpm exec cap sync android  # 同步 Android
+pnpm exec cap open ios      # 打开 Xcode
+pnpm exec cap open android  # 打开 Android Studio
+```
+
+## 部署信息
+
+| 平台 | 商店 |
+|------|------|
+| iOS | App Store |
+| Android | Google Play |
+
+## 核心文档
+
+| 文档 | 位置 | 内容 |
+|------|------|------|
+| 系统架构 | `../architecture.canvas` | 整体架构图 |

+ 70 - 0
askyi/askyi-cms-railway/CLAUDE.md

@@ -0,0 +1,70 @@
+# AskYi CMS Railway - Claude Code 配置
+
+> 2级子项目配置 | 继承自 askyi (1级)
+
+## 项目信息
+
+| 属性 | 值 |
+|------|-----|
+| 项目名称 | askyi-cms-railway |
+| 所属项目 | askyi |
+| 项目类型 | backend (Headless CMS) |
+| 框架 | Strapi 5 |
+| 数据库 | PostgreSQL |
+| 缓存 | Redis |
+
+## 技术栈
+
+| 类别 | 技术 | 用途 |
+|------|------|------|
+| CMS | Strapi 5 | 内容管理系统 |
+| 数据库 | PostgreSQL | 主数据库 |
+| 缓存 | Redis | 缓存/Session |
+| 部署 | Railway | 云平台 |
+
+## 主要功能
+
+| 功能 | 描述 |
+|------|------|
+| 文章管理 | 文章 CRUD、分类、标签 |
+| 用户管理 | 用户认证、权限 |
+| 专家管理 | 专家信息、认证 |
+| 视频管理 | 视频内容、分类 |
+| 课程管理 | 课程内容、章节 |
+| 评论系统 | 评论、回复 |
+
+## API 端点
+
+| 端点 | 描述 |
+|------|------|
+| `/api/articles` | 文章 |
+| `/api/videos` | 视频 |
+| `/api/experts` | 专家 |
+| `/api/users` | 用户 |
+| `/api/auth` | 认证 |
+| `/api/reactions` | 点赞/收藏 |
+| `/api/follow-*` | 关注 |
+
+## 开发命令
+
+```bash
+pnpm install          # 安装依赖
+pnpm run dev          # 本地开发 (localhost:1337)
+pnpm run build        # 构建
+pnpm run config:export # 导出配置
+pnpm run db-backup:dev # 备份数据库
+```
+
+## 部署信息
+
+| 环境 | 地址 |
+|------|------|
+| 开发 | localhost:1337 |
+| 生产 | Railway |
+
+## 核心文档
+
+| 文档 | 位置 | 内容 |
+|------|------|------|
+| 系统架构 | `../architecture.canvas` | 整体架构图 |
+| API 文档 | Strapi Admin | 自动生成 |

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

@@ -0,0 +1,79 @@
+# 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` | 整体架构图 |

+ 4 - 4
askyi/askyi-h5/architecture.canvas

@@ -5,27 +5,27 @@
 		{"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":"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":"4"},
+		{"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":"1"},
+		{"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":"1"},
+		{"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"},

+ 85 - 0
askyi/askyi-uniapp/CLAUDE.md

@@ -0,0 +1,85 @@
+# AskYi UniApp 小程序 - Claude Code 配置
+
+> 2级子项目配置 | 继承自 askyi (1级)
+
+## 项目信息
+
+| 属性 | 值 |
+|------|-----|
+| 项目名称 | askyi-uniapp |
+| 所属项目 | askyi |
+| 项目类型 | miniprogram (微信小程序) |
+| 框架 | UniApp |
+| UI | Vue 3 + uView Plus |
+
+## 技术栈
+
+| 类别 | 技术 | 用途 |
+|------|------|------|
+| 框架 | UniApp | 跨端框架 |
+| UI | Vue 3 | 响应式框架 |
+| 状态 | Pinia | 状态管理 |
+| UI 组件 | uView Plus | 移动端组件库 |
+| 语言 | TypeScript | 类型系统 |
+
+## 项目结构
+
+```
+src/
+├── api/          # API 接口
+├── components/   # 组件
+├── composables/  # 组合函数
+├── pages/        # 页面
+├── stores/       # 状态管理
+├── static/       # 静态资源
+├── styles/       # 样式
+├── types/        # 类型
+└── utils/        # 工具
+```
+
+## 功能模块
+
+| 模块 | 功能 | 状态 |
+|------|------|------|
+| 首页/发现 | 内容推荐 | 规划中 |
+| 文章 | 文章列表、详情 | 规划中 |
+| 视频 | 视频播放 | 规划中 |
+| 专家 | 专家咨询 | 规划中 |
+| 占卜 | 金钱卦、摇卦 | 规划中 |
+| 用户中心 | 个人资料 | 规划中 |
+| 认证 | 微信登录 | 规划中 |
+
+## 迁移映射 (askyi-h5 → askyi-uniapp)
+
+| React | Vue 3 |
+|-------|-------|
+| useState | ref |
+| useEffect | onMounted |
+| Hooks | composables |
+| axios | uni.request |
+| className | class |
+| Capacitor | UniApp |
+
+## 开发命令
+
+```bash
+pnpm install              # 安装依赖
+pnpm run dev:h5           # H5 开发
+pnpm run dev:mp-weixin    # 微信小程序开发
+pnpm run build:mp-weixin  # 构建微信小程序
+```
+
+## 部署信息
+
+| 环境 | 工具 |
+|------|------|
+| 开发 | HBuilderX / 微信开发者工具 |
+| 生产 | 微信小程序 |
+
+## 核心文档
+
+| 文档 | 位置 | 内容 |
+|------|------|------|
+| 小程序架构 | `architecture.canvas` | 组件/页面架构 |
+| 页面结构 | `pages.canvas` | 页面关系图 |
+| 系统架构 | `../architecture.canvas` | 整体架构图 |

+ 3 - 3
askyi/askyi-uniapp/architecture.canvas

@@ -13,12 +13,12 @@
 		{"id":"data_flow","type":"text","text":"## 数据流\n\n```\n用户操作\n   ↓\nPages (pages/)\n   ↓\nComponents\n   ↓\nComposables\n   ↓\nAPI Layer\n   ↓\nUtils (request)\n   ↓\nStrapi CMS\n   ↓\n响应数据\n   ↓\nStores (Pinia)\n   ↓\n组件更新\n```","x":-1200,"y":-680,"width":280,"height":560,"color":"6"},
 		{"id":"migration_map","type":"text","text":"## 迁移映射\n\n**askyi-h5 → askyi-uniapp**\n\n| React | Vue 3 |\n|-------|-------|\n| useState | ref |\n| useEffect | onMounted |\n| Hooks | composables |\n| axios | uni.request |\n| className | class |\n| Capacitor | UniApp |\n\n**共享资源**\n- 类型定义 (types/)\n- API 结构 (api/)","x":-800,"y":-680,"width":300,"height":480,"color":"3"},
 		{"id":"env_config","type":"text","text":"## 环境配置\n\n**开发环境**\n- API: localhost:1337\n- 调试: HBuilderX\n\n**生产环境**\n- API: Railway\n- 构建: mp-weixin\n\n**环境变量**\n- VUE_APP_API_BASE\n- VUE_APP_SITE_URL","x":-400,"y":-680,"width":280,"height":420,"color":"2"},
-		{"id":"api_layer","type":"text","text":"## API 接口层\n\n| 模块 | 文件 | 功能 |\n|------|------|------|\n| article | api/article.ts | 文章 |\n| auth | api/auth.ts | 认证 |\n| user | api/user.ts | 用户 |\n| expert | api/expert.ts | 专家 |\n| video | api/video.ts | 视频 |\n| reaction | api/reaction.ts | 反应 |\n| following | api/following.ts | 关注 |\n| category | api/category.ts | 分类 |\n| course | api/course.ts | 课程 |\n| divination | api/divination.ts | 占卜 |","x":340,"y":-1840,"width":400,"height":480,"color":"1"},
+		{"id":"api_layer","type":"text","text":"## API 接口层\n\n| 模块 | 文件 | 功能 |\n|------|------|------|\n| article | api/article.ts | 文章 |\n| auth | api/auth.ts | 认证 |\n| user | api/user.ts | 用户 |\n| expert | api/expert.ts | 专家 |\n| video | api/video.ts | 视频 |\n| reaction | api/reaction.ts | 反应 |\n| following | api/following.ts | 关注 |\n| category | api/category.ts | 分类 |\n| course | api/course.ts | 课程 |\n| divination | api/divination.ts | 占卜 |","x":340,"y":-1840,"width":400,"height":480,"color":"6"},
 		{"id":"utils","type":"text","text":"## 工具函数\n\n**utils/**\n- request.ts HTTP封装\n- storage.ts 存储工具\n- format.ts 格式化\n- validate.ts 验证\n- platform.ts 平台检测\n- share.ts 分享工具","x":810,"y":-720,"width":260,"height":320,"color":"2"},
-		{"id":"backend","type":"text","text":"## 后端 API\n\n**askyi-cms-railway**\nStrapi 5 + PostgreSQL\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","x":1240,"y":-780,"width":280,"height":440,"color":"4"},
+		{"id":"backend","type":"text","text":"## 后端 API\n\n**askyi-cms-railway**\nStrapi 5 + PostgreSQL\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","x":1240,"y":-780,"width":280,"height":440,"color":"6"},
 		{"id":"types","type":"text","text":"## TypeScript 类型\n\n**types/**\n- article.ts 文章类型\n- user.ts 用户类型\n- expert.ts 专家类型\n- video.ts 视频类型\n- api.ts API响应类型\n- common.ts 通用类型","x":1250,"y":-1760,"width":260,"height":320,"color":"4"},
 		{"id":"config","type":"text","text":"## 配置文件\n\n**pages.json**\n- 页面路由配置\n- TabBar 配置\n- 导航栏样式\n\n**manifest.json**\n- 应用信息\n- 微信小程序配置\n- AppId 配置\n\n**uni.scss**\n- 全局样式变量\n- 主题色定义","x":1240,"y":-1320,"width":280,"height":480,"color":"2"},
-		{"id":"title","type":"text","text":"# askyi-uniapp 架构\n\n**版本**: 0.1.0\n**描述**: 问易社区微信小程序\n**状态**: 规划中\n\n技术栈:UniApp + Vue 3 + TypeScript\n状态管理:Pinia\nUI组件:uView Plus\n\n**迁移来源**: askyi-h5\n**目标平台**: 微信小程序","x":-2160,"y":-1920,"width":400,"height":340,"color":"6"},
+		{"id":"title","type":"text","text":"# askyi-uniapp 架构\n\n**版本**: 0.1.0\n**描述**: 问易社区微信小程序\n**状态**: 规划中\n\n技术栈:UniApp + Vue 3 + TypeScript\n状态管理:Pinia\nUI组件:uView Plus\n\n**迁移来源**: askyi-h5\n**目标平台**: 微信小程序","x":-2160,"y":-1920,"width":400,"height":340,"color":"1"},
 		{"id":"pages_advanced","type":"text","text":"## Phase 4: 高级功能\n\n**pages/course/**\n- list.vue 课程列表\n- detail.vue 课程详情\n- player.vue 课程播放\n\n**pages/consult/**\n- index.vue 咨询页\n\n**pages/message/**\n- index.vue 消息列表\n- chat.vue 聊天详情\n\n**pages/payment/**\n- index.vue 支付页","x":-410,"y":-2000,"width":300,"height":480,"color":"5"},
 		{"id":"comp_media","type":"text","text":"## 媒体组件\n\n**components/media/**\n- VideoPlayer.vue 视频播放器\n- ImageUploader.vue 图片上传\n- ImageCropper.vue 图片裁剪\n- AudioPlayer.vue 音频播放\n\n**UniApp特有**\n- 使用 video 组件\n- 使用 uni.chooseImage","x":-400,"y":-1180,"width":280,"height":360,"color":"1"}
 	],

+ 45 - 0
askyi/askyilife/CLAUDE.md

@@ -0,0 +1,45 @@
+# AskYi Life iOS - Claude Code 配置
+
+> 2级子项目配置 | 继承自 askyi (1级)
+
+## 项目信息
+
+| 属性 | 值 |
+|------|-----|
+| 项目名称 | askyilife |
+| 所属项目 | askyi |
+| 项目类型 | ios-native (iOS 原生应用) |
+| 语言 | Swift 5.9 |
+| UI | SwiftUI |
+
+## 技术栈
+
+| 类别 | 技术 | 用途 |
+|------|------|------|
+| 语言 | Swift 5.9 | 主语言 |
+| UI | SwiftUI | 声明式 UI |
+| 架构 | MVVM | 架构模式 |
+| 网络 | URLSession | HTTP 请求 |
+
+## 开发命令
+
+```bash
+make setup            # 安装开发工具
+make lint             # 代码检查
+make format           # 代码格式化
+make build            # 构建项目
+# 或用 Xcode 打开 askyilife.xcodeproj
+```
+
+## 部署信息
+
+| 环境 | 工具 |
+|------|------|
+| 开发 | Xcode 模拟器 |
+| 生产 | App Store |
+
+## 核心文档
+
+| 文档 | 位置 | 内容 |
+|------|------|------|
+| 系统架构 | `../architecture.canvas` | 整体架构图 |

+ 25 - 0
askyi/prototype-h5/CLAUDE.md

@@ -0,0 +1,25 @@
+# AskYi Prototype H5 - Claude Code 配置
+
+> 2级子项目配置 | 继承自 askyi (1级)
+
+## 项目信息
+
+| 属性 | 值 |
+|------|-----|
+| 项目名称 | prototype-h5 |
+| 所属项目 | askyi |
+| 项目类型 | prototype (UI 原型) |
+| 技术 | HTML/CSS/JS |
+
+## 用途
+
+静态 HTML 原型,用于:
+- UI 设计参考
+- 快速原型验证
+- 设计稿评审
+
+## 核心文档
+
+| 文档 | 位置 | 内容 |
+|------|------|------|
+| 系统架构 | `../architecture.canvas` | 整体架构图 |