Skip to content

Commit fa6b09e

Browse files
authored
Merge pull request #73 from TencentCloudBase/claude/issue-71-20250711_152308
feat: 重构规则文件结构防止干扰 - 分离微信小程序和Web开发规则
2 parents 81fd7c1 + 733875f commit fa6b09e

7 files changed

Lines changed: 296 additions & 166 deletions

File tree

config/.cursor/rules/cloudbase-rules.mdc

Lines changed: 68 additions & 166 deletions
Large diffs are not rendered by default.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
description: CloudBase 平台知识和最佳实践
3+
globs: ["**/cloudbaserc.json", "**/cloudfunctions/**/*"]
4+
alwaysApply: false
5+
---
6+
7+
# CloudBase 平台知识
8+
9+
## 存储和托管
10+
1. 云开发的静态托管和云存储是两个不同的桶,一般公开可访问的可以存放在静态托管,可以获得一个公开的网页地址,同时支持配置自定义域名(需要到控制台操作),云存储适合放一些有私密性的文件,可以通过获取临时文件来获取一个临时访问地址
11+
2. 云开发的静态托管域名可以通过 getWebsiteConfig 来获取,然后结合静态托管文件的路径可以拼出最终访问地址,记住如果访问地址是个目录,最后必须带有 /
12+
13+
## 环境和认证
14+
1. 云开发的 SDK 初始化时都需要填写环境 id,可以通过 envQuery 工具来查询环境 id,然后进行登录,例如使用匿名登录
15+
16+
## 云函数
17+
1. Node.js 的云函数中需要包含package.json,声明所需的依赖,可以使用 createFunction 来创建函数,使用 updateFunctionCode 来部署云函数,优先采用云端安装依赖,不上传 node_modules,functionRootPath 指的是函数目录的父目录,例如 cloudfuncitons 这个目录
18+
19+
## 数据库权限
20+
1. 云开发的数据库访问是有权限的,默认的基础权限有仅创建者可写,所有人可读,仅创建者可读写,仅管理端可写,所有人可读,仅管理端可读写。如果直接从 web 端或者小程序端请求数据库,需要考虑配置合适的数据库权限,在云函数中,默认没有权限控制
21+
2. 如用户无特殊要求,涉及到跨数据库集合的操作必须通过云函数实现
22+
3. 如果用涉及到云函数,在保证安全的情况下,可以尽可能可能缩减云函数的数量,例如实现一个面向 c 端请求的云函数,实现一个初始化数据的云函数
23+
24+
## 数据模型
25+
1. 获取数据模型操作对象:
26+
- 小程序:需要 `@cloudbase/wx-cloud-client-sdk`,初始化 `const client = initHTTPOverCallFunction(wx.cloud)`,使用 `client.models`
27+
- 云函数:需要 `@cloudbase/node-sdk@3.10+`,初始化 `const app = cloudbase.init({env})`,使用 `app.models`
28+
- Web:需要 `@cloudbase/js-sdk`,初始化 `const app = cloudbase.init({env})`,登录后使用 `app.models`
29+
2. 数据模型查询:可调用 MCP manageDataModel 工具查询模型列表、获取模型详细信息(含Schema字段)、获取具体的 models SDK使用文档
30+
3. MySQL 数据模型调用规则
31+
- MySQL 数据模型不能使用 collection 方式调用,必须使用数据模型 SDK
32+
- 错误:`db.collection('model_name').get()`
33+
- 正确:`app.models.model_name.list({ filter: { where: {} } })`
34+
- 使用 manageDataModel 工具的 docs 方法获取具体 SDK 用法
35+
36+
## 控制台管理
37+
创建/部署资源后,提供对应的控制台管理页面链接:
38+
39+
1. 静态托管:https://console.cloud.tencent.com/tcb/hosting
40+
2. 云函数:https://tcb.cloud.tencent.com/dev?envId=${envId}#/scf/detail?id=${functionName}&NameSpace=${envId}
41+
3. 数据库集合:https://tcb.cloud.tencent.com/dev?envId=${envId}#/db/doc/collection/${collectionName}
42+
4. 数据模型:https://tcb.cloud.tencent.com/dev?envId=${envId}#/db/doc/model/${modelName}
43+
44+
使用方式:创建对应资源后,将变量替换为实际值,提供给用户进行管理操作。

config/rules/database.mdc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
description: 数据库操作规则和注意事项
3+
globs: ["**/db/**/*", "**/database/**/*"]
4+
alwaysApply: false
5+
---
6+
7+
# 数据库操作规则
8+
9+
## CloudBase 数据库注意事项
10+
1. CloudBase数据库doc(id).get()返回的data是数组,需用data[0]获取文档内容
11+
2. 更新文档时,避免直接存储复杂对象,应提取和保存简单值
12+
3. 错误处理应返回error.message而非整个error对象,避免循环引用
13+
4. 使用new Date()替代db.serverDate()创建时间戳
14+
5. 对于有数据库归属的情况,检查和更新应通过云函数处理,避免数据库权限问题
15+
6. 云开发的云数据或者 mongodb不能在null值上创建新的嵌套字段,必要时可以用set()替代update()并删除_id
16+
17+
## 数据库权限管理
18+
1. 云开发的数据库访问是有权限的,默认的基础权限有:
19+
- 仅创建者可写,所有人可读
20+
- 仅创建者可读写
21+
- 仅管理端可写,所有人可读
22+
- 仅管理端可读写
23+
2. 如果直接从 web 端或者小程序端请求数据库,需要考虑配置合适的数据库权限
24+
3. 在云函数中,默认没有权限控制
25+
4. 跨数据库集合的操作必须通过云函数实现
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
description: 微信小程序开发规则
3+
globs: ["**/*.wxml", "**/*.wxss", "**/*.js", "**/*.ts", "**/*.json", "miniprogram/**/*"]
4+
alwaysApply: false
5+
---
6+
7+
# 微信小程序开发规则
8+
9+
## 项目结构
10+
1. 如果用户需要开发小程序,你会使用微信云开发的各种能力来开发项目,小程序的基础库直接用 latest 即可
11+
2. 小程序的项目遵循微信云开发的最佳实践,小程序一般在 miniprogram目录下,如果要开发云函数,则可以存放在 cloudfunctions 目录下,小程序的 project.config.json 需要指定miniprogramRoot这些
12+
3. 生成小程序页面的时候,必须包含页面的配置文件例如index.json等,要符合规范,避免编译出错
13+
14+
## 云开发集成
15+
1. 小程序 wx.cloud 的时候,需要指定环境 Id,环境 id 可以通过 envQuery 工具来查询
16+
2. 生成小程序代码的时候,如果需要用到素材图片,比如 tabbar 的 iconPath 等地方,可以从 unsplash 通过 url 来下载,可以参考工作流程中的下载远程资源流程,在生成小程序代码的时候,如果用到了iconPath 这些,必须同时帮用户下载图标,避免构建报错
17+
18+
## AI 大模型调用
19+
小程序中基础库 3.7.1版本以上已经支持直接调用大模型
20+
21+
```js
22+
// 创建模型实例,这里我们使用 DeepSeek 大模型
23+
const model = wx.cloud.extend.AI.createModel("deepseek");
24+
25+
// 我们先设定好 AI 的系统提示词,这里以七言绝句生成为例
26+
const systemPrompt =
27+
"请严格按照七言绝句或七言律诗的格律要求创作,平仄需符合规则,押韵要和谐自然,韵脚字需在同一韵部。创作内容围绕用户给定的主题,七言绝句共四句,每句七个字;七言律诗共八句,每句七个字,颔联和颈联需对仗工整。同时,要融入生动的意象、丰富的情感与优美的意境,展现出古诗词的韵味与美感。";
28+
29+
// 用户的自然语言输入,如'帮我写一首赞美玉龙雪山的诗'
30+
const userInput = "帮我写一首赞美玉龙雪山的诗";
31+
32+
// 将系统提示词和用户输入,传入大模型
33+
const res = await model.streamText({
34+
data: {
35+
model: "deepseek-v3", // 指定具体的模型
36+
messages: [
37+
{ role: "system", content: systemPrompt },
38+
{ role: "user", content: userInput },
39+
],
40+
},
41+
});
42+
43+
// 接收大模型的响应
44+
// 由于大模型的返回结果是流式的,所以我们这里需要循环接收完整的响应文本。
45+
for await (let str of res.textStream) {
46+
console.log(str);
47+
}
48+
```
49+
50+
## 微信步数获取
51+
**微信步数获取必须使用CloudID方式(基础库2.7.0+)**:
52+
- 前端:`wx.getWeRunData()` 获取cloudID,使用 `wx.cloud.CloudID(cloudID)` 传递给云函数
53+
- 云函数:直接使用 `weRunData.data` 获取解密后的步数数据,检查 `weRunData.errCode` 处理错误
54+
- 禁止使用session_key手动解密方式,CloudID更安全简单
55+
- 必须实现降级机制(模拟数据)处理cloudID获取失败的情况
56+
57+
## 云函数部署和权限注意事项
58+
- AI自动部署云函数后,可能缺少云调用等特殊权限
59+
- 建议用户在微信开发者工具中右键选择云函数,选择"云端安装依赖"
60+
- 对于需要云调用权限的函数(如微信步数解密),建议通过开发者工具手动部署一次以获取完整权限
61+
- 如遇到权限问题,提示用户检查云函数的服务授权和API权限配置

config/rules/ui-design.mdc

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
description: 页面设计和UI规范
3+
globs: ["**/*.css", "**/*.scss", "**/*.less", "**/*.wxml", "**/*.html", "**/*.vue", "**/*.jsx", "**/*.tsx"]
4+
alwaysApply: false
5+
---
6+
7+
# 页面设计规则
8+
9+
你是专业的前端开发工程师,专长于创建高保真原型设计。你的主要工作是将用户需求转化为可直接用于开发的界面原型。请通过以下方式完所有界面的原型设计,并确保这些原型界面可以直接用于开发。
10+
11+
## 设计流程
12+
1. **用户体验分析**:先分析这个 App 的主要功能和用户需求,确定核心交互逻辑。
13+
14+
2. **产品界面规划**:作为产品经理,定义关键界面,确保信息架构合理。
15+
16+
3. **高保真 UI 设计**:作为 UI 设计师,设计贴近真实 iOS/Android 设计规范的界面,使用现代化的 UI 元素,使其具有良好的视觉体验。
17+
18+
4. **前端原型实现**:使用 Tailwind CSS 来处理样式,可以使用 FontAwesome 让界面更加精美、接近真实的 App 设计。拆分代码文件,保持结构清晰。
19+
20+
5. **真实感增强**:
21+
- 使用真实的 UI 图片,而非占位符图片(可从 Unsplash、Pexels、Apple 官方 UI 资源中选择)
22+
23+
## 设计限制
24+
如无特别要求,给出至多4个页面即可。无需考虑生成长度与复杂度,保证应用的丰富。

config/rules/web-development.mdc

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
description: Web 前端项目开发规则
3+
globs: ["**/*.html", "**/*.js", "**/*.ts", "**/*.jsx", "**/*.tsx", "**/*.vue"]
4+
alwaysApply: false
5+
---
6+
7+
# Web 前端开发规则
8+
9+
## 项目结构
10+
1. web 项目一般前端源代码存放在 src 目录下,构建后的产物放在 dist 目录下,云函数放在 cloudfunctions 目录下
11+
2. 项目尽量使用 vite 等现代前端工程化体系,通过 npm 安装依赖
12+
3. 前端项目如何涉及到路由,可以默认用 hash 路由,可以解决路由刷新404的问题,更适合部署到静态网站托管
13+
14+
## 部署和预览
15+
1. 如果是一个前端项目,你可以在构建完毕后使用云开发静态托管,先本地启动预览,然后可以跟用户确认是否需要部署到云开发静态托管,部署的时候,如果用户没有特殊要求,一般不要直接部署到根目录,并返回部署后的地址,需要是一个markdown 的链接格式
16+
2. 本地启动预览静态网页可以进到指定的产物目录后,可以用 `npx live-server`
17+
3. web 项目部署到静态托管 cdn 上时,由于无法提前预知路径,publicPath 之类的配置应该采用用相对路径而不是绝对路径。这会解决资源加载的问题
18+
19+
## CloudBase Web SDK 使用
20+
1. 如果用户项目中需要用到数据库,云函数等功能,需要在 web 应用引入 @cloudbase/js-sdk@latest
21+
22+
```js
23+
const app = cloudbase.init({
24+
env: 'xxxx-yyy'; // 可以通过 envQuery 工具来查询环境 id
25+
});
26+
const auth = app.auth();
27+
28+
// 检查当前登录状态
29+
let loginState = await auth.getLoginState();
30+
31+
if (loginState && loginState.isLoggedIn) {
32+
// 已登录
33+
} else {
34+
// 未登录
35+
// 如果是游客类型,需要用下方的方式
36+
// 重要 2.x的 jssdk 匿名登录必须采用下方的方式
37+
// await auth.signInAnonymously();
38+
// 如果需要登录,可以用下方的方式
39+
// await auth.toDefaultLoginPage()
40+
}
41+
```
42+
43+
## 构建流程
44+
web 构建项目流程:确保首先执行过 npm install 命令,然后参考项目说明进行构建

config/rules/workflows.mdc

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
description: 开发工作流程和部署流程
3+
globs: []
4+
alwaysApply: false
5+
---
6+
7+
# 开发工作流程
8+
9+
## 部署流程
10+
1. 部署云函数流程:可以通过 getFunctionList MCP 工具来查询是否有云函数,然后直接调用 createFunction 或者 updateFunctionCode 更新云函数代码,只需要将functionRootPath 指向云函数目录的父目录(例如 cloudfuncitons 这个目录的绝对路径),不需要压缩代码等操作,上述工具会自动读取云函数父目录下的云函数同名目录的文件,并自动进行部署
11+
12+
2. 部署静态托管流程:通过使用 uploadFiles 工具部署,部署完毕后提醒用户 CDN 有几分钟缓存,可以生成一个带有随机 queryString 的markdown 格式 访问链接
13+
14+
3. 下载远程素材链接:使用 downloadRemoteFile 工具下载文件到本地,如果需要远程链接,可以继续调用 uploadFile 上传后获得临时访问链接和云存储的 cloudId
15+
16+
4. 从知识库查询专业知识:可以使用 searchKnowledgeBase 工具智能检索云开发知识库(支持云开发与云函数、小程序前端知识等),通过向量搜索快速获取专业文档与答案
17+
18+
5. 下载云开发 AI 规则或者其他模板:可以使用downloadTemplate 来下载,如果无法下载到当前目录,可以使用脚本来进行复制,注意隐藏文件也需要复制
19+
20+
## 文档生成规则
21+
1. 你会在生成项目后生成一个 README.md 文件,里面包含项目的基本信息,例如项目名称、项目描述, 最关键的是要把项目的架构和涉及到的云开发资源说清楚,让维护者可以参考来进行修改和维护
22+
2. 部署完毕后,如果是 web 可以把正式部署的访问地址也写到文档中
23+
24+
## 配置文件规则
25+
1. 为了方便其他不使用 AI 的人了解有哪些资源,可以在生成之后,同时生成一个 cloudbaserc.json,并支持使用 @cloudbase/cli来部署,提供 AI 调用 MCP 部署之外的另外一个选项
26+
27+
## MCP 接口调用规则
28+
你调用mcp服务的时候,需要充分理解所有要调用接口的数据类型,以及返回值的类型,如果你不确定需要调用什么接口,请先查看文档和tools的描述,然后根据文档和tools的描述,确定你需要调用什么接口和参数,不要出现调用的方法参数,或者参数类型错误的情况。
29+
30+
例如,很多接口都需要传confirm参数,这个参数是boolean类型,如果你不提供这个参数,或者提供错误的数据类型错误,那么接口会返回错误。

0 commit comments

Comments
 (0)