Эх сурвалжийг харах

docs: add comprehensive documentation for AskYi project structure and workflow

- Introduced new project files for AskYi, including detailed descriptions for each subproject and their respective technologies.
- Created workflow documentation outlining the collaboration between Obsidian, Vibe Kanban, and Claude Code.
- Added architecture diagrams and development commands for each subproject to facilitate understanding and onboarding.
- Updated README.md to include references to new documentation and project structure.
yb 3 долоо хоног өмнө
parent
commit
3fa2ac3a7c

+ 37 - 32
.obsidian/workspace.json

@@ -11,14 +11,17 @@
             "id": "d1c67f0d3fca314e",
             "type": "leaf",
             "state": {
-              "type": "markdown",
+              "type": "canvas",
               "state": {
-                "file": "i18n/zh/documents/00-基础指南/A Formalization of Recursive Self-Optimizing Generative Systems.md",
-                "mode": "preview",
-                "source": false
+                "file": "askyi/askyi-h5/architecture.canvas",
+                "viewState": {
+                  "x": -171.57996778793813,
+                  "y": 270.0189400812796,
+                  "zoom": -0.6738566080729167
+                }
               },
-              "icon": "lucide-file",
-              "title": "A Formalization of Recursive Self-Optimizing Generative Systems"
+              "icon": "lucide-layout-dashboard",
+              "title": "architecture"
             }
           }
         ]
@@ -185,48 +188,50 @@
   },
   "active": "cf8a89fa88ac988b",
   "lastOpenFiles": [
+    "askyi/_project.md.tmp.58558.1767539247507",
+    "askyi/_project.md.tmp.58558.1767539238307",
+    "askyi/_project.md.tmp.58558.1767539226075",
+    "askyi/_project.md.tmp.58558.1767539216460",
+    "askyi/_project.md.tmp.58558.1767539207199",
+    "askyi/askyi-uniapp/architecture.canvas",
+    "askyi/askyi-uniapp/_project.md",
+    "askyi/askyi-uniapp",
+    "tg-live-game/tg-live-game-hono/auth-system.canvas",
+    "askyi/askyi-h5/architecture.canvas",
+    "pwtk-admin-web/architecture-v1.canvas",
+    "askyi/askyi-h5/_project.md",
+    "tg-live-game/tg-live-game-hono/_project.md",
+    "workflow.md",
+    "askyi/prototype-h5/_project.md",
+    "askyi/askyi-app/_project.md",
+    "askyi/askyilife/_project.md",
+    "askyi/askyi-cms-railway/_project.md",
+    "askyi/_project.md",
+    "tg-live-game/workflow.md",
+    "CLAUDE.md",
+    "tg-live-game/rtsp-cloudflare-stream.canvas",
+    "README.md",
+    "tg-live-game/architecture-v1.canvas",
+    "tg-live-game/discuss-2024-12-31.md",
+    "pwtk-admin-web/discuss-2025-01-02.md",
+    "i18n/zh/documents/00-基础指南/A Formalization of Recursive Self-Optimizing Generative Systems.md",
     "i18n/vi",
     "i18n/ur",
     "i18n/uk",
     "i18n/tr",
     "i18n/th",
-    "i18n/ta",
-    "i18n/sw",
-    "i18n/ru",
-    "i18n/pt",
-    "i18n/pl",
-    "i18n/nl",
     "i18n/zh/documents/02-方法论/图形化AI协作-Canvas白板驱动开发.md",
-    "README.md",
     "GEMINI.md",
     "CONTRIBUTING.md",
     "CODE_OF_CONDUCT.md",
     "architecture.canvas",
-    "i18n/zh/documents/00-基础指南/A Formalization of Recursive Self-Optimizing Generative Systems.md",
     "i18n/zh/prompts/00-元提示词/omega-optimizer.md",
     "i18n/zh/prompts/00-元提示词/prompt-template.md",
     "i18n/zh/prompts/00-元提示词/README.md",
     "i18n/zh/prompts/00-元提示词/alpha-generator.md",
     "i18n/zh/prompts/01-系统提示词/README.md",
     "i18n/zh/prompts/01-系统提示词/# 💀《科比的救母救父救未婚妻与岳父岳母日记》 × OTE模型交易模式 × M.I.T白人金融教授(被女学生指控性骚扰版)v2.md",
-    "AGENTS.md",
-    "libs/README.md",
-    "libs/external/chat-vault/docs/deployment.md",
-    "libs/external/chat-vault/docs/architecture.md",
-    "libs/database/README.md",
     "tg-live-game/tg-live-game-hono/architecture.canvas",
-    "pwtk-admin-web/architecture-v1.canvas",
-    "tg-live-game/tg-live-game-hono/auth-system.canvas",
-    "pwtk-admin-web/discuss-2025-01-02.md",
-    "tg-live-game/tg-live-game-hono/d1-database.canvas",
-    "tg-live-game/architecture-v1.canvas",
-    "tg-live-game/discuss-2024-12-31.md",
-    "tg-live-game/rtsp-cloudflare-stream.canvas",
-    "tg-live-game/tg-live-game-hono/_project.md",
-    "tg-live-game/_project.md",
-    "tg-live-game/workflow.md",
-    "tg-live-game/tg-live-game-hono/workflow.md",
-    "tg-live-game/tg-live-game-hono/README.md",
-    "未命名.md"
+    "tg-live-game/tg-live-game-hono/d1-database.canvas"
   ]
 }

+ 124 - 0
CLAUDE.md

@@ -0,0 +1,124 @@
+# TG Live Game - Claude Code 配置
+
+## 项目信息
+
+| 属性 | 值 |
+|------|-----|
+| 项目名称 | tg-live-game |
+| 项目类型 | project-group (多项目组) |
+| 包含子项目 | tg-live-game-hono (后端), tg-live-game-web (前端) |
+
+## 子项目
+
+| 子项目 | 类型 | 技术栈 | 目录 |
+|--------|------|--------|------|
+| tg-live-game-hono | 后端 API | Hono + Cloudflare Workers + D1 | `./tg-live-game-hono/` |
+| tg-live-game-web | 前端应用 | Vue 3 + TypeScript + Vite | `./tg-live-game-web/` |
+
+## 关联配置
+
+### Obsidian 文档路径
+```
+文档根目录: /Users/jamesw/dev_workspace/vibe-coding-cn
+项目文档:   /Users/jamesw/dev_workspace/vibe-coding-cn/tg-live-game
+```
+
+### Vibe Kanban 项目
+| 项目 | Kanban ID |
+|------|-----------|
+| tg-live-game-hono | `7c6bb2ce-90a2-4e96-bc04-5facdcdb337f` |
+| tg-live-game-web | `32214e97-f833-485f-8c7c-cf4d82327e0b` |
+
+## 多项目协作开发规范
+
+### 启动方式
+```bash
+# 在父目录启动 Claude Code,可同时操作前后端
+cd /Users/jamesw/dev_workspace/frontend/tg-live-game
+claude
+```
+
+### 开发顺序
+同时涉及前后端的功能,按以下顺序开发:
+1. **后端 API** (`tg-live-game-hono/`) - 先实现接口
+2. **前端调用** (`tg-live-game-web/`) - 再实现页面
+
+### 任务关联
+在 Obsidian canvas 中创建关联任务时,使用以下格式:
+
+**后端任务**:
+```
+任务YYYYMMDD-NN-hono
+─────────────────
+后端:功能名称
+
+project: tg-live-game-hono
+related: 任务YYYYMMDD-NN-web
+
+1. 需求描述
+```
+
+**前端任务**:
+```
+任务YYYYMMDD-NN-web
+─────────────────
+前端:功能名称
+
+project: tg-live-game-web
+related: 任务YYYYMMDD-NN-hono
+depends: 任务YYYYMMDD-NN-hono
+
+1. 需求描述
+```
+
+### 任务字段说明
+| 字段 | 含义 | 必填 |
+|------|------|------|
+| `project` | 目标 Kanban 项目名 | ✅ |
+| `related` | 关联任务编号 | 可选 |
+| `depends` | 依赖任务(需先完成) | 可选 |
+
+### 代码提交
+分别在各子项目目录提交:
+```bash
+# 后端
+cd tg-live-game-hono && git add . && git commit -m "feat: xxx"
+
+# 前端
+cd tg-live-game-web && git add . && git commit -m "feat: xxx"
+```
+
+## 系统架构
+
+```
+Mac摄像头 → RTMPS → Cloudflare Stream → HLS → tg-live-game-web
+                         ↑
+                    tg-live-game-hono (API)
+```
+
+## 开发命令
+
+### 后端 (tg-live-game-hono)
+```bash
+cd tg-live-game-hono
+npm install       # 安装依赖
+npm run dev       # 本地开发 (localhost:8787)
+npm run deploy    # 部署到 Cloudflare
+```
+
+### 前端 (tg-live-game-web)
+```bash
+cd tg-live-game-web
+npm install       # 安装依赖
+npm run dev       # 本地开发 (localhost:3000)
+npm run build     # 构建生产版本
+```
+
+## 核心文档
+
+| 文档 | 位置 | 内容 |
+|------|------|------|
+| 整体架构 | Obsidian: `architecture-v1.canvas` | 系统架构图 |
+| 后端架构 | Obsidian: `tg-live-game-hono/architecture.canvas` | API 架构 |
+| 数据库设计 | Obsidian: `tg-live-game-hono/d1-database.canvas` | D1 表结构 |
+| 认证系统 | Obsidian: `tg-live-game-hono/auth-system.canvas` | JWT + RBAC |

+ 1 - 1
README.md

@@ -1,4 +1,4 @@
-<!--
+![[CLAUDE]]<!--
 -------------------------------------------------------------------------------
   项目头部区域 (HEADER)
 -------------------------------------------------------------------------------

+ 173 - 0
askyi/_project.md

@@ -0,0 +1,173 @@
+---
+project: askyi
+type: project-group
+description: 问易社区 - 生活方式类应用平台
+subprojects:
+  - name: askyi-cms-railway
+    kanban_id: b986657a-68d8-4600-b2c8-e39466307ef6
+    type: backend
+    tech: Strapi 5 + PostgreSQL + Redis
+  - name: askyi-h5
+    kanban_id: 1da5d0cd-8001-4c43-9636-65d07f1c276d
+    type: frontend
+    tech: Next.js 15 + Capacitor 6
+  - name: askyilife
+    kanban_id: 0d65b167-7cff-4496-845a-3b3385223014
+    type: ios-native
+    tech: Swift 5.9 + SwiftUI
+  - name: askyi-app
+    kanban_id: d7d6096b-8e20-4fb5-a3d3-530d6bf12d37
+    type: capacitor-shell
+    tech: Capacitor 8 (纯套壳)
+  - name: prototype-h5
+    kanban_id: f435fea5-30f5-449d-8e8f-2d493e9af168
+    type: prototype
+    tech: HTML/CSS/JS
+  - name: askyi-uniapp
+    kanban_id: ba7aec6f-114f-49ed-b26b-4e9d234c15c4
+    type: miniprogram
+    tech: UniApp + Vue 3 + Pinia
+code_root: /Users/jamesw/dev_workspace/askyi/organization
+obsidian_root: /Users/jamesw/dev_workspace/vibe-coding-cn/askyi
+---
+
+# 问易社区 (AskYi)
+
+> 生活方式类应用平台,包含 CMS 后端、Web 前端、iOS 原生应用等多个子项目
+
+## 系统架构
+
+```
+                         ┌─────────────────────┐
+                         │  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 设计   │
+└────────────┘ └────────────┘ └────────────┘ └────────────┘ └────────────┘
+```
+
+## 子项目说明
+
+| 子项目 | 类型 | 技术栈 | 用途 |
+|--------|------|--------|------|
+| askyi-cms-railway | 后端 | Strapi 5 + PostgreSQL + Redis | Headless CMS,内容管理 |
+| askyi-h5 | 前端 | Next.js 15 + Tailwind + Capacitor 6 | 移动端主应用 |
+| askyi-uniapp | 小程序 | UniApp + Vue 3 + Pinia | 微信小程序版本 |
+| askyilife | iOS 原生 | Swift 5.9 + SwiftUI + MVVM | 纯原生 iOS 应用 |
+| askyi-app | 原生壳 | Capacitor 8 | 套壳加载 askyi.life |
+| prototype-h5 | 原型 | HTML/CSS/JS | 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        # 构建
+pnpm run config:export # 导出配置
+pnpm run db-backup:dev # 备份数据库
+```
+
+### 前端 (askyi-h5)
+
+```bash
+cd askyi-h5
+pnpm install
+pnpm run dev          # 本地开发
+pnpm run build        # 构建
+pnpm run build:ios    # 构建 + 同步 iOS
+pnpm run build:android # 构建 + 同步 Android
+```
+
+### 微信小程序 (askyi-uniapp)
+
+```bash
+cd askyi-uniapp
+pnpm install
+pnpm run dev:h5       # 本地开发 (H5)
+pnpm run dev:mp-weixin # 微信小程序开发
+pnpm run build:mp-weixin # 构建微信小程序
+```
+
+### iOS 原生 (askyilife)
+
+```bash
+cd askyilife
+make setup            # 安装开发工具
+make lint             # 代码检查
+make format           # 代码格式化
+make build            # 构建项目
+# 或用 Xcode 打开 askyilife.xcodeproj
+```
+
+### 套壳应用 (askyi-app)
+
+```bash
+cd askyi-app/app
+pnpm install
+pnpm exec cap sync ios
+pnpm exec cap sync android
+pnpm exec cap open ios      # 打开 Xcode
+pnpm exec cap open android  # 打开 Android Studio
+```
+
+## Claude Code 启动说明
+
+```bash
+# 多项目开发(推荐)
+cd /Users/jamesw/dev_workspace/askyi/organization
+claude
+
+# 单项目开发
+cd /Users/jamesw/dev_workspace/askyi/organization/askyi-h5
+claude
+```
+
+## 核心文档
+
+| 文档 | 位置 | 内容 |
+|------|------|------|
+| 项目配置 | 本文档 | 子项目列表、Kanban ID |
+| CMS 文档 | askyi-cms-railway/README.md | Strapi 开发指南 |
+| H5 文档 | askyi-h5/README.md | Next.js 开发指南 |
+| UniApp 文档 | askyi-uniapp/README.md | 小程序开发指南 |
+| iOS 文档 | askyilife/README.md | Swift 开发指南 |
+| App 文档 | askyi-app/README.md | Capacitor 配置指南 |
+| 原型说明 | prototype-h5/README.md | 页面结构说明 |
+
+## 部署环境
+
+| 子项目 | 开发环境 | 生产环境 |
+|--------|----------|----------|
+| 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 |

+ 90 - 0
askyi/askyi-app/_project.md

@@ -0,0 +1,90 @@
+---
+project: askyi-app
+parent: askyi
+type: capacitor-shell
+kanban_id: d7d6096b-8e20-4fb5-a3d3-530d6bf12d37
+tech_stack:
+  - Capacitor 8
+  - Node.js 22
+  - pnpm
+code_path: /Users/jamesw/dev_workspace/askyi/organization/askyi-app
+---
+
+# askyi-app
+
+> Capacitor 纯套壳应用,加载 https://askyi.life
+
+## 技术栈
+
+| 技术 | 版本 | 用途 |
+|------|------|------|
+| Capacitor | 8 | 原生容器 |
+| Node.js | 22+ | 运行环境 (必须) |
+| pnpm | - | 包管理器 |
+
+## 应用信息
+
+- **App ID**: `io.askyi.community`
+- **App Name**: AskYi Community
+- **加载 URL**: https://www.askyi.life
+
+## 环境要求
+
+- Node.js >= 22 (Capacitor CLI v8 要求)
+- pnpm
+- Xcode (iOS)
+- Android Studio (Android)
+
+## 开发命令
+
+```bash
+cd /Users/jamesw/dev_workspace/askyi/organization/askyi-app/app
+
+# 安装依赖
+pnpm install
+
+# 同步到原生项目
+pnpm exec cap sync ios
+pnpm exec cap sync android
+
+# 打开 IDE
+pnpm exec cap open ios      # 打开 Xcode
+pnpm exec cap open android  # 打开 Android Studio
+```
+
+## 目录结构
+
+```
+askyi-app/
+├── app/
+│   ├── ios/              # iOS 原生代码
+│   ├── android/          # Android 原生代码
+│   ├── www/              # 占位目录 (必须存在)
+│   ├── capacitor.config.ts
+│   ├── package.json
+│   └── pnpm-lock.yaml
+├── docs/
+├── scripts/
+└── README.md
+```
+
+## 配置文件
+
+`app/capacitor.config.ts`:
+```typescript
+const config: CapacitorConfig = {
+  appId: 'io.askyi.community',
+  appName: 'AskYi Community',
+  webDir: 'www',
+  server: {
+    url: 'https://www.askyi.life',
+    cleartext: false,
+    allowNavigation: ['*.askyi.life', 'askyi.life', 'www.askyi.life'],
+  },
+};
+```
+
+## 当前状态
+
+- 纯套壳阶段,暂无原生能力
+- 后续计划:DeepLink、Share 等原生功能

+ 63 - 0
askyi/askyi-cms-railway/_project.md

@@ -0,0 +1,63 @@
+---
+project: askyi-cms-railway
+parent: askyi
+type: backend
+kanban_id: b986657a-68d8-4600-b2c8-e39466307ef6
+tech_stack:
+  - Strapi 5.19
+  - PostgreSQL
+  - Redis
+  - Cloudflare R2
+code_path: /Users/jamesw/dev_workspace/askyi/organization/askyi-cms-railway
+---
+
+# askyi-cms-railway
+
+> Headless CMS 后端,基于 Strapi 5,部署在 Railway
+
+## 技术栈
+
+| 技术 | 版本 | 用途 |
+|------|------|------|
+| Strapi | 5.19 | Headless CMS 框架 |
+| PostgreSQL | - | 主数据库 |
+| Redis | - | 缓存 |
+| Cloudflare R2 | - | 文件存储 |
+| ffmpeg | - | 视频处理 |
+| 腾讯云 SDK | - | 第三方服务 |
+
+## 开发命令
+
+```bash
+cd /Users/jamesw/dev_workspace/askyi/organization/askyi-cms-railway
+
+# 日常开发
+pnpm install          # 安装依赖
+pnpm run dev          # 本地开发 (localhost:1337)
+pnpm run build        # 构建
+
+# 配置同步
+pnpm run config:export    # 导出配置
+pnpm run config:import    # 导入配置
+pnpm run config:diff      # 查看配置差异
+
+# 数据库操作
+pnpm run db-backup:dev    # 备份开发环境数据库
+pnpm run db-backup:prod   # 备份生产环境数据库
+pnpm run sync:prod-to-dev # 同步生产数据到开发环境
+```
+
+## 环境配置
+
+| 文件 | 用途 |
+|------|------|
+| .env | 默认配置 |
+| .env.local | 本地开发 |
+| .env.staging | 预发布环境 |
+| .env.prod | 生产环境 |
+
+## 部署
+
+- **平台**: Railway
+- **配置**: railway.json
+- **自动部署**: 推送到 main 分支自动部署

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

@@ -0,0 +1,73 @@
+---
+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

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

@@ -0,0 +1,52 @@
+{
+	"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":"6"},
+		{"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":"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":"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":"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":"部署"}
+	]
+}

+ 82 - 0
askyi/askyi-uniapp/_project.md

@@ -0,0 +1,82 @@
+---
+project: askyi-uniapp
+parent: askyi
+type: miniprogram
+kanban_id: ba7aec6f-114f-49ed-b26b-4e9d234c15c4
+tech_stack:
+  - UniApp
+  - Vue 3
+  - Pinia
+  - TypeScript
+code_path: /Users/jamesw/dev_workspace/askyi/organization/askyi-uniapp
+---
+
+# askyi-uniapp
+
+> 问易社区微信小程序,基于 UniApp + Vue 3
+
+## 技术栈
+
+| 技术 | 版本 | 用途 |
+|------|------|------|
+| UniApp | - | 跨平台框架 |
+| Vue | 3.x | UI 框架 |
+| Pinia | - | 状态管理 |
+| TypeScript | 5.x | 类型安全 |
+| uView Plus | - | UI 组件库 |
+
+## 开发命令
+
+```bash
+cd /Users/jamesw/dev_workspace/askyi/organization/askyi-uniapp
+
+# 安装依赖
+pnpm install
+
+# 本地开发(H5)
+pnpm run dev:h5
+
+# 微信小程序开发
+pnpm run dev:mp-weixin
+
+# 构建微信小程序
+pnpm run build:mp-weixin
+```
+
+## 目录结构
+
+```
+askyi-uniapp/
+├── src/
+│   ├── api/              # API 接口层
+│   ├── components/       # Vue 3 组件
+│   ├── composables/      # 组合式函数
+│   ├── pages/            # 页面
+│   ├── stores/           # Pinia 状态管理
+│   ├── static/           # 静态资源
+│   ├── styles/           # 样式文件
+│   ├── types/            # TypeScript 类型
+│   └── utils/            # 工具函数
+├── pages.json            # 页面配置
+├── manifest.json         # 应用配置
+└── uni.scss              # 全局样式变量
+```
+
+## 与 askyi-h5 的关系
+
+从 askyi-h5 迁移核心功能,共享同一后端 API:
+
+```
+askyi-h5 (Next.js)      askyi-uniapp (UniApp)
+        ↘                    ↙
+         askyi-cms-railway (Strapi)
+```
+
+## 开发阶段
+
+| Phase | 功能 | 优先级 |
+|-------|------|--------|
+| 1 | 首页、发现、登录、注册、个人中心、文章详情 | P0 |
+| 2 | 专家列表/详情、视频流/播放、搜索 | P1 |
+| 3 | 占卜功能(金钱卦、摇卦、求签、今日运势) | P2 |
+| 4 | 课程、咨询、消息、支付 | P3 |

+ 40 - 0
askyi/askyi-uniapp/architecture.canvas

@@ -0,0 +1,40 @@
+{
+  "nodes": [
+    {"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":-2400,"y":-1600,"width":400,"height":340,"color":"6"},
+    {"id":"pages_core","type":"text","text":"## Phase 1: 核心页面\n\n**pages/home/**\n- index.vue 首页\n- components/ 首页组件\n\n**pages/explore/**\n- index.vue 发现页\n- components/ 发现组件\n\n**pages/auth/**\n- login.vue 登录\n- register.vue 注册\n- forgot-password.vue 忘记密码\n\n**pages/profile/**\n- index.vue 个人中心\n- edit.vue 编辑资料\n- settings.vue 设置","x":-1600,"y":-1920,"width":300,"height":600,"color":"3"},
+    {"id":"pages_content","type":"text","text":"## Phase 2: 内容页面\n\n**pages/article/**\n- list.vue 文章列表\n- detail.vue 文章详情\n\n**pages/expert/**\n- list.vue 专家列表\n- detail.vue 专家详情\n\n**pages/video/**\n- feed.vue 视频流\n- player.vue 视频播放\n\n**pages/search/**\n- index.vue 搜索\n- result.vue 搜索结果","x":-1200,"y":-1920,"width":300,"height":560,"color":"3"},
+    {"id":"pages_divination","type":"text","text":"## Phase 3: 占卜功能\n\n**pages/divination/**\n- index.vue 占卜首页\n- coins.vue 金钱卦\n- shake.vue 摇卦\n- stick.vue 求签\n- today.vue 今日运势\n- history.vue 占卜历史\n- name.vue 姓名测算","x":-800,"y":-1920,"width":300,"height":440,"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":-400,"y":-1920,"width":300,"height":480,"color":"5"},
+    {"id":"comp_layout","type":"text","text":"## 布局组件\n\n**components/layout/**\n- TabBar.vue 底部导航\n- NavBar.vue 顶部导航\n- BackHeader.vue 返回头部\n- AppLayout.vue 应用布局\n\n**样式**\n- layout.scss 布局样式","x":-1600,"y":-1200,"width":280,"height":360,"color":"4"},
+    {"id":"comp_content","type":"text","text":"## 内容组件\n\n**components/content/**\n- ArticleCard.vue 文章卡片\n- ArticleItem.vue 文章项\n- VideoCard.vue 视频卡片\n- ExpertCard.vue 专家卡片\n- CourseCard.vue 课程卡片\n\n**列表组件**\n- InfiniteScroll.vue 无限滚动\n- Waterfall.vue 瀑布流","x":-1200,"y":-1200,"width":280,"height":400,"color":"4"},
+    {"id":"comp_interactive","type":"text","text":"## 交互组件\n\n**components/interactive/**\n- FollowButton.vue 关注按钮\n- ReactionButton.vue 点赞收藏\n- ConsultButton.vue 咨询按钮\n- ShareButton.vue 分享按钮\n\n**表单组件**\n- SearchInput.vue 搜索输入\n- CategoryNav.vue 分类导航\n- TagsList.vue 标签列表","x":-800,"y":-1200,"width":280,"height":400,"color":"4"},
+    {"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":-1200,"width":280,"height":360,"color":"1"},
+    {"id":"comp_common","type":"text","text":"## 通用组件\n\n**components/common/**\n- Loading.vue 加载状态\n- Empty.vue 空状态\n- ErrorPage.vue 错误页\n- Toast.vue 提示\n- Modal.vue 弹窗\n- Icon.vue 图标","x":0,"y":-1200,"width":260,"height":320,"color":"4"},
+    {"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":400,"y":-1800,"width":320,"height":480,"color":"1"},
+    {"id":"composables","type":"text","text":"## Composables 组合式函数\n\n**composables/**\n- useAuth.ts 认证状态\n- useUser.ts 用户信息\n- useFollow.ts 关注操作\n- useReaction.ts 点赞收藏\n- useInfiniteScroll.ts 无限滚动\n- useRequest.ts 请求封装\n- useToast.ts 提示消息","x":400,"y":-1200,"width":280,"height":360,"color":"5"},
+    {"id":"stores","type":"text","text":"## Pinia 状态管理\n\n**stores/**\n- user.ts 用户状态\n- auth.ts 认证状态\n- app.ts 应用状态\n- video.ts 视频状态\n\n**持久化**\n- 使用 uni.setStorageSync\n- 自动同步本地存储","x":800,"y":-1200,"width":280,"height":360,"color":"5"},
+    {"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":800,"y":-720,"width":260,"height":320,"color":"2"},
+    {"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":1200,"y":-1200,"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":1200,"y":-720,"width":280,"height":380,"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":1600,"y":-1200,"width":280,"height":400,"color":"4"},
+    {"id":"project_structure","type":"text","text":"## 项目结构\n\n```\nsrc/\n├── api/          # API 接口\n├── components/   # 组件\n├── composables/  # 组合函数\n├── pages/        # 页面\n├── stores/       # 状态管理\n├── static/       # 静态资源\n├── styles/       # 样式\n├── types/        # 类型\n└── utils/        # 工具\n```","x":-1600,"y":-680,"width":320,"height":360,"color":"6"},
+    {"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":500,"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":420,"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":360,"color":"2"}
+  ],
+  "edges": [
+    {"id":"e1","fromNode":"pages_core","fromSide":"bottom","toNode":"comp_layout","toSide":"top","label":"使用"},
+    {"id":"e2","fromNode":"pages_content","fromSide":"bottom","toNode":"comp_content","toSide":"top","label":"使用"},
+    {"id":"e3","fromNode":"pages_divination","fromSide":"bottom","toNode":"comp_interactive","toSide":"top","label":"使用"},
+    {"id":"e4","fromNode":"pages_advanced","fromSide":"bottom","toNode":"comp_media","toSide":"top","label":"使用"},
+    {"id":"e5","fromNode":"comp_content","fromSide":"right","toNode":"api_layer","toSide":"left","label":"调用"},
+    {"id":"e6","fromNode":"comp_interactive","fromSide":"right","toNode":"composables","toSide":"left","label":"使用"},
+    {"id":"e7","fromNode":"composables","fromSide":"right","toNode":"stores","toSide":"left","label":"状态"},
+    {"id":"e8","fromNode":"composables","fromSide":"top","toNode":"api_layer","toSide":"bottom","label":"请求"},
+    {"id":"e9","fromNode":"stores","fromSide":"bottom","toNode":"utils","toSide":"top","label":"工具"},
+    {"id":"e10","fromNode":"api_layer","fromSide":"right","toNode":"types","toSide":"left","label":"类型"},
+    {"id":"e11","fromNode":"utils","fromSide":"right","toNode":"backend","toSide":"left","label":"HTTP"},
+    {"id":"e12","fromNode":"types","fromSide":"bottom","toNode":"config","toSide":"top"},
+    {"id":"e13","fromNode":"project_structure","fromSide":"right","toNode":"data_flow","toSide":"left"}
+  ]
+}

+ 85 - 0
askyi/askyilife/_project.md

@@ -0,0 +1,85 @@
+---
+project: askyilife
+parent: askyi
+type: ios-native
+kanban_id: 0d65b167-7cff-4496-845a-3b3385223014
+tech_stack:
+  - Swift 5.9
+  - SwiftUI
+  - MVVM
+code_path: /Users/jamesw/dev_workspace/askyi/organization/askyilife
+---
+
+# askyilife
+
+> 问易社区 iOS 原生应用,基于 Swift 5.9 + SwiftUI
+
+## 技术栈
+
+| 技术 | 版本 | 用途 |
+|------|------|------|
+| Swift | 5.9+ | 开发语言 |
+| SwiftUI | - | UI 框架 |
+| MVVM | - | 架构模式 |
+| MarkdownUI | 2.4.1+ | Markdown 渲染 |
+| Kingfisher | 8.6.2+ | 图片加载缓存 |
+
+## 环境要求
+
+- macOS 14.0+
+- Xcode 15.0+
+- Swift 5.9+
+- iOS 16.6+ (最低支持版本)
+
+## 开发命令
+
+```bash
+cd /Users/jamesw/dev_workspace/askyi/organization/askyilife
+
+# 环境设置
+make setup            # 安装开发工具
+brew bundle           # 安装 Homebrew 依赖
+
+# 日常开发
+make lint             # 代码检查 (SwiftLint)
+make format           # 代码格式化 (SwiftFormat)
+make build            # 构建项目
+make test             # 运行测试
+make clean            # 清理构建
+make help             # 查看所有命令
+
+# 或用 Xcode
+open askyilife.xcodeproj
+```
+
+## 目录结构
+
+```
+askyilife/
+├── App/              # App 入口
+├── Core/             # 核心服务
+│   ├── Network/      # 网络层
+│   ├── Storage/      # 存储层
+│   └── Extensions/   # 扩展
+├── Models/           # 数据模型
+├── ViewModels/       # 视图模型
+├── Views/            # 视图层
+│   ├── Article/
+│   ├── Home/
+│   ├── Profile/
+│   ├── Publish/
+│   └── Video/
+└── Resources/        # 资源文件
+```
+
+## 环境配置
+
+| 文件 | 用途 |
+|------|------|
+| Configs/Debug.xcconfig | 开发环境 |
+| Configs/Release.xcconfig | 生产环境 |
+| Configs/Secrets.xcconfig | API 密钥 (不提交) |
+
+## Bundle ID
+
+`com.askyi.askyilife`

+ 87 - 0
askyi/prototype-h5/_project.md

@@ -0,0 +1,87 @@
+---
+project: prototype-h5
+parent: askyi
+type: prototype
+kanban_id: f435fea5-30f5-449d-8e8f-2d493e9af168
+tech_stack:
+  - HTML
+  - CSS
+  - JavaScript
+code_path: /Users/jamesw/dev_workspace/askyi/organization/prototype-h5
+---
+
+# prototype-h5
+
+> 问易社区移动应用 UI 原型,静态 HTML 页面
+
+## 用途
+
+- UI 设计参考
+- 交互原型验证
+- 页面结构规划
+
+## 目录结构
+
+```
+prototype-h5/
+├── css/              # CSS 样式文件
+│   ├── main.css      # 主要样式
+│   └── ...           # 各页面专用样式
+├── includes/         # 页面内容片段
+│   ├── header.html   # 头部模板
+│   ├── footer.html   # 尾部模板
+│   └── ...
+├── js/               # JavaScript 文件
+│   ├── components.js # 组件加载函数
+│   ├── templates.js  # HTML 模板函数
+│   └── utils.js      # 工具函数
+├── pages/            # 页面文件
+│   ├── home.html     # 首页
+│   ├── login.html    # 登录页面
+│   └── ...
+├── assets/           # 资源文件
+├── examples/         # 示例和文档
+└── index.html        # 入口页面
+```
+
+## 页面分类
+
+### 核心基础页面
+
+- 首页 (home.html)
+- 登录 (login.html)
+- 注册 (register.html)
+- 个人资料 (profile.html)
+- 设置 (settings.html)
+- 文章详情 (article_detail.html)
+- 大师主页 (master_profile.html)
+
+### 功能模块
+
+- **关注**: 订阅内容流
+- **发现**: 推荐、易经八卦、风水指南等
+- **案例**: 家居风水、办公风水、婚恋分析等
+- **问答**: 热门、命理、风水、婚恋
+
+## 使用方式
+
+```bash
+cd /Users/jamesw/dev_workspace/askyi/organization/prototype-h5
+
+# 直接用浏览器打开
+open index.html
+
+# 或使用本地服务器
+python -m http.server 8000
+# 访问 http://localhost:8000
+```
+
+## 与 askyi-h5 的关系
+
+prototype-h5 是设计阶段的参考,askyi-h5 是实际实现:
+
+```
+prototype-h5 (设计) → askyi-h5 (实现)
+```
+
+开发新功能时,可先在 prototype-h5 中验证 UI 设计。

+ 242 - 0
workflow.md

@@ -0,0 +1,242 @@
+# 开发工作流
+
+> 本文档描述 Obsidian + Vibe Kanban + Claude Code 三者协作的工作流程
+
+## 三者角色定位
+
+| 角色 | 定位 | 特点 |
+|------|------|------|
+| **Obsidian** | 设计中心 | 批量规划、可视化设计、长期文档 |
+| **Vibe Kanban** | 任务中心 | 状态管理、进度追踪、快速创建 |
+| **Claude Code** | 执行中心 | 连接两者,执行开发 |
+
+## 任务创建的两种路径
+
+### 路径 A:从 Kanban 直接创建(快速任务)
+
+```
+用户在 Kanban 创建任务
+         ↓
+Claude Code 读取任务
+         ↓
+Claude Code 查阅 Obsidian 文档理解上下文
+         ↓
+执行开发
+         ↓
+更新 Kanban 状态
+```
+
+**适用场景**:bug 修复、小功能迭代、不需要详细设计的任务
+
+### 路径 B:从 Obsidian Canvas 批量创建(规划任务)
+
+```
+用户在 Obsidian Canvas 设计架构
+         ↓
+添加任务卡片(带 project/depends 字段)
+         ↓
+Claude Code 解析 Canvas
+         ↓
+同步到对应的 Kanban 项目
+         ↓
+按依赖顺序执行开发
+         ↓
+更新 Kanban 状态
+```
+
+**适用场景**:新功能规划、前后端联动开发、批量任务创建
+
+## 数据同步方向
+
+| 从 → 到 | 方式 | 说明 |
+|---------|------|------|
+| Obsidian → Kanban | 手动命令 | Canvas 任务卡片同步到看板 |
+| Kanban → Claude | 自动读取 | 开发时读取任务列表 |
+| Claude → Kanban | 自动更新 | 完成后更新任务状态 |
+| Obsidian → Claude | 只读查阅 | 读取架构文档理解需求 |
+
+## 三者关系
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│  Obsidian (文档中心 - 单一数据源)                                  │
+│  路径: /Users/jamesw/dev_workspace/vibe-coding-cn/tg-live-game   │
+│  ├── 架构设计 (*.canvas)                                         │
+│  ├── 需求文档                                                    │
+│  └── 任务卡片 → 同步到 Kanban                                     │
+└─────────────────────────────────────────────────────────────────┘
+                         ↓ 读取文档 / 同步任务
+┌─────────────────────────────────────────────────────────────────┐
+│  Vibe Kanban (任务管理)                                           │
+│  ├── tg-live-game-hono: 7c6bb2ce-90a2-4e96-bc04-5facdcdb337f    │
+│  ├── tg-live-game-web:  32214e97-f833-485f-8c7c-cf4d82327e0b    │
+│  └── 任务状态: todo → inprogress → inreview → done               │
+└─────────────────────────────────────────────────────────────────┘
+                         ↓ 领取任务 / 执行开发
+┌─────────────────────────────────────────────────────────────────┐
+│  Claude Code (代码开发)                                           │
+│  启动目录: /Users/jamesw/dev_workspace/frontend/tg-live-game/    │
+│  ├── tg-live-game-hono/  (后端)                                  │
+│  └── tg-live-game-web/   (前端)                                  │
+└─────────────────────────────────────────────────────────────────┘
+```
+
+## 多项目协作工作流
+
+### 场景:同时设计前后端功能
+
+当一个功能需要前后端同时开发时(如"用户列表"功能):
+
+```
+1. Obsidian 设计阶段
+   ├── 在 canvas 画架构图
+   └── 创建两个关联的任务卡片
+       ├── 任务20260103-01-hono (后端 API)
+       └── 任务20260103-01-web  (前端页面)
+
+2. 任务同步阶段
+   ├── 解析任务卡片的 project 字段
+   ├── hono 任务 → tg-live-game-hono Kanban
+   └── web 任务 → tg-live-game-web Kanban
+
+3. Claude Code 开发阶段
+   ├── 在父目录 tg-live-game 启动
+   ├── 读取关联任务,理解依赖关系
+   ├── 先开发后端 (depends 优先)
+   └── 再开发前端
+
+4. 代码提交阶段
+   ├── cd tg-live-game-hono && git commit
+   └── cd tg-live-game-web && git commit
+```
+
+## 任务卡片格式
+
+### 单项目任务
+
+```
+任务YYYYMMDD-NN
+
+任务标题
+
+project: tg-live-game-hono
+
+1. 需求描述
+2. 具体要求
+```
+
+### 关联任务(前后端)
+
+**后端任务**:
+```
+任务YYYYMMDD-NN-hono
+─────────────────
+后端:用户列表 API
+
+project: tg-live-game-hono
+related: 任务YYYYMMDD-NN-web
+
+1. 实现 GET /api/users
+2. 返回分页数据
+```
+
+**前端任务**:
+```
+任务YYYYMMDD-NN-web
+─────────────────
+前端:用户列表页面
+
+project: tg-live-game-web
+related: 任务YYYYMMDD-NN-hono
+depends: 任务YYYYMMDD-NN-hono
+
+1. 调用用户列表 API
+2. 表格展示用户数据
+```
+
+### 字段说明
+
+| 字段 | 含义 | 用途 |
+|------|------|------|
+| `project` | 目标 Kanban 项目名 | 决定任务创建到哪个看板 |
+| `related` | 关联任务编号 | 表示任务之间的关系 |
+| `depends` | 依赖任务编号 | 表示需要先完成的任务 |
+
+## 文件路径映射
+
+| 位置 | 路径 | 用途 |
+|------|------|------|
+| Obsidian 项目文档 | `vibe-coding-cn/tg-live-game/` | 架构设计、需求文档 |
+| Obsidian 后端文档 | `vibe-coding-cn/tg-live-game/tg-live-game-hono/` | 后端架构 |
+| Obsidian 前端文档 | `vibe-coding-cn/tg-live-game/tg-live-game-web/` | 前端架构 |
+| 代码父目录 | `frontend/tg-live-game/` | Claude Code 启动位置 |
+| 后端代码 | `frontend/tg-live-game/tg-live-game-hono/` | Hono API |
+| 前端代码 | `frontend/tg-live-game/tg-live-game-web/` | Vue 应用 |
+
+## Claude Code 启动说明
+
+```bash
+# 多项目开发(推荐)
+cd /Users/jamesw/dev_workspace/frontend/tg-live-game
+claude
+
+# 单项目开发(仅后端)
+cd /Users/jamesw/dev_workspace/frontend/tg-live-game/tg-live-game-hono
+claude
+
+# 单项目开发(仅前端)
+cd /Users/jamesw/dev_workspace/frontend/tg-live-game/tg-live-game-web
+claude
+```
+
+## 交替式开发模式(批量任务)
+
+当 Obsidian 一次性创建多个前后端任务,需要交替开发和验证时:
+
+### 依赖链设计
+
+用 `depends` 字段串联任务,形成执行顺序:
+
+```
+任务01-hono (后端 API A)     ← 无依赖,最先执行
+    ↓
+任务01-web  (前端调用 A)     depends: 任务01-hono
+    ↓
+任务02-hono (后端 API B)     depends: 任务01-web
+    ↓
+任务02-web  (前端调用 B)     depends: 任务02-hono
+    ↓
+...
+```
+
+### Canvas 中的表示
+
+```
+┌──────────────────┐     ┌──────────────────┐
+│ 任务01-hono      │ ──→ │ 任务01-web       │
+│ 后端:用户列表   │     │ 前端:用户列表   │
+│ project: hono    │     │ depends: 01-hono │
+└──────────────────┘     └──────────────────┘
+                              │
+                              ↓ depends
+┌──────────────────┐     ┌──────────────────┐
+│ 任务02-hono      │ ──→ │ 任务02-web       │
+│ 后端:用户详情   │     │ 前端:用户详情   │
+│ depends: 01-web  │     │ depends: 02-hono │
+└──────────────────┘     └──────────────────┘
+```
+
+### 执行顺序
+
+Claude Code 按 `depends` 链自动排序执行:
+1. 任务01-hono → 开发后端 API A
+2. 任务01-web → 开发前端调用 A,验证
+3. 任务02-hono → 开发后端 API B
+4. 任务02-web → 开发前端调用 B,验证
+
+## 相关文档
+
+- [[architecture-v1]] - 整体系统架构
+- [[tg-live-game-hono/_project]] - 后端项目配置
+- [[tg-live-game-hono/workflow]] - 后端开发工作流
+- [[tg-live-game-web/_project]] - 前端项目配置