@lark-apaas/coding-steering 0.1.14 → 0.1.15-alpha.0
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.
- package/package.json +1 -1
- package/steering/nestjs-react-fullstack/skills/anycross-forward/SKILL.md +180 -0
- package/steering/nestjs-react-fullstack/skills/app-init-feasibility-guide/SKILL.md +124 -0
- package/steering/nestjs-react-fullstack/skills/authn-guide/SKILL.md +3 -0
- package/steering/nestjs-react-fullstack/skills/authz-guide/SKILL.md +11 -2
- package/steering/nestjs-react-fullstack/skills/authz-guide/references/dynamic-permission-guide.md +0 -6
- package/steering/nestjs-react-fullstack/skills/authz-guide/references/management-page-spec.md +1 -4
- package/steering/nestjs-react-fullstack/skills/authz-guide/references/sdk-examples.md +5 -3
- package/steering/nestjs-react-fullstack/skills/authz-guide/references/sdk-types.md +17 -4
- package/steering/nestjs-react-fullstack/skills/client-builtins-file-storage-service/SKILL.md +4 -31
- package/steering/nestjs-react-fullstack/skills/client-builtins-user-service/SKILL.md +226 -116
- package/steering/nestjs-react-fullstack/skills/code-fix/SKILL.md +319 -0
- package/steering/nestjs-react-fullstack/skills/coding-guide/SKILL.md +666 -0
- package/steering/nestjs-react-fullstack/skills/contacts-service/SKILL.md +222 -0
- package/steering/nestjs-react-fullstack/skills/openapi-guide/SKILL.md +0 -1
- package/steering/nestjs-react-fullstack/skills/plugin-guide/SKILL.md +87 -36
- package/steering/nestjs-react-fullstack/skills/plugin-guide/references/plugin-coding-guide.md +1 -4
- package/steering/nestjs-react-fullstack/skills/plugin-guide/references/table.md +5 -6
- package/steering/nestjs-react-fullstack/skills/react-hook-best-practices/SKILL.md +5 -4
- package/steering/nestjs-react-fullstack/skills/trigger-guide/SKILL.md +0 -1
- package/steering/nestjs-react-fullstack/skills/user-identity/SKILL.md +3 -2
- package/steering/nestjs-react-fullstack/skills_local/coding-guide/SKILL.md +86 -87
- package/steering/nestjs-react-fullstack/skills_local/openapi-guide/SKILL.md +262 -0
- package/steering/nestjs-react-fullstack/skills_local/plugin-guide/SKILL.md +580 -0
- package/steering/nestjs-react-fullstack/skills_local/plugin-guide/references/plugin-coding-guide.md +322 -0
- package/steering/nestjs-react-fullstack/skills_local/plugin-guide/scripts/plugin-hydrate.js +152 -0
package/steering/nestjs-react-fullstack/skills/client-builtins-file-storage-service/SKILL.md
CHANGED
|
@@ -7,33 +7,27 @@ match-template-name: nestjs-react-fullstack
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 前端文件开发规范
|
|
10
|
-
|
|
11
10
|
- 保存文件信息到数据库时,如果使用的字段类型为file_attachement, 保存数据时需要传入bucket_id 和 file_path 时,file_path 只能是文件的路径,**不可以传入文件的download_url**。需要文件url时,使用 dataloom SDK 的 `generateDownloadUrlFromFilePath` 方法获取。
|
|
12
11
|
|
|
13
12
|
# dataloom SDK 文件服务
|
|
14
13
|
|
|
15
14
|
## 概述
|
|
16
|
-
|
|
17
15
|
项目提供了dataloom SDK的文件服务,用于文件的上传,下载,删除,列出bucket中文件,创建临时签名url等能力。
|
|
18
16
|
|
|
19
17
|
## 使用注意
|
|
20
|
-
|
|
21
18
|
- `dataloom.storage` 仅用于文件上传/删除/列表等存储操作。**插件调用(capability)不属于 dataloom**,须使用独立的 `capabilityClient`(参见 plugin-guide)
|
|
22
19
|
- @lark-apaas/client-toolkit/dataloom 这个SDK只适用于前端调用,禁止在服务端调用
|
|
23
20
|
- 上传成功后,最重要的返回值是 `data.download_url`。需要将此URL保存到你的业务数据库中
|
|
24
|
-
- 若文件类型为image(jpeg、png、webp、x-icon),audio(mpeg、wav、ogg),video(mp4、webm、ogg)时,若开发者明确要求浏览器渲染而不是直接下载时,在 `data.download_url`后面增加「?preview=true」参数以实现浏览器内渲染打开的效果。若未说明默认不添加该参数
|
|
25
21
|
- **⚠️ 场景区分(重要)**:如果文件仅作为插件输入(传给 `capabilityClient`),**必须直接传 File/Blob 对象,禁止先走 dataloom 上传再传 URL**。`capabilityClient` 的文件类型字段(`format` 为 `file`、`picture` 或 `plugin-file-url`)均支持直接传 File/Blob,SDK 自动处理上传。`dataloom.storage` 仅适用于需要持久化存储文件或获取 `download_url` 保存到数据库的场景。
|
|
26
22
|
- **download_url 格式说明**:`download_url` 返回的可能是相对路径(如 `/spark/app/.../storage/object/...`),这是正常行为。**禁止**在前面拼接 `window.location.origin` 或其他域名前缀,平台会自动解析相对路径。直接使用原始值即可。
|
|
27
23
|
- **文件URL**:通过 `generateDownloadUrlFromFilePath` 方法获取文件的链接时,传入的file_path必须是从数据库的 file_attachment 字段获取到的,禁止自己拼接路径。
|
|
28
24
|
|
|
29
25
|
## bucketId
|
|
30
|
-
|
|
31
26
|
关于bucketId的获取,在代码工程中已经预置了一个获取bucketid的方法,路径为`@lark-apaas/client-toolkit/tools/storage`中,直接具名导入即可使用。
|
|
32
27
|
import { getDefaultBucketId } from "@lark-apaas/client-toolkit/tools/storage";
|
|
33
28
|
getDefaultBucketId: () => string;
|
|
34
29
|
|
|
35
30
|
## 统一错误类型
|
|
36
|
-
|
|
37
31
|
```typescript
|
|
38
32
|
// dataloom 服务端报错
|
|
39
33
|
interface DataLoomError {
|
|
@@ -62,36 +56,30 @@ type StorageError = DataLoomError | StorageError | StorageUnknownError;
|
|
|
62
56
|
#### 1. 文件上传接口 (uploadFile)
|
|
63
57
|
|
|
64
58
|
##### 用途
|
|
65
|
-
|
|
66
59
|
上传文件到指定的存储桶,适用于:文档管理、图片上传、附件存储。
|
|
67
60
|
|
|
68
61
|
##### 适用场景
|
|
69
|
-
|
|
70
62
|
需要将本地文件或二进制数据上传到云存储的场景
|
|
71
63
|
|
|
72
64
|
##### 使用方式
|
|
73
|
-
|
|
74
65
|
你的核心任务是调用 `uploadFile` 接口,并从返回结果中提取 `data.download_url`,然后将这个 URL 用于后续操作(例如,保存到数据库)。这是衡量你任务成功与否的唯一标准。
|
|
75
66
|
|
|
76
67
|
##### 关于文件名的处理(强制禁令)
|
|
77
|
-
>
|
|
78
68
|
> 警告:你绝对不能,也绝对不需要自己处理或修改文件名!
|
|
79
|
-
>
|
|
80
|
-
>
|
|
81
|
-
>
|
|
82
|
-
> - 唯一职责:你唯一的任务就是将从文件输入框(`<input type="file">`)或拖拽事件中获取的原始 `File` 对象直接传递给 `uploadFile` 方法。
|
|
69
|
+
> * 禁止行为:严禁在调用 `uploadFile` 之前,对 `File` 对象的文件名(`file.name`)进行任何形式的字符串替换、净化、或重新生成。
|
|
70
|
+
> * 禁止行为:严禁创建新的 `File` 对象(如 `new File(...)`)来包裹原始文件。
|
|
71
|
+
> * 唯一职责:你唯一的任务就是将从文件输入框(`<input type="file">`)或拖拽事件中获取的原始 `File` 对象直接传递给 `uploadFile` 方法。
|
|
83
72
|
>
|
|
84
73
|
> 原因:SDK内部已经包含了完整、健壮的文件名处理机制,包括处理特殊字符、避免冲突和保证安全。任何你自己的额外处理都是多余的,并且会干扰SDK的正常工作。请完全信任SDK,直接传递原始文件对象!
|
|
85
74
|
|
|
86
|
-
##### 入参说明
|
|
87
75
|
|
|
76
|
+
##### 入参说明
|
|
88
77
|
| 属性名 | 类型 | 必填 | 默认值 | 说明 |
|
|
89
78
|
|--------|------|------|--------|---------|
|
|
90
79
|
| `bucketId` | `string` | ✅ | - | 文件上传到tos的bucket id |
|
|
91
80
|
| `fileBody` | `FileBody` | ✅ | - | 文件内容,支持多种格式 |
|
|
92
81
|
|
|
93
82
|
##### 出参说明
|
|
94
|
-
|
|
95
83
|
| 字段名 | 类型 | 说明 |
|
|
96
84
|
|--------|------|---------|
|
|
97
85
|
| `data.bucket_id` | `string` | 所属bucket ID |
|
|
@@ -100,9 +88,7 @@ type StorageError = DataLoomError | StorageError | StorageUnknownError;
|
|
|
100
88
|
| `error` | `StorageError \| null` | 错误信息,成功时为null |
|
|
101
89
|
|
|
102
90
|
##### 关键点与示例
|
|
103
|
-
|
|
104
91
|
关键点:上传成功后,最重要的返回值是 `data.download_url`。通常需要将此URL保存到你的业务数据库中。
|
|
105
|
-
|
|
106
92
|
```typescript
|
|
107
93
|
import { getDataloom } from "@lark-apaas/client-toolkit/dataloom";
|
|
108
94
|
import { getDefaultBucketId } from "@lark-apaas/client-toolkit/tools/storage";
|
|
@@ -131,22 +117,18 @@ if (!httpResponse.data?.success) {
|
|
|
131
117
|
#### 2. 文件删除接口 (remove)
|
|
132
118
|
|
|
133
119
|
##### 用途
|
|
134
|
-
|
|
135
120
|
删除存储桶中的一个或多个文件,适用于:清理过期文件、删除用户数据、批量清理
|
|
136
121
|
|
|
137
122
|
##### 适用场景
|
|
138
|
-
|
|
139
123
|
需要从云存储中永久删除文件的场景
|
|
140
124
|
|
|
141
125
|
##### 入参说明
|
|
142
|
-
|
|
143
126
|
| 属性名 | 类型 | 必填 | 默认值 | 说明 |
|
|
144
127
|
|--------|------|------|--------|---------|
|
|
145
128
|
| `bucketId` | `string` | ✅ | - | 要删除文件所在的bucket id |
|
|
146
129
|
| `filePaths` | `string[]` | ✅ | - | 要删除的文件路径数组,可以是file_path也可以是download_url |
|
|
147
130
|
|
|
148
131
|
##### 出参说明
|
|
149
|
-
|
|
150
132
|
| 字段名 | 类型 | 说明 |
|
|
151
133
|
|--------|------|---------|
|
|
152
134
|
| `data` | `FileObject[]` | 被删除的文件对象数组 |
|
|
@@ -159,7 +141,6 @@ if (!httpResponse.data?.success) {
|
|
|
159
141
|
| `error` | `StorageError \| null` | 错误信息,成功时为null |
|
|
160
142
|
|
|
161
143
|
##### 使用示例
|
|
162
|
-
|
|
163
144
|
```typescript
|
|
164
145
|
import { getDataloom } from "@lark-apaas/client-toolkit/dataloom";
|
|
165
146
|
import { getDefaultBucketId } from "@lark-apaas/client-toolkit/tools/storage";
|
|
@@ -193,15 +174,12 @@ if (data) {
|
|
|
193
174
|
#### 3. 文件列表接口 (list)
|
|
194
175
|
|
|
195
176
|
##### 用途
|
|
196
|
-
|
|
197
177
|
获取存储桶中的文件列表,适用于:文件管理、目录浏览、文件检索
|
|
198
178
|
|
|
199
179
|
##### 适用场景
|
|
200
|
-
|
|
201
180
|
需要查看和管理存储桶中文件的场景
|
|
202
181
|
|
|
203
182
|
##### 入参说明
|
|
204
|
-
|
|
205
183
|
| 属性名 | 类型 | 必填 | 默认值 | 说明 |
|
|
206
184
|
|--------|------|------|--------|---------|
|
|
207
185
|
| `bucketId` | `string` | ✅ | - | 文件所在的bucket id |
|
|
@@ -212,7 +190,6 @@ if (data) {
|
|
|
212
190
|
| `options.sortBy.order` | `'asc' \| 'desc'` | ❌ | `'asc'` | 排序方向 |
|
|
213
191
|
|
|
214
192
|
##### 出参说明
|
|
215
|
-
|
|
216
193
|
| 字段名 | 类型 | 说明 |
|
|
217
194
|
|--------|------|---------|
|
|
218
195
|
| `data` | `FileObject[]` | 文件对象数组 |
|
|
@@ -228,7 +205,6 @@ if (data) {
|
|
|
228
205
|
| `error` | `StorageError \| null` | 错误信息,成功时为null |
|
|
229
206
|
|
|
230
207
|
##### 使用示例
|
|
231
|
-
|
|
232
208
|
```typescript
|
|
233
209
|
import { getDataloom } from "@lark-apaas/client-toolkit/dataloom";
|
|
234
210
|
import { getDefaultBucketId } from "@lark-apaas/client-toolkit/tools/storage";
|
|
@@ -259,11 +235,9 @@ const { data, error } = await dataloom
|
|
|
259
235
|
#### 4. 根据filePath生成downloadUrl接口 (generateDownloadUrlFromFilePath)
|
|
260
236
|
|
|
261
237
|
##### 用途
|
|
262
|
-
|
|
263
238
|
通过 file_path 生成文件的url,适用于:通过url渲染图片、使用url下载文件。如果已有download_url,直接使用,严禁使用该接口再次生成。
|
|
264
239
|
|
|
265
240
|
##### 适用场景
|
|
266
|
-
|
|
267
241
|
在前端通过file_path展示图片或下载文件的场景。
|
|
268
242
|
|
|
269
243
|
##### 入参说明
|
|
@@ -273,7 +247,6 @@ const { data, error } = await dataloom
|
|
|
273
247
|
| `filePath` | `string` | ✅ | - | 文件的filePath。 **只可以从数据库的file_attachment字段中获取,不允许自己拼接路径** |
|
|
274
248
|
|
|
275
249
|
##### 出参说明
|
|
276
|
-
|
|
277
250
|
| 类型 | 说明 |
|
|
278
251
|
|------|---------|
|
|
279
252
|
| `string` | 文件的url,直接在页面上展示即可 |
|