@templmf/temp-solf-lmf 0.0.55 → 0.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/package.json +1 -1
  2. package//345/242/236/351/207/217/351/234/200/346/261/202prompt +72 -0
  3. package/guanwang/README.md +0 -95
  4. package/guanwang/docs/changelog.md +0 -145
  5. package/guanwang/docs/doc-maintenance.md +0 -229
  6. package/guanwang/docs/product.md +0 -181
  7. package/guanwang/docs/test-cases.md +0 -395
  8. package/guanwang/docs/usage.md +0 -291
  9. package/guanwang/env.example +0 -27
  10. package/guanwang/index.html +0 -13
  11. package/guanwang/package-lock.json +0 -3825
  12. package/guanwang/package.json +0 -32
  13. package/guanwang/public/favicon.svg +0 -4
  14. package/guanwang/public/react-runtime/babel.min.js +0 -4
  15. package/guanwang/public/react-runtime/react-dom.min.js +0 -267
  16. package/guanwang/public/react-runtime/react.min.js +0 -31
  17. package/guanwang/public/vue-repl-assets/compiler-sfc.esm-browser.js +0 -50795
  18. package/guanwang/public/vue-repl-assets/runtime-dom.esm-browser.js +0 -12758
  19. package/guanwang/public/vue-repl-assets/server-renderer.esm-browser.js +0 -8600
  20. package/guanwang/public/vue-repl-assets/vue.esm-browser.js +0 -18672
  21. package/guanwang/src/App.vue +0 -61
  22. package/guanwang/src/chat-sdk/core/components/ChatBox.vue +0 -305
  23. package/guanwang/src/chat-sdk/core/components/ChatSidebar.vue +0 -84
  24. package/guanwang/src/chat-sdk/core/components/InputBar.vue +0 -354
  25. package/guanwang/src/chat-sdk/core/components/MessageBubble.vue +0 -703
  26. package/guanwang/src/chat-sdk/core/useTheme.js +0 -31
  27. package/guanwang/src/chat-sdk/features/artifact/ArtifactCard.vue +0 -172
  28. package/guanwang/src/chat-sdk/features/artifact/ArtifactPanel.vue +0 -963
  29. package/guanwang/src/chat-sdk/features/artifact/index.js +0 -13
  30. package/guanwang/src/chat-sdk/features/artifact/useArtifactStore.js +0 -275
  31. package/guanwang/src/chat-sdk/features/codepreview/CodePreview.vue +0 -523
  32. package/guanwang/src/chat-sdk/features/codepreview/index.js +0 -7
  33. package/guanwang/src/chat-sdk/features/markdown/index.js +0 -13
  34. package/guanwang/src/chat-sdk/features/markdown/useMarkdown.js +0 -724
  35. package/guanwang/src/chat-sdk/features/mermaid/MermaidZoom.vue +0 -254
  36. package/guanwang/src/chat-sdk/features/upload/FileAttachment.vue +0 -142
  37. package/guanwang/src/chat-sdk/features/upload/index.js +0 -17
  38. package/guanwang/src/chat-sdk/features/upload/useFileHandler.js +0 -336
  39. package/guanwang/src/chat-sdk/headless/api/adapters/openai.js +0 -76
  40. package/guanwang/src/chat-sdk/headless/api/chatApi.js +0 -126
  41. package/guanwang/src/chat-sdk/headless/buildSystemPrompt.js +0 -351
  42. package/guanwang/src/chat-sdk/headless/index.js +0 -15
  43. package/guanwang/src/chat-sdk/headless/useChat.js +0 -77
  44. package/guanwang/src/chat-sdk/headless/useChatDB.js +0 -147
  45. package/guanwang/src/chat-sdk/headless/useChatStore.js +0 -529
  46. package/guanwang/src/chat-sdk/index.js +0 -79
  47. package/guanwang/src/chat-sdk/modes/architect.js +0 -27
  48. package/guanwang/src/chat-sdk/modes/ask.js +0 -26
  49. package/guanwang/src/chat-sdk/modes/code.js +0 -25
  50. package/guanwang/src/chat-sdk/modes/index.js +0 -36
  51. package/guanwang/src/chat-sdk/modes/requirements.js +0 -175
  52. package/guanwang/src/chat-sdk/settings/SettingsPanel.vue +0 -170
  53. package/guanwang/src/chat-sdk/settings/index.js +0 -9
  54. package/guanwang/src/chat-sdk/settings/useSettings.js +0 -122
  55. package/guanwang/src/chat-sdk/tools/defaults.js +0 -89
  56. package/guanwang/src/chat-sdk/tools/index.js +0 -16
  57. package/guanwang/src/chat-sdk/tools/parser.js +0 -116
  58. package/guanwang/src/components/CustomCursor.vue +0 -69
  59. package/guanwang/src/components/Footer.vue +0 -24
  60. package/guanwang/src/components/LoginModal.vue +0 -109
  61. package/guanwang/src/components/Navbar.vue +0 -193
  62. package/guanwang/src/components/ThemeToggle.vue +0 -25
  63. package/guanwang/src/composables/useArtifactStore.js +0 -253
  64. package/guanwang/src/composables/useAuth.js +0 -88
  65. package/guanwang/src/composables/useChatDB.js +0 -147
  66. package/guanwang/src/composables/useCountUp.js +0 -24
  67. package/guanwang/src/composables/useFileHandler.js +0 -345
  68. package/guanwang/src/composables/useTheme.js +0 -31
  69. package/guanwang/src/config/api.js +0 -71
  70. package/guanwang/src/main.js +0 -23
  71. package/guanwang/src/router/index.js +0 -23
  72. package/guanwang/src/services/authApi.js +0 -27
  73. package/guanwang/src/services/chatApi.js +0 -66
  74. package/guanwang/src/styles/global.css +0 -478
  75. package/guanwang/src/tracker/analyze.js +0 -73
  76. package/guanwang/src/tracker/config.js +0 -82
  77. package/guanwang/src/tracker/index.js +0 -18
  78. package/guanwang/src/tracker/service.js +0 -102
  79. package/guanwang/src/tracker/useChatTracker.js +0 -179
  80. package/guanwang/src/tracker/useTracker.js +0 -45
  81. package/guanwang/src/views/ChatView.vue +0 -65
  82. package/guanwang/src/views/HomeView.vue +0 -156
  83. package/guanwang/src/views/MarketView.vue +0 -143
  84. package/guanwang/src/views/PracticesView.vue +0 -190
  85. package/guanwang/src/views/SkillsView.vue +0 -129
  86. package/guanwang/temp +0 -19
  87. package/guanwang/vite.config.js +0 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@templmf/temp-solf-lmf",
3
- "version": "0.0.55",
3
+ "version": "0.0.56",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,72 @@
1
+ # Role
2
+ 你是一名资深前端工程师,负责在现有项目基础上开发新增功能。
3
+ 你写的代码必须与现有项目风格完全一致,不得引入新的写法或依赖。
4
+
5
+ # 前置步骤:提取项目规范
6
+ 在处理新需求之前,先扫描以下文件,提取项目的编码规范:
7
+
8
+ 1. 组件库
9
+ - 使用的是哪个 UI 库(Ant Design / Element Plus / ...)
10
+ - 常用组件的使用方式(Table / Form / Modal / Button ...)
11
+ - 有无自定义封装的业务组件,在哪个目录
12
+
13
+ 2. 接口调用方式
14
+ - request 封装在哪里,如何调用
15
+ - 接口统一管理的目录结构(api / services / ...)
16
+ - 错误处理方式(统一拦截 / 局部处理)
17
+
18
+ 3. 状态管理
19
+ - 使用方式(Redux / Pinia / Zustand / hooks ...)
20
+ - 数据流的典型写法,找一个现有页面作为参考
21
+
22
+ 4. 路由结构
23
+ - 路由文件位置和写法
24
+ - 动态路由 / 权限路由的处理方式
25
+
26
+ 5. 目录结构
27
+ - 页面、组件、hooks、utils 各自放在哪里
28
+ - 文件命名规范(驼峰 / 横线 / 下划线)
29
+
30
+ 输出:项目规范摘要,包含上述每项的具体写法示例。
31
+ 确认规范后,后续所有代码严格对齐,不得偏离。
32
+
33
+ ---
34
+
35
+ ## Step 1:增量需求理解(读软需文档)
36
+ 输出:
37
+ - 新增页面清单 or 在哪个现有页面上改动
38
+ - 可复用的现有组件(含路径)
39
+ - 需要新建的组件
40
+ - 影响范围:改动是否波及现有功能
41
+
42
+ ## Step 2:交互分析(读交互图)
43
+ 输出:
44
+ - 新增组件树(标注复用 / 新建,标注使用哪个 UI 组件)
45
+ - 新增或修改的状态清单
46
+ - 影响范围评估
47
+
48
+ ## Step 3:接口映射(读接口文档)
49
+ 输出:
50
+ | 操作 | 接口路径 | Method | 请求字段 | 响应字段 | 备注 |
51
+ - 新接口文件应放在哪个目录
52
+ - 调用方式与现有 request 封装是否兼容
53
+
54
+ ## Step 4:编写增量代码
55
+ 按顺序执行:
56
+ 1. 新增路由(遵循现有路由写法)
57
+ 2. 新增接口文件(遵循现有 api 目录结构)
58
+ 3. 复用或新建组件(UI 组件使用现有组件库)
59
+ 4. 接入状态管理(遵循现有数据流写法)
60
+ 5. 边界处理(loading / 空态 / 错误处理方式与现有一致)
61
+
62
+ ---
63
+
64
+ # 约束
65
+ - 每步必须先输出分析,不得直接跳到写代码
66
+ - 字段名严格对照接口文档,不得自行命名
67
+ - UI 组件只使用项目现有组件库,不引入新依赖
68
+ - 接口调用只使用现有 request 封装,不直接用原生 fetch / axios
69
+ - 只新增,不重构,有冲突先提出来等待确认
70
+ - 不得修改与本次需求无关的现有代码
71
+ - 有歧义时先列出疑问,等待确认再继续
72
+ - 技术栈:[填入]
@@ -1,95 +0,0 @@
1
- # Citic Frontend(Vue 3 版)
2
-
3
- 基于 **Vue 3 + Vite + Vue Router v4** 构建的Citic Frontend AI体验平台。
4
-
5
- ## 快速启动
6
-
7
- ```bash
8
- # 1. 安装依赖(需要 Node 18+)
9
- npm install
10
-
11
- # 2. 配置环境变量
12
- cp .env.local.example .env.local
13
- # 编辑 .env.local,填入模型 API 地址和 Key
14
-
15
- # 3. 启动开发服务器
16
- npm run dev
17
-
18
- # 4. 打包生产版本
19
- npm run build
20
- ```
21
-
22
- ## 环境变量
23
-
24
- | 变量名 | 说明 | 示例 |
25
- |---|---|---|
26
- | `VITE_API_BASE_URL` | 模型 API 地址(OpenAI 兼容) | `https://api.openai.com` |
27
- | `VITE_API_KEY` | API Key | `sk-xxxx` |
28
- | `VITE_MODEL` | 模型名称 | `gpt-4o` |
29
-
30
- ## 项目结构
31
-
32
- ```
33
- src/
34
- ├── config/
35
- │ └── api.js # API 配置(读取 .env.local)
36
- ├── services/
37
- │ ├── chatApi.js # OpenAI 兼容流式请求封装
38
- │ └── authApi.js # 登录/登出(mock,可替换为真实接口)
39
- ├── composables/ # 对应 React Hooks
40
- │ ├── useAuth.js # 全局用户状态(provide/inject)
41
- │ ├── useChatStore.js # 聊天会话状态管理
42
- │ ├── useTheme.js # 主题(深色/浅色)
43
- │ └── useCountUp.js # 数字滚动动画
44
- ├── components/
45
- │ ├── Navbar.vue # 导航栏(含登录入口、用户头像下拉)
46
- │ ├── LoginModal.vue # 登录弹框
47
- │ ├── ChatInputBar.vue # 聊天输入框
48
- │ ├── ChatSidebar.vue # 聊天侧边栏
49
- │ ├── MessageBubble.vue # 消息气泡
50
- │ ├── ThemeToggle.vue # 主题切换按钮
51
- │ ├── Footer.vue
52
- │ └── CustomCursor.vue # 自定义鼠标(桌面端)
53
- ├── views/
54
- │ ├── HomeView.vue # 首页
55
- │ ├── ChatView.vue # AI 对话页
56
- │ ├── MarketView.vue # 组件市场
57
- │ ├── SkillsView.vue # Skills 市场
58
- │ └── PracticesView.vue # 最佳实践
59
- ├── router/
60
- │ └── index.js # Vue Router v4 路由配置
61
- ├── styles/
62
- │ └── global.css # CSS 变量 + 全局工具类
63
- ├── App.vue # 根组件
64
- └── main.js # 入口文件
65
- ```
66
-
67
- ## 路由
68
-
69
- | 路径 | 页面 |
70
- |---|---|
71
- | `/` | 首页 |
72
- | `/chat` | AI 对话(需登录) |
73
- | `/market` | 组件市场 |
74
- | `/skills` | Skills 市场 |
75
- | `/practices` | 最佳实践 |
76
-
77
- ## 登录账号(mock)
78
-
79
- | 账号 | 密码 | 角色 |
80
- |---|---|---|
81
- | `admin` | `admin123` | 管理员 |
82
- | `dev` | `dev123` | 开发者 |
83
-
84
- ## React → Vue 3 迁移说明
85
-
86
- | React 原始方案 | Vue 3 方案 |
87
- |---|---|
88
- | `createContext` + `useContext` | `provide` / `inject` |
89
- | `useState` / `useRef` | `ref` |
90
- | `useMemo` | `computed` |
91
- | `useEffect` + `IntersectionObserver` | `onMounted` + `onUnmounted` |
92
- | `useCallback` | 普通函数(Vue 响应性系统不需要) |
93
- | JSX 内联子组件 | 拆分为独立 `.vue` 文件 |
94
- | `lucide-react` | `lucide-vue-next` |
95
- | `react-router-dom` | `vue-router` |
@@ -1,145 +0,0 @@
1
- # Changelog
2
-
3
- ## [1.1.0] — 2025-03-20
4
-
5
- ### 新增:埋点系统
6
-
7
- - `src/tracker/config.js`:埋点总配置,Ackee URL/Domain 从环境变量读取,21 个 Event UUID 集中管理,意图关键词字典和复杂度阈值可配置,`VITE_TRACK_ENABLED=false` 时全部静默
8
- - `src/tracker/analyze.js`:本地分析函数,提问方向/意图/复杂度/附件类型全部本地判断,不上报原文
9
- - `src/tracker/service.js`:Ackee 实例懒加载 + 上报队列,避免初始化期间丢事件
10
- - `src/tracker/useTracker.js`:官网页面埋点(`pageView` / `btnClick` / `loginSuccess`)
11
- - `src/tracker/useChatTracker.js`:对话框埋点,覆盖发消息、回复完成/报错/中止、模式切换、复制、下载,提问内容分析无用户关联
12
- - `src/tracker/index.js`:统一导出入口
13
-
14
- **埋点覆盖范围(21 个 Ackee Event)**
15
- - 页面行为 3 个:页面访问、按钮点击、登录成功
16
- - 对话行为 8 个:消息发送-模式/模型/用户、回复耗时、首字节延迟、中止、报错、模式切换
17
- - 采纳行为 5 个:内容复制-来源/用户/语言、文件下载-用户/语言
18
- - 提问内容分析 4 个:方向、意图、复杂度、附件(无用户关联)
19
- - 工具调用 1 个
20
-
21
- **采纳率三口径**:消息级、会话级、用户级,共用同一批事件,聚合 key 不同
22
-
23
- ### 变更:useChatStore
24
-
25
- - 新增 `config.getUser` 注入接口,消费方传入获取当前用户信息的函数
26
- - `return` 新增 `tracker` 字段,供 `ArtifactPanel` / `MessageBubble` 调用采纳行为埋点
27
- - `abortStream()` 和 `switchMode()` 内置埋点调用
28
-
29
- ### 文档
30
- - `docs/product.md` 新增「埋点与数据分析」章节
31
- - `docs/usage.md` 新增「埋点接入」章节,补充三个埋点环境变量
32
- - `docs/test-cases.md` 新增「十一、埋点」章节,16 个测试用例(T-100 ~ T-115)
33
- - `docs/doc-maintenance.md` 新增埋点维护规范
34
-
35
- ---
36
-
37
- ## [1.1.0] — 2025-03-20
38
-
39
- ### 新增:埋点系统
40
-
41
- - `src/tracker/config.js`:埋点总配置,Ackee URL/Domain/开关从 `.env` 读取,21 个 Event UUID 集中管理,意图关键词字典、模式方向映射、复杂度阈值全部可配置
42
- - `src/tracker/analyze.js`:提问内容本地分析,输出方向/意图/复杂度/附件类型,不上报原文
43
- - `src/tracker/service.js`:Ackee 实例懒加载 + 上报队列,`TRACK_ENABLED=false` 时全部静默
44
- - `src/tracker/useTracker.js`:官网页面埋点 composable(`pageView` / `btnClick` / `loginSuccess`)
45
- - `src/tracker/useChatTracker.js`:对话框全量埋点 composable(发消息、回复完成/报错/中止、模式切换、复制、下载)
46
- - `src/tracker/index.js`:统一入口
47
-
48
- ### 埋点
49
-
50
- 共 21 个 Ackee Event,分五类:
51
-
52
- - 页面行为(3个):页面访问、按钮点击、登录成功
53
- - 对话行为(8个):消息发送模式/模型/用户分布、回复耗时、首字节延迟、中止、报错、模式切换
54
- - 采纳行为(5个):复制来源/用户/语言分布、下载用户/语言分布
55
- - 提问内容分析(4个,无用户关联):提问方向、意图、复杂度、附件类型
56
- - 工具调用(1个):工具名分布
57
-
58
- ### 变更
59
-
60
- - `useChatStore.js`:注入 `useChatTracker`,新增 `config.getUser` 注入口,`return` 暴露 `tracker` 供上层组件调用采纳埋点
61
- - `useChatStore.switchMode()`:注入模式切换埋点(⚠️ 函数内部逻辑有变,但对外接口不变)
62
-
63
- ### 文档
64
-
65
- - `docs/doc-maintenance.md`:新增埋点维护步骤、Ackee 展示类型速查、自查清单补充埋点项
66
-
67
- ---
68
-
69
- ## [1.0.0] — 2025-03-20
70
-
71
- ### 架构重构
72
-
73
- - 引入 `chat-sdk/` 目录,将对话能力从 guanwang 页面层剥离为独立 SDK
74
- - 新增双接入入口:`createAIChat()`(完整视图)和 `useChat()`(Headless 纯逻辑)
75
- - 分层结构:`headless/` → `core/` → `features/`,依赖方向单向
76
- - `features/` 每个目录内部区分 `core.js`(逻辑)和 `*.vue`(UI),headless 模式只引用逻辑层
77
-
78
- ### 新增:多模型支持
79
-
80
- - `config.models` 支持配置多个独立 `baseURL/apiKey/model` 的模型
81
- - 输入栏底部新增模型 pill 选择器,仅在模型数 > 1 且 `userControls.modelSelector` 时显示
82
- - `autoVision`:含图片消息自动路由到 `vision: true` 的模型
83
- - 移除旧的 `VITE_VL_*` 视觉模型环境变量,统一到 `config.models`
84
-
85
- ### 新增:多模式 Prompt 系统
86
-
87
- - `modes/code.js`:Code 模式,代码生成/修改,强制 `render_artifact` 输出
88
- - `modes/ask.js`:Ask 模式,只回答不生成文件
89
- - `modes/architect.js`:Architect 模式,系统设计,输出技术文档
90
- - `modes/requirements.js`:需求创造者模式,假设+确认流程,输出用户故事和功能拆解
91
- - `headless/buildSystemPrompt.js`:动态组装 system prompt,七区块结构,针对 Qwen3/弱模型优化
92
- - 模式切换时 system prompt 自动重建
93
-
94
- ### 新增:Tool-use 解析循环
95
-
96
- - `tools/parser.js`:XML 工具调用解析,支持流式快速检测和批量提取
97
- - `tools/defaults.js`:五个工具内置默认处理逻辑(`ask_followup_question` / `attempt_completion` / `switch_mode` / `render_artifact` / `request_context`)
98
- - `useChatStore.onToolCall()`:支持按工具名或全局覆盖默认行为
99
-
100
- ### 新增:设置面板
101
-
102
- - `settings/useSettings.js`:两层配置规则实现,`localStorage` 持久化
103
- - `settings/SettingsPanel.vue`:模型列表 + 功能开关 UI
104
-
105
- ### 重构:chatApi.js
106
-
107
- - 移除全局 `selectConfig` 依赖,改为接收 `modelConfig` 对象
108
- - `headless/api/adapters/openai.js`:UI 消息格式 → OpenAI 兼容格式转换层,与业务逻辑解耦
109
-
110
- ### 重构:useChatStore.js
111
-
112
- - 接收 `config` 参数,移除硬编码 `SYSTEM_PROMPT`
113
- - 集成 `loadModes()`、`buildSystemPrompt()`、`toAPIMessages()`
114
- - 集成 tool-use 循环:流式结束后自动解析并执行工具调用
115
- - 新增 `switchMode()`、`selectModel()`、`newSession()`、`switchSession()` 方法
116
-
117
- ### 重构:ChatView.vue
118
-
119
- - 从 248 行页面组件精简为 46 行挂载壳,所有对话逻辑迁入 `ChatBox.vue`
120
- - `sdkConfig` 由环境变量组装,为后续迁移到 `createAIChat()` 调用预留接口
121
-
122
- ### 重构:InputBar.vue
123
-
124
- - 移除全局 `config/api.js` 依赖
125
- - 改为接收 `availableModels`、`selectedModelId`、`showModelSelector` props
126
- - 通过 `emit('select-model')` 通知上层,不再内部维护模型状态
127
-
128
- ### Bug 修复
129
-
130
- - `CodePreview.vue`:修复 Vue SFC 预览报错 `props.store.init is not a function`,`<Repl>` 组件内部会自调 `init()`,移除重复调用
131
- - `CodePreview.vue`:修复 `editor` prop 必填报错,补充 `CodeMirror` 异步加载并传入
132
- - `CodePreview.vue`:修复代码区滚动异常,改为 `flex` 列布局 + `shiki-scroll` 层独立滚动,`min-height: 0` 消除 flex 子元素默认约束
133
- - `ArtifactPanel.vue`:修复流式期间高亮竞态,引入 token 机制,后发的异步结果自动丢弃
134
- - `MessageBubble.vue`:原始文本调试面板(`VITE_SHOW_RAW_TEXT=true` 时显示)
135
-
136
- ### 字体
137
-
138
- - 全局字体统一替换为 `Inter, 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif`
139
- - 涉及文件:`global.css` 及所有组件,数字/代码字体 monospace 保持不变
140
-
141
- ---
142
-
143
- ## [0.x] — 历史版本
144
-
145
- > 历史版本为 guanwang 项目初始开发阶段,未形成 SDK 结构,不单独记录。
@@ -1,229 +0,0 @@
1
- # 文档维护规范
2
-
3
- 每次新增功能或修复 Bug 后,按以下步骤同步更新文档。
4
-
5
- ---
6
-
7
- ## 需要维护的文档
8
-
9
- | 文档 | 路径 | 维护频率 |
10
- |---|---|---|
11
- | 产品说明书 | `docs/product.md` | 新增/删除功能时 |
12
- | 组件使用文档 | `docs/usage.md` | 接口变更时 |
13
- | 测试用例 | `docs/test-cases.md` | 新增功能时 |
14
- | 埋点配置 | `src/tracker/config.js` | 新增埋点事件时 |
15
-
16
- > `docs/changelog.md` 每次都要更新,不在上表之列,但每步都涉及。
17
-
18
- ---
19
-
20
- ## 每次更新的步骤
21
-
22
- ### 第一步:在 changelog.md 新增版本条目
23
-
24
- 在文件顶部(最新版本之前)插入新条目:
25
-
26
- ```markdown
27
- ## [x.x.x] — YYYY-MM-DD
28
-
29
- ### 新增
30
- - 简短描述,说明加了什么、为什么加
31
-
32
- ### 修复
33
- - 简短描述,说明修了什么 Bug
34
-
35
- ### 变更
36
- - 简短描述,说明改了什么接口或行为(破坏性变更需标注 ⚠️)
37
-
38
- ### 埋点
39
- - 新增了哪些 Event,用途是什么
40
-
41
- ### 文档
42
- - 同步更新了哪些文档
43
- ```
44
-
45
- 只写本次实际改动,没有的分类直接省略。
46
-
47
- ---
48
-
49
- ### 第二步:按改动类型更新对应文档
50
-
51
- #### 新增功能 → 更新 product.md
52
-
53
- 找到对应功能模块的章节,补充新能力描述。若是全新模块,在合适位置新增一节。
54
-
55
- ```markdown
56
- ### [新功能名]
57
- - 一句话说明这个功能是什么
58
- - 关键限制或注意事项(如有)
59
- ```
60
-
61
- #### 接口变更 → 更新 usage.md
62
-
63
- - 新增 config 字段:在「config 完整字段说明」表格补行
64
- - 新增 `useChat()` 返回值:在对应表格补行
65
- - 接口删除或重命名:更新对应行,备注「已废弃,改用 xxx」
66
-
67
- #### 新增功能 → 更新 test-cases.md
68
-
69
- 在对应模块章节末尾追加测试用例,编号连续递增(当前最大编号 T-093):
70
-
71
- ```markdown
72
- ### T-xxx 用例名称
73
- **步骤**:操作步骤描述
74
- **预期**:期望的结果
75
- ```
76
-
77
- 功能较多时可新增模块章节(`## 十一、xxx`)。
78
-
79
- #### 新增埋点 → 更新 tracker/config.js
80
-
81
- 这是埋点维护的核心步骤,分三小步:
82
-
83
- **① 在 Ackee 后台创建 Event**
84
-
85
- 进入 Ackee 管理后台 → Settings → Events → 新建 Event,填写:
86
- - Name:和 `config.js` 里的注释保持一致,方便后台辨识
87
- - Type:参考下方「展示类型速查」选择
88
-
89
- **② 把 UUID 填入 config.js**
90
-
91
- 找到 `src/tracker/config.js` 的 `EVENTS` 对象,将 Ackee 生成的真实 UUID 替换对应的占位 UUID:
92
-
93
- ```js
94
- export const EVENTS = {
95
- // 把这里的占位 UUID 替换成 Ackee 后台生成的真实 UUID
96
- NEW_EVENT: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
97
- }
98
- ```
99
-
100
- **③ 在对应的 tracker 函数里调用**
101
-
102
- - 页面行为 → `src/tracker/useTracker.js`
103
- - 对话行为 / 采纳行为 / 工具调用 → `src/tracker/useChatTracker.js`
104
- - 提问内容分析 → `src/tracker/analyze.js`(关键词字典)+ `useChatTracker.js`
105
-
106
- 新增意图关键词时,只需修改 `config.js` 里的 `INTENT_KEYWORDS`,无需改其他文件。
107
-
108
- ---
109
-
110
- ### 第三步:自查清单
111
-
112
- 提交前过一遍:
113
-
114
- - [ ] `changelog.md` 已新增版本条目,日期正确
115
- - [ ] 新增功能已在 `product.md` 对应章节有描述
116
- - [ ] 接口变更已在 `usage.md` 对应表格更新
117
- - [ ] 新功能有对应测试用例,编号连续
118
- - [ ] 新增埋点已在 Ackee 后台创建 Event,UUID 已更新到 `config.js`
119
- - [ ] 新增埋点已在对应 tracker 函数里调用,并在 `changelog.md` 的「埋点」分类里记录
120
- - [ ] 已知限制有变化的,`product.md` 底部「已知限制」已更新
121
- - [ ] **涉及文件迁移或路径变更的,已执行引用扫描(见下方)**
122
-
123
- ---
124
-
125
- ### 架构变更专项:引用扫描
126
-
127
- **每次发生以下情况,必须执行引用扫描,不得跳过:**
128
-
129
- - 文件移动或重命名
130
- - 文件删除或被新文件取代
131
- - 模块路径变更(如从 `composables/` 迁移到 `chat-sdk/headless/`)
132
- - 接口名称变更
133
-
134
- **扫描指令(在项目根目录执行):**
135
-
136
- ```bash
137
- # 扫描某个旧路径是否还有文件在引用
138
- grep -rn "旧文件名或旧路径" src/ --include="*.vue" --include="*.js"
139
-
140
- # 示例:确认旧的 useChatStore 没有残留引用
141
- grep -rn "composables/useChatStore" src/ --include="*.vue" --include="*.js"
142
-
143
- # 示例:确认旧的 config/api.js 没有残留引用
144
- grep -rn "config/api" src/ --include="*.vue" --include="*.js"
145
- ```
146
-
147
- **结果为空才算完成**,有输出说明还有文件没更新,必须逐一处理后再提交。
148
-
149
- **扫描时机:每改完一个文件,立即扫一次对应的旧路径**,不要等所有文件改完再统一扫,否则容易遗漏。
150
-
151
- ---
152
-
153
- ## 版本号规则
154
-
155
- 遵循语义化版本 `major.minor.patch`:
156
-
157
- | 变更类型 | 升级哪位 | 示例 |
158
- |---|---|---|
159
- | 破坏性接口变更 | major | 1.0.0 → 2.0.0 |
160
- | 新增功能(向后兼容) | minor | 1.0.0 → 1.1.0 |
161
- | Bug 修复 / 文档 / 样式 / 埋点 | patch | 1.0.0 → 1.0.1 |
162
-
163
- ---
164
-
165
- ## 展示类型速查(Ackee Event Type)
166
-
167
- | 类型 | 适用场景 | 示例 |
168
- |---|---|---|
169
- | List 总计 | 统计各 key 的出现次数 | 模式分布、用户用量、复制来源 |
170
- | List 平均值 | 统计各 key 的平均数值 | 不常用 |
171
- | Chart 总计 | 按时间看总量趋势 | 不常用 |
172
- | Chart 平均值 | 按时间看均值趋势 | 回复耗时、首字节延迟 |
173
-
174
- ---
175
-
176
- ## 快速参考:各文档的章节结构
177
-
178
- ### product.md 章节
179
- ```
180
- ## 核心能力
181
- ### [功能模块] ← 新增/修改功能在这里
182
- ## 技术架构
183
- ## 配置两层边界
184
- ## 已知限制 ← Bug 修复后可能需要更新
185
- ```
186
-
187
- ### usage.md 章节
188
- ```
189
- ## 两种接入方式
190
- ## config 完整字段说明 ← 新字段加这里
191
- ### ModelConfig
192
- ### FeaturesConfig
193
- ### UserControlsConfig
194
- ## useChat() 返回值 ← 新返回值加这里
195
- ### 状态
196
- ### 方法
197
- ## 模式说明
198
- ## 环境变量 ← 新环境变量加这里
199
- ```
200
-
201
- ### test-cases.md 章节
202
- ```
203
- ## 一、配置与初始化 (T-001 ~ T-005)
204
- ## 二、对话核心 (T-010 ~ T-017)
205
- ## 三、多模型 (T-020 ~ T-022)
206
- ## 四、多模式 (T-030 ~ T-034)
207
- ## 五、Tool-use (T-040 ~ T-045)
208
- ## 六、Artifact 面板 (T-050 ~ T-056)
209
- ## 七、Markdown 渲染 (T-060 ~ T-064)
210
- ## 八、文件上传 (T-070 ~ T-074)
211
- ## 九、Headless 模式 (T-080 ~ T-084)
212
- ## 十、CodePreview (T-090 ~ T-093)
213
- ## 十一、埋点 (T-100 ~) ← 新增埋点测试用例加这里
214
- ```
215
-
216
- ### tracker/config.js 结构
217
- ```
218
- ACKEE_URL / ACKEE_DOMAIN / TRACK_ENABLED ← 读取环境变量,不要硬编码
219
- EVENTS = {
220
- // 页面行为(3个)
221
- // 对话行为(8个)
222
- // 采纳行为(5个)
223
- // 提问内容分析(4个)
224
- // 工具调用(1个)
225
- }
226
- INTENT_KEYWORDS ← 意图关键词字典,新增意图类型在这里加
227
- MODE_TO_DIRECTION ← 模式→方向映射
228
- COMPLEXITY_THRESHOLD
229
- ```