@succsoft/succapp 5.0.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/CHANGELOG.md +195 -0
- package/README.md +10 -0
- package/dist/cli/l10n/bundle.l10n.json +984 -0
- package/dist/cli/l10n/bundle.l10n.zh-cn.json +984 -0
- package/dist/cli/succapp.js +102 -0
- package/package.json +23 -0
- package/resources/contents.properties +211 -0
- package/resources/workspace-templates/succapp-workspace/.agents/README.md +40 -0
- package/resources/workspace-templates/succapp-workspace/.agents/plans/.gitignore +2 -0
- package/resources/workspace-templates/succapp-workspace/.agents/reports/.gitignore +2 -0
- package/resources/workspace-templates/succapp-workspace/.agents/reviews/.gitignore +2 -0
- package/resources/workspace-templates/succapp-workspace/.agents/rules/workspace-rules.md +110 -0
- package/resources/workspace-templates/succapp-workspace/.agents/skills/succbi-frontend-development/SKILL.md +76 -0
- package/resources/workspace-templates/succapp-workspace/.github/copilot-instructions.md +3 -0
- package/resources/workspace-templates/succapp-workspace/.succapp/tsconfig.action.json +42 -0
- package/resources/workspace-templates/succapp-workspace/.succapp/tsconfig.browser.json +51 -0
- package/resources/workspace-templates/succapp-workspace/.vscode/settings.recommended.jsonc +37 -0
- package/resources/workspace-templates/succapp-workspace/.vscode/settings.typescript-support.jsonc +8 -0
- package/resources/workspace-templates/succapp-workspace/AGENTS.md +50 -0
- package/resources/workspace-templates/succapp-workspace/CLAUDE.md +1 -0
- package/resources/workspace-templates/succapp-workspace/agent-workspace-template.jsonc +18 -0
- package/resources/workspace-templates/succapp-workspace/tsconfig.json +12 -0
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@succsoft/succapp",
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "SuccApp CLI for AI-assisted low-code development, metadata workspace sync, and server automation.",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://gitlab.succez.com/product/bi"
|
|
9
|
+
},
|
|
10
|
+
"bin": {
|
|
11
|
+
"succapp": "dist/cli/succapp.js"
|
|
12
|
+
},
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=18"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist/cli/**",
|
|
18
|
+
"resources/**",
|
|
19
|
+
"README.md",
|
|
20
|
+
"CHANGELOG.md",
|
|
21
|
+
"LICENSE*"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
ez:application/andrew-inset
|
|
2
|
+
hqx:application/mac-binhex40
|
|
3
|
+
cpt:application/mac-compactpro
|
|
4
|
+
bin:application/octet-stream
|
|
5
|
+
dms:application/octet-stream
|
|
6
|
+
lha:application/octet-stream
|
|
7
|
+
lzh:application/octet-stream
|
|
8
|
+
exe:application/octet-stream
|
|
9
|
+
class:application/octet-stream
|
|
10
|
+
so:application/octet-stream
|
|
11
|
+
dll:application/octet-stream
|
|
12
|
+
oda:application/oda
|
|
13
|
+
pdf:application/pdf
|
|
14
|
+
ai:application/postscript
|
|
15
|
+
eps:application/postscript
|
|
16
|
+
ps:application/postscript
|
|
17
|
+
smi:application/smil
|
|
18
|
+
smil:application/smil
|
|
19
|
+
mif:application/vnd.mif
|
|
20
|
+
xls:application/vnd.ms-excel
|
|
21
|
+
xlsx:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
|
|
22
|
+
doc:application/msword
|
|
23
|
+
xdoc:application/msword
|
|
24
|
+
docx:application/vnd.openxmlformats-officedocument.wordprocessingml.document
|
|
25
|
+
ppt:application/vnd.ms-powerpoint
|
|
26
|
+
xppt:application/vnd.ms-powerpoint
|
|
27
|
+
pptx:application/vnd.openxmlformats-officedocument.presentationml.presentation
|
|
28
|
+
wbxml:application/vnd.wap.wbxml
|
|
29
|
+
wmlc:application/vnd.wap.wmlc
|
|
30
|
+
wmlsc:application/vnd.wap.wmlscriptc
|
|
31
|
+
bcpio:application/x-bcpio
|
|
32
|
+
vcd:application/x-cdlink
|
|
33
|
+
pgn:application/x-chess-pgn
|
|
34
|
+
cpio:application/x-cpio
|
|
35
|
+
csh:application/x-csh
|
|
36
|
+
dcr:application/x-director
|
|
37
|
+
dir:application/x-director
|
|
38
|
+
dxr:application/x-director
|
|
39
|
+
dvi:application/x-dvi
|
|
40
|
+
spl:application/x-futuresplash
|
|
41
|
+
gtar:application/x-gtar
|
|
42
|
+
hdf:application/x-hdf
|
|
43
|
+
js:text/javascript
|
|
44
|
+
mjs:text/javascript
|
|
45
|
+
ts:text/plain
|
|
46
|
+
sql:text/plain
|
|
47
|
+
less:text/plain
|
|
48
|
+
wasm:application/wasm
|
|
49
|
+
skp:application/x-koan
|
|
50
|
+
skd:application/x-koan
|
|
51
|
+
skt:application/x-koan
|
|
52
|
+
skm:application/x-koan
|
|
53
|
+
latex:application/x-latex
|
|
54
|
+
nc:application/x-netcdf
|
|
55
|
+
cdf:application/x-netcdf
|
|
56
|
+
sh:application/x-sh
|
|
57
|
+
shar:application/x-shar
|
|
58
|
+
swf:application/x-shockwave-flash
|
|
59
|
+
sit:application/x-stuffit
|
|
60
|
+
sv4cpio:application/x-sv4cpio
|
|
61
|
+
sv4crc:application/x-sv4crc
|
|
62
|
+
tar:application/x-tar
|
|
63
|
+
tcl:application/x-tcl
|
|
64
|
+
tex:application/x-tex
|
|
65
|
+
texinfo:application/x-texinfo
|
|
66
|
+
texi:application/x-texinfo
|
|
67
|
+
t:application/x-troff
|
|
68
|
+
tr:application/x-troff
|
|
69
|
+
roff:application/x-troff
|
|
70
|
+
man:application/x-troff-man
|
|
71
|
+
me:application/x-troff-me
|
|
72
|
+
ms:application/x-troff-ms
|
|
73
|
+
ustar:application/x-ustar
|
|
74
|
+
src:application/x-wais-source
|
|
75
|
+
xhtml:application/xhtml+xml
|
|
76
|
+
xht:application/xhtml+xml
|
|
77
|
+
zip:application/zip
|
|
78
|
+
7z:application/x-7z-compressed
|
|
79
|
+
gz:application/gzip
|
|
80
|
+
rar:application/vnd.rar
|
|
81
|
+
au:audio/basic
|
|
82
|
+
snd:audio/basic
|
|
83
|
+
mid:audio/midi
|
|
84
|
+
midi:audio/midi
|
|
85
|
+
kar:audio/midi
|
|
86
|
+
mpga:audio/mpeg
|
|
87
|
+
mp2:audio/mpeg
|
|
88
|
+
mp3:audio/mpeg
|
|
89
|
+
m4a:audio/mp4
|
|
90
|
+
ogg:audio/ogg
|
|
91
|
+
aac:audio/aac
|
|
92
|
+
flac:audio/flac
|
|
93
|
+
mp4:video/mp4
|
|
94
|
+
aif:audio/x-aiff
|
|
95
|
+
aiff:audio/x-aiff
|
|
96
|
+
aifc:audio/x-aiff
|
|
97
|
+
m3u:audio/x-mpegurl
|
|
98
|
+
ram:audio/x-pn-realaudio
|
|
99
|
+
rm:audio/x-pn-realaudio
|
|
100
|
+
rpm:audio/x-pn-realaudio-plugin
|
|
101
|
+
ra:audio/x-realaudio
|
|
102
|
+
wav:audio/x-wav
|
|
103
|
+
pdb:chemical/x-pdb
|
|
104
|
+
xyz:chemical/x-xyz
|
|
105
|
+
bmp:image/bmp
|
|
106
|
+
gif:image/gif
|
|
107
|
+
ief:image/ief
|
|
108
|
+
jpeg:image/jpeg
|
|
109
|
+
jpg:image/jpeg
|
|
110
|
+
jpe:image/jpeg
|
|
111
|
+
png:image/png
|
|
112
|
+
webp:image/webp
|
|
113
|
+
avif:image/avif
|
|
114
|
+
tiff:image/tiff
|
|
115
|
+
tif:image/tiff
|
|
116
|
+
djvu:image/vnd.djvu
|
|
117
|
+
djv:image/vnd.djvu
|
|
118
|
+
wbmp:image/vnd.wap.wbmp
|
|
119
|
+
ras:image/x-cmu-raster
|
|
120
|
+
pnm:image/x-portable-anymap
|
|
121
|
+
pbm:image/x-portable-bitmap
|
|
122
|
+
pgm:image/x-portable-graymap
|
|
123
|
+
ppm:image/x-portable-pixmap
|
|
124
|
+
rgb:image/x-rgb
|
|
125
|
+
xbm:image/x-xbitmap
|
|
126
|
+
xpm:image/x-xpixmap
|
|
127
|
+
xwd:image/x-xwindowdump
|
|
128
|
+
svg:image/svg+xml
|
|
129
|
+
ico:image/x-icon
|
|
130
|
+
cur:image/x-icon
|
|
131
|
+
woff:font/woff
|
|
132
|
+
woff2:font/woff2
|
|
133
|
+
ttf:font/ttf
|
|
134
|
+
otf:font/otf
|
|
135
|
+
eot:application/vnd.ms-fontobject
|
|
136
|
+
igs:model/iges
|
|
137
|
+
iges:model/iges
|
|
138
|
+
msh:model/mesh
|
|
139
|
+
mesh:model/mesh
|
|
140
|
+
silo:model/mesh
|
|
141
|
+
wrl:model/vrml
|
|
142
|
+
vrml:model/vrml
|
|
143
|
+
css:text/css
|
|
144
|
+
html:text/html
|
|
145
|
+
htm:text/html
|
|
146
|
+
link:text/plain
|
|
147
|
+
conf:text/plain
|
|
148
|
+
cfg:text/plain
|
|
149
|
+
properties:text/plain
|
|
150
|
+
asc:text/plain
|
|
151
|
+
txt:text/plain
|
|
152
|
+
rtx:text/richtext
|
|
153
|
+
rtf:text/rtf
|
|
154
|
+
sgml:text/sgml
|
|
155
|
+
sgm:text/sgml
|
|
156
|
+
tsv:text/tab-separated-values
|
|
157
|
+
csv:text/csv
|
|
158
|
+
wml:text/vnd.wap.wml
|
|
159
|
+
wmls:text/vnd.wap.wmlscript
|
|
160
|
+
etx:text/x-setext
|
|
161
|
+
xsl:text/xml
|
|
162
|
+
xml:text/xml
|
|
163
|
+
mpeg:video/mpeg
|
|
164
|
+
mpg:video/mpeg
|
|
165
|
+
mpe:video/mpeg
|
|
166
|
+
webm:video/webm
|
|
167
|
+
qt:video/quicktime
|
|
168
|
+
mov:video/quicktime
|
|
169
|
+
mxu:video/vnd.mpegurl
|
|
170
|
+
avi:video/x-msvideo
|
|
171
|
+
movie:video/x-sgi-movie
|
|
172
|
+
java:text/plain
|
|
173
|
+
ini:text/plain
|
|
174
|
+
sys:text/plain
|
|
175
|
+
spt:text/plain
|
|
176
|
+
action:text/plain
|
|
177
|
+
ftl:text/plain
|
|
178
|
+
dm:application/json
|
|
179
|
+
fact:application/json
|
|
180
|
+
ds:text/plain
|
|
181
|
+
map:application/json
|
|
182
|
+
json:application/json
|
|
183
|
+
jsonc:application/json
|
|
184
|
+
schedule:text/xml
|
|
185
|
+
page:text/html
|
|
186
|
+
dfl:application/json
|
|
187
|
+
dlab:application/json
|
|
188
|
+
dmdl:application/json
|
|
189
|
+
dtbl:application/json
|
|
190
|
+
dtpt:application/json
|
|
191
|
+
md:text/markdown
|
|
192
|
+
tbl:application/json
|
|
193
|
+
dash:application/json
|
|
194
|
+
rpt:application/json
|
|
195
|
+
wqr:application/json
|
|
196
|
+
fapp:application/json
|
|
197
|
+
frm:application/json
|
|
198
|
+
wfl:application/json
|
|
199
|
+
afl:application/json
|
|
200
|
+
app:application/json
|
|
201
|
+
tpg:application/json
|
|
202
|
+
spg:application/json
|
|
203
|
+
query:application/json
|
|
204
|
+
mapg:application/json
|
|
205
|
+
theme:application/json
|
|
206
|
+
agent:application/json
|
|
207
|
+
ctpl:application/json
|
|
208
|
+
case:application/json
|
|
209
|
+
meta:application/json
|
|
210
|
+
jdbc:application/json
|
|
211
|
+
spk:application/octet-stream
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# SuccApp AI 工作区
|
|
2
|
+
|
|
3
|
+
本目录保存当前 SuccApp 工作区的 AI 共享上下文和 AI 协作产物。
|
|
4
|
+
|
|
5
|
+
## 与主入口的关系
|
|
6
|
+
|
|
7
|
+
`../AGENTS.md` 是常用 AI 工具优先读取的主入口。本文件补充工作区目录、AI 产物目录和本地
|
|
8
|
+
运行态说明。修改内容前应先读 `../AGENTS.md`,再按需阅读本文件和 `rules/` 下的细则。
|
|
9
|
+
|
|
10
|
+
## 工作区目录
|
|
11
|
+
|
|
12
|
+
- 工作区根目录通常包含一个或多个从服务器克隆下来的元数据项目目录。
|
|
13
|
+
- 项目文件是可编辑的交付内容,例如页面、报表、模型、脚本、扩展和配置等元数据文件。
|
|
14
|
+
- `.meta` 文件保存每个资源的服务器标识、版本和元信息,是 SuccApp 同步和差异判断的重要依据。
|
|
15
|
+
- `.succapp/` 保存本地服务器配置、镜像、缓存、锁、合并备份、日志和 IDE 辅助文件。
|
|
16
|
+
|
|
17
|
+
更多修改安全边界见 `../AGENTS.md`。
|
|
18
|
+
|
|
19
|
+
## 目录说明
|
|
20
|
+
|
|
21
|
+
- `plans/`:实施计划、迁移计划和多步骤任务计划。
|
|
22
|
+
- `reviews/`:Code Review、设计评审和变更评审。
|
|
23
|
+
- `reports/`:调查报告、分析报告和验证报告。
|
|
24
|
+
- `rules/`:团队长期维护的 AI 协作规则。
|
|
25
|
+
- `skills/`:面向特定开发场景的 AI skill,例如 SuccBI 前端定制开发。
|
|
26
|
+
- `tmp/`:临时脚本、草稿和一次性排查文件。
|
|
27
|
+
|
|
28
|
+
SuccApp 运行态文件保存在 `.succapp/` 下。`remote`、`cache`、`locks`、`merge-base`、
|
|
29
|
+
`merge-backup`、日志文件和 `state.json` 都属于本地运行态。
|
|
30
|
+
|
|
31
|
+
## AI 产物规则
|
|
32
|
+
|
|
33
|
+
- 非简单任务的实施计划写到 `plans/`。
|
|
34
|
+
- 评审结果写到 `reviews/`。
|
|
35
|
+
- 调查、分析和验证总结写到 `reports/`。
|
|
36
|
+
- 临时脚本和一次性草稿写到 `tmp/`。
|
|
37
|
+
- 团队长期规则写到 `rules/`,不要只写在个人对话提示词里。
|
|
38
|
+
- 可复用的场景化开发指南写到 `skills/`,并在任务命中时先阅读对应 `SKILL.md`。
|
|
39
|
+
- `plans/`、`reviews/`、`reports/` 和 `tmp/` 默认忽略其中的文件。AI 产物需要长期保留时,
|
|
40
|
+
应先由人工确认,再调整忽略规则或移动到团队约定位置。
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# SuccApp 工作区规则
|
|
2
|
+
|
|
3
|
+
本文件说明 SuccApp 初始化工作区后常见的目录结构、元数据识别规则和本地配置边界。AI 或人工修改工作区内容时,应先判断目标是否属于服务器元数据,再决定是否编辑、同步或推送。
|
|
4
|
+
|
|
5
|
+
## 目录结构
|
|
6
|
+
|
|
7
|
+
典型工作区结构如下,实际项目名称和业务目录会随服务器内容变化:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
<workspace-root>/
|
|
11
|
+
|-- .meta # 根目录元数据索引,记录哪些一级目录是服务器元数据项目
|
|
12
|
+
|-- <metadata-project>/ # 被根目录 .meta 记录的元数据项目,会参与 SuccApp 同步
|
|
13
|
+
| |-- .meta # 当前目录下直接子资源的元数据索引
|
|
14
|
+
| |-- <folder-or-file> # 页面、报表、模型、脚本、扩展、配置等业务资源
|
|
15
|
+
| `-- <sub-folder>/
|
|
16
|
+
| |-- .meta # 子目录自己的资源索引
|
|
17
|
+
| `-- ...
|
|
18
|
+
|-- .CKID/ # 工作区或开发环境相关配置目录,通常不是业务元数据
|
|
19
|
+
| |-- ... # 连接、身份、环境、工具或历史兼容配置,按实际生成内容为准
|
|
20
|
+
|-- .succapp/ # SuccApp 本地运行态目录,不作为业务资源推送
|
|
21
|
+
| |-- config.json # 服务器列表、当前激活服务器和同步相关配置
|
|
22
|
+
| |-- state.json # 本地同步状态、基线和项目状态
|
|
23
|
+
| |-- remote/ # 服务器文件镜像,用于 diff、status、pull、push 的基线
|
|
24
|
+
| |-- cache/ # 本地缓存
|
|
25
|
+
| |-- locks/ # 同步写锁和任务锁
|
|
26
|
+
| |-- merge-base/ # 合并基线
|
|
27
|
+
| |-- merge-backup/ # 合并或覆盖前的备份
|
|
28
|
+
| |-- *.log # SuccApp 日志
|
|
29
|
+
| `-- tsconfig.*.json # 脚本、浏览器端类型检查辅助配置
|
|
30
|
+
|-- .agents/ # AI 协作规则、计划、评审、报告和临时文件
|
|
31
|
+
| |-- README.md
|
|
32
|
+
| |-- rules/
|
|
33
|
+
| |-- plans/
|
|
34
|
+
| |-- reports/
|
|
35
|
+
| |-- reviews/
|
|
36
|
+
| `-- tmp/
|
|
37
|
+
|-- .vscode/ # VS Code 推荐设置和本地编辑器配置
|
|
38
|
+
|-- tsconfig.json # 工作区 TypeScript 诊断入口
|
|
39
|
+
|-- AGENTS.md # AI 工具主入口规则
|
|
40
|
+
|-- CLAUDE.md # Claude 读取的工作区规则入口
|
|
41
|
+
`-- .github/
|
|
42
|
+
`-- copilot-instructions.md # GitHub Copilot 读取的工作区规则入口
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
重点判断顺序:
|
|
46
|
+
|
|
47
|
+
1. 先看工作区根目录 `.meta`。根目录 `.meta` 中记录的一层目录,才是 SuccApp 识别到的元数据项目目录。
|
|
48
|
+
2. 再看目标文件所在父目录的 `.meta`。父目录 `.meta` 中记录的子文件或子目录,才是该目录下的服务器元数据资源。
|
|
49
|
+
3. 没有被对应 `.meta` 记录的目录或文件,默认只是本地辅助内容、临时内容或工具配置,不会作为业务元数据推送到 BI 服务器。
|
|
50
|
+
|
|
51
|
+
## `.meta` 规则
|
|
52
|
+
|
|
53
|
+
- `.meta` 是目录级索引文件,内容描述同目录下的直接子资源,不描述 `.meta` 文件自身。
|
|
54
|
+
- 根目录 `.meta` 用来标记哪些一级目录是元数据项目;未记录的一层目录不应当被当作服务器项目处理。
|
|
55
|
+
- 项目内每级目录的 `.meta` 继续记录该目录下的业务文件和子目录。只有在父目录 `.meta` 里有条目的资源,SuccApp 才能把它和服务器资源建立同步关系。
|
|
56
|
+
- 修改业务文件前,应同时查看同目录 `.meta`,确认资源名称、ID、版本、类型、说明、排序等元信息。
|
|
57
|
+
- 不要随意删除、重写或格式化 `.meta`。无意义的字段顺序变化、空值变化和批量格式化会制造大量同步差异,影响人工评审。
|
|
58
|
+
- 新增文件或目录时,如果它要成为服务器元数据资源,需要按现有同类资源和 SuccApp 同步规则维护对应父目录 `.meta`;如果只是本地说明、草稿、脚本或 AI 产物,不要写入 `.meta`。
|
|
59
|
+
|
|
60
|
+
## `.succapp` 目录
|
|
61
|
+
|
|
62
|
+
`.succapp/` 是 SuccApp 管理工作区时产生的本地运行态目录,重点用于连接服务器、保存同步基线、缓存远端文件和辅助编辑器诊断。
|
|
63
|
+
|
|
64
|
+
- `config.json` 保存服务器地址列表、当前激活服务器和工作区同步配置。改动前应确认目标服务器和账号环境,避免把本地工作区指向错误环境。
|
|
65
|
+
- `state.json` 保存本地同步状态、项目状态和基线信息。通常由 SuccApp 自动维护,不建议人工编辑。
|
|
66
|
+
- `remote/` 是服务器文件镜像,不是用户直接维护的业务源码。它用于比较本地与远端差异,人工修改容易破坏 status、pull、push 判断。
|
|
67
|
+
- `cache/`、`locks/`、`merge-base/`、`merge-backup/` 和日志文件都是本地运行态。除排查问题外,不作为任务交付内容修改。
|
|
68
|
+
- `tsconfig.action.json`、`tsconfig.browser.json` 等用于脚本和浏览器端类型检查,属于编辑器辅助配置。
|
|
69
|
+
|
|
70
|
+
## `.CKID` 目录
|
|
71
|
+
|
|
72
|
+
`.CKID/` 常用于保存工作区、开发环境、历史兼容工具或产品侧生成的配置。它通常是本地配置目录,不是业务元数据项目。
|
|
73
|
+
|
|
74
|
+
- 是否存在 `.CKID/`、里面有哪些文件,以当前工作区实际生成结果为准。
|
|
75
|
+
- 修改 `.CKID/` 前先确认该配置由谁消费:SuccApp、VS Code、产品运行时、构建脚本还是历史工具。
|
|
76
|
+
- 不要因为 `.CKID/` 位于工作区根目录,就把它当作会推送到 BI 服务器的元数据项目。是否推送仍以根目录 `.meta` 记录为准。
|
|
77
|
+
- 如果 `.CKID/` 中的配置影响连接、身份、环境、构建或运行结果,修改后需要说明影响范围和建议验证方式。
|
|
78
|
+
|
|
79
|
+
## 脚本开发规则
|
|
80
|
+
|
|
81
|
+
SuccApp 工作区里的脚本通常也是元数据资源。修改页面脚本、扩展脚本、服务端动作脚本或临时排查脚本时,先判断脚本文件是否被同目录 `.meta` 记录,再按对应运行环境选择 API 和依赖。
|
|
82
|
+
|
|
83
|
+
- 服务端动作脚本通常使用 `*.action.ts`,由 `.succapp/tsconfig.action.json` 提供本地诊断。它运行在服务端脚本环境,不要直接使用浏览器 DOM、浏览器 importmap 或前端组件库。
|
|
84
|
+
- 浏览器端脚本、页面交互脚本和扩展前端脚本由 `.succapp/tsconfig.browser.json` 提供本地诊断。可以使用浏览器 API,但仍要以产品运行时实际提供的模块为准。
|
|
85
|
+
- 编写 SuccBI 前端脚本前,优先查看产品包中的 `web/dist/succ-frontend-frameworks.json`。这份文件由 BI 构建脚本根据 `build-config.jsonc`、`importmap.json` 和 npm 包信息生成,用来说明运行时已内置、可通过 importmap 引入的前端依赖。
|
|
86
|
+
- 如果 `succ-frontend-frameworks.json` 里已有合适依赖,优先使用清单中的 import specifier 和示例写法;不要仅凭通用 npm 经验新增依赖、改用未出现在清单或 importmap 中的包,或假设 Node.js 依赖能在浏览器端直接加载。
|
|
87
|
+
- 关注清单条目的 `status`、`useFor`、`avoidFor`、`dependsOn`、`imports.js`、`imports.css` 和 `notes`。标记为 `legacy`、`internal` 或 `avoid` 的依赖,新功能不要主动采用,除非任务明确要求兼容历史实现。
|
|
88
|
+
- 需要 CSS、Worker、地图资源、编辑器资源等附加入口时,按 `imports.css`、`imports.prefixes` 和 `notes` 处理,不要手写 dist 产物路径。
|
|
89
|
+
- 临时验证脚本、一次性排查脚本和 AI 草稿应放在 `.agents/tmp/` 或团队约定的临时目录,不要写入业务 `.meta`;确实要沉淀为服务器资源时,再移动到元数据项目中并维护 `.meta`。
|
|
90
|
+
|
|
91
|
+
## AI 协作目录
|
|
92
|
+
|
|
93
|
+
`.agents/` 是 SuccApp 初始化项目设置时自动补齐的 AI 协作目录,用来放长期规则和协作产物,不属于业务元数据。
|
|
94
|
+
|
|
95
|
+
- `rules/` 放团队长期规则,例如本文件。
|
|
96
|
+
- `plans/` 放实施计划、迁移计划和多步骤任务计划。
|
|
97
|
+
- `reports/` 放调查、分析和验证报告。
|
|
98
|
+
- `reviews/` 放代码评审、设计评审和变更评审。
|
|
99
|
+
- `tmp/` 放临时脚本、草稿和一次性排查文件。
|
|
100
|
+
|
|
101
|
+
`plans/`、`reports/`、`reviews/` 和 `tmp/` 默认用于 AI 协作产物。是否提交到 Git、是否长期保留,由团队规则和人工确认决定。
|
|
102
|
+
|
|
103
|
+
## 修改规范
|
|
104
|
+
|
|
105
|
+
- 修改前先确认目标是否被对应 `.meta` 记录;被记录的资源按服务器元数据处理,未记录的内容按本地辅助文件处理。
|
|
106
|
+
- 生产元数据改动应保持足够小,方便人工通过 Git diff 和 SuccApp Changes 视图评审。
|
|
107
|
+
- 优先参考同目录、同类型资源的写法,不凭空发明新的元数据结构。
|
|
108
|
+
- 未经人工明确确认,不要推送服务器、重置本地修改、覆盖冲突、删除资源或执行高风险 SQL。
|
|
109
|
+
- 不要把 `.agents/`、`.vscode/`、`.succapp/`、`.CKID/` 或临时目录写入业务 `.meta`,除非已有明确产品规则要求它们成为服务器资源。
|
|
110
|
+
- 修改完成后说明变更文件、是否涉及 `.meta`、是否需要推送服务器,以及建议验证步骤。
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: succbi-frontend-development
|
|
3
|
+
description: SuccBI 前端定制开发入口。修改 FTL、页面脚本、浏览器端脚本、CSS,或需要引入产品内置/第三方前端库时使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SuccBI 前端定制开发
|
|
7
|
+
|
|
8
|
+
本 skill 用于在 SuccApp 工作区中修改 SuccBI 前端类元数据,例如 FTL 页面、浏览器端脚本、页面
|
|
9
|
+
脚本、CSS、图片资源和随页面发布的第三方 JS/CSS 文件。
|
|
10
|
+
|
|
11
|
+
## 开始前
|
|
12
|
+
|
|
13
|
+
1. 先判断目标文件是否被同目录 `.meta` 记录。被记录的文件是服务器元数据资源,新增、删除或移动时
|
|
14
|
+
需要同步维护父目录 `.meta`。
|
|
15
|
+
2. 查看同目录和相邻页面的写法,优先沿用已有目录结构、宏、样式命名和资源引用方式。
|
|
16
|
+
3. 服务端动作脚本通常是 `*.action.ts`,运行在服务端脚本环境,不要在里面使用浏览器 DOM、FTL
|
|
17
|
+
页面资源或前端 importmap。
|
|
18
|
+
|
|
19
|
+
## 使用产品内置前端库
|
|
20
|
+
|
|
21
|
+
需要 React、ECharts、Three.js、地图、编辑器、UI 组件等前端能力时,先读取本目录下的
|
|
22
|
+
`succ-frontend-frameworks.json`。
|
|
23
|
+
|
|
24
|
+
- 优先使用清单中已有依赖,不要仅凭通用 npm 经验新增依赖或假设包名能在浏览器中直接 import。
|
|
25
|
+
- 使用 `imports.js` 中的 specifier 写 JS/TS import。
|
|
26
|
+
- 需要 CSS 时,使用 `imports.css` 中的 specifier 或清单 `notes` 中说明的资源入口。
|
|
27
|
+
- 需要 worker、字体、地图资源或编辑器子资源时,先看 `imports.prefixes` 和 `notes`,不要手写
|
|
28
|
+
`/dist/node_modules/**` 产物路径。
|
|
29
|
+
- `status` 为 `recommended` 的依赖可优先用于新功能;`legacy`、`internal` 或 `avoid` 的依赖只在
|
|
30
|
+
兼容历史代码或用户明确要求时使用。
|
|
31
|
+
|
|
32
|
+
## 引入定制第三方前端库
|
|
33
|
+
|
|
34
|
+
如果 `succ-frontend-frameworks.json` 中没有合适依赖,定制开发阶段可以把第三方前端库文件直接放到
|
|
35
|
+
当前元数据目录或其子目录中,再用相对路径从 FTL 或页面资源引用。
|
|
36
|
+
|
|
37
|
+
推荐结构:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
<page-or-ftl-dir>/
|
|
41
|
+
|-- index.ftl
|
|
42
|
+
|-- scripts/
|
|
43
|
+
| `-- page.js
|
|
44
|
+
|-- styles/
|
|
45
|
+
| `-- site.css
|
|
46
|
+
`-- vendor/
|
|
47
|
+
`-- some-lib/
|
|
48
|
+
|-- some-lib.min.js
|
|
49
|
+
`-- some-lib.min.css
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
FTL 中按相对路径引用:
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<link rel="stylesheet" href="./vendor/some-lib/some-lib.min.css">
|
|
56
|
+
<link rel="stylesheet" href="./styles/site.css">
|
|
57
|
+
<script src="./vendor/some-lib/some-lib.min.js"></script>
|
|
58
|
+
<script src="./scripts/page.js"></script>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
注意:
|
|
62
|
+
|
|
63
|
+
- 不要在 SuccApp 元数据工作区里随意 `npm install`,也不要提交 `node_modules/`。
|
|
64
|
+
- 第三方文件如果要随页面同步到服务器,必须按当前目录 `.meta` 的资源规则纳入元数据;只放本地但不
|
|
65
|
+
维护 `.meta`,通常不会成为可推送的业务资源。
|
|
66
|
+
- 优先选择浏览器可直接运行的发行文件,例如 UMD/IIFE 或明确支持 `<script>` 的 ESM 文件;不要直接
|
|
67
|
+
拷贝只面向 Node.js 或构建器的源码包入口。
|
|
68
|
+
- 保留第三方库的 license 文件或来源说明,方便后续人工评审和发布合规检查。
|
|
69
|
+
|
|
70
|
+
## 修改 CSS 和页面脚本
|
|
71
|
+
|
|
72
|
+
- CSS 优先沿用现有页面的 class 命名、变量和响应式断点,不做无关重排。
|
|
73
|
+
- 页面脚本应只处理当前页面交互,不把服务端查询、权限判断或数据加工逻辑搬到浏览器端。
|
|
74
|
+
- FTL 中已有 `<@useScript>`、`<@html>`、`<@head>`、`<@body>` 等宏时,按相邻文件模式使用,不要改成
|
|
75
|
+
独立 HTML 骨架。
|
|
76
|
+
- 新增图片、字体、JS、CSS 等静态资源后,检查引用路径、大小写和 `.meta` 是否一致。
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Generated by SuccApp. Used for local TypeScript diagnostics and safe to commit to Git.
|
|
2
|
+
{
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "es5",
|
|
5
|
+
"module": "commonjs",
|
|
6
|
+
"ignoreDeprecations": "6.0",
|
|
7
|
+
"strict": false,
|
|
8
|
+
"noImplicitAny": false,
|
|
9
|
+
"noEmit": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"types": [],
|
|
12
|
+
"lib": [
|
|
13
|
+
"es2020",
|
|
14
|
+
"ES2021.String"
|
|
15
|
+
],
|
|
16
|
+
"baseUrl": ".",
|
|
17
|
+
"paths": {
|
|
18
|
+
"svr-api/*": [
|
|
19
|
+
"succ-types/svr-api/*"
|
|
20
|
+
],
|
|
21
|
+
"*": [
|
|
22
|
+
"succ-types/*",
|
|
23
|
+
"succ-types/node_modules/*"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"include": [
|
|
28
|
+
"../**/*.action.ts",
|
|
29
|
+
"succ-types/svr-api/**/*.d.ts",
|
|
30
|
+
"succ-types/commons/common-types.d.ts",
|
|
31
|
+
"succ-types/qunit/**/*.d.ts",
|
|
32
|
+
"succ-types/dw/dw-types.d.ts",
|
|
33
|
+
"succ-types/sys/sys.types.d.ts",
|
|
34
|
+
"succ-types/types*/**/*.d.ts"
|
|
35
|
+
],
|
|
36
|
+
"exclude": [
|
|
37
|
+
"../node_modules",
|
|
38
|
+
"../.git",
|
|
39
|
+
"succ-types.tmp-*",
|
|
40
|
+
"succ-types/types-dev/succ-prototype-ext-browser.d.ts"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Generated by SuccApp. Used for local TypeScript diagnostics and safe to commit to Git.
|
|
2
|
+
{
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "es2017",
|
|
5
|
+
"module": "es2020",
|
|
6
|
+
"moduleResolution": "node",
|
|
7
|
+
"ignoreDeprecations": "6.0",
|
|
8
|
+
"jsx": "react",
|
|
9
|
+
"strict": false,
|
|
10
|
+
"noImplicitAny": false,
|
|
11
|
+
"noEmit": true,
|
|
12
|
+
"declaration": false,
|
|
13
|
+
"types": [],
|
|
14
|
+
"lib": [
|
|
15
|
+
"dom",
|
|
16
|
+
"dom.iterable",
|
|
17
|
+
"es2017",
|
|
18
|
+
"ES2021.String",
|
|
19
|
+
"ES2018.Promise",
|
|
20
|
+
"ES2018.AsyncIterable",
|
|
21
|
+
"ES2018.AsyncGenerator",
|
|
22
|
+
"ES2020.Promise"
|
|
23
|
+
],
|
|
24
|
+
"baseUrl": ".",
|
|
25
|
+
"paths": {
|
|
26
|
+
"*": [
|
|
27
|
+
"succ-types/*",
|
|
28
|
+
"succ-types/node_modules/*"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"include": [
|
|
33
|
+
"../**/*.ts",
|
|
34
|
+
"../**/*.tsx",
|
|
35
|
+
"succ-types/types*/**/*.d.ts",
|
|
36
|
+
"succ-types/fapp/**/*.d.ts",
|
|
37
|
+
"succ-types/metadata/**/*.d.ts",
|
|
38
|
+
"succ-types/sys/**/*.d.ts"
|
|
39
|
+
],
|
|
40
|
+
"exclude": [
|
|
41
|
+
"../**/*.action.ts",
|
|
42
|
+
"../node_modules",
|
|
43
|
+
"../.git",
|
|
44
|
+
"succ-types.tmp-*",
|
|
45
|
+
"succ-types/svr-api",
|
|
46
|
+
"succ-types/commons",
|
|
47
|
+
"succ-types/qunit",
|
|
48
|
+
"succ-types/dw",
|
|
49
|
+
"succ-types/node_modules"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files.associations": {
|
|
3
|
+
"*.tbl": "json",
|
|
4
|
+
"*.query": "json",
|
|
5
|
+
"*.dash": "json",
|
|
6
|
+
"*.rpt": "json",
|
|
7
|
+
"*.fapp": "json",
|
|
8
|
+
"*.frm": "json",
|
|
9
|
+
"*.wfl": "json",
|
|
10
|
+
"*.afl": "json",
|
|
11
|
+
"*.app": "json",
|
|
12
|
+
"*.tpg": "json",
|
|
13
|
+
"*.spg": "json",
|
|
14
|
+
"*.spt": "json",
|
|
15
|
+
"*.mapg": "json",
|
|
16
|
+
"*.theme": "json",
|
|
17
|
+
"*.agent": "json",
|
|
18
|
+
"**/sysdata/extensions/*/package.json": "jsonc",
|
|
19
|
+
"**/sysdata/extensions/**/capabilities.json": "jsonc",
|
|
20
|
+
"*.ctpl": "json",
|
|
21
|
+
".meta": "json"
|
|
22
|
+
},
|
|
23
|
+
"files.exclude": {
|
|
24
|
+
"**/.DS_Store": true,
|
|
25
|
+
"**/Thumbs.db": true,
|
|
26
|
+
"**/ehthumbs.db": true,
|
|
27
|
+
"**/Desktop.ini": true,
|
|
28
|
+
"**/.succapp/remote": true,
|
|
29
|
+
"**/.succapp/cache": true,
|
|
30
|
+
"**/.succapp/locks": true,
|
|
31
|
+
"**/.succapp/merge-base": true,
|
|
32
|
+
"**/.succapp/merge-backup": true,
|
|
33
|
+
"**/.succapp/*.log": true,
|
|
34
|
+
"**/.succapp/state.json": true
|
|
35
|
+
},
|
|
36
|
+
"workbench.iconTheme": "succapp-file-icons"
|
|
37
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# SuccApp 工作区 Agent 说明
|
|
2
|
+
|
|
3
|
+
本工作区用于保存由 SuccApp 管理的元数据项目。SuccApp 是 SuccBI、SuccCI、SuccAP 配套的
|
|
4
|
+
VS Code 扩展,支持元数据同步、脚本开发、扩展开发、Git 协作和 AI 辅助修改。
|
|
5
|
+
|
|
6
|
+
## 产品上下文
|
|
7
|
+
|
|
8
|
+
- SuccBI 是商业智能平台,面向数据接入、数据加工、仪表板、可视化分析、自助分析和报表场景。
|
|
9
|
+
- SuccCI 是报表报送和数据采集平台,面向表单设计、填报、审批、上报和汇总流程。
|
|
10
|
+
- SuccAP 是低代码应用平台,面向模型驱动的业务应用、页面、流程、权限和自定义交互。
|
|
11
|
+
- SuccApp 操作的是这些产品的本地元数据文件。这里的修改仍需要人工评审、服务器验证、Git
|
|
12
|
+
评审和发布确认。
|
|
13
|
+
|
|
14
|
+
## 修改前必须读取
|
|
15
|
+
|
|
16
|
+
修改任何内容前,先读:
|
|
17
|
+
|
|
18
|
+
1. 本文件。
|
|
19
|
+
2. `.agents/README.md`:工作区目录、`.meta`、`.succapp` 运行态和 AI 产物位置说明。
|
|
20
|
+
3. `.agents/rules/` 下和当前任务相关的细则。
|
|
21
|
+
|
|
22
|
+
如果任务涉及具体项目、页面、报表、模型、脚本或扩展,还要先查看相邻文件、同目录 `.meta`
|
|
23
|
+
以及同类元数据写法,再开始修改。
|
|
24
|
+
|
|
25
|
+
## 工作区关键结构
|
|
26
|
+
|
|
27
|
+
- 工作区根目录下的普通目录通常是从服务器克隆的元数据项目,例如页面、报表、模型、脚本和扩展等
|
|
28
|
+
交付内容。
|
|
29
|
+
- 每个项目目录中通常包含 `.meta`。`.meta` 保存服务器资源标识、版本和目录下资源的元信息,是
|
|
30
|
+
SuccApp 同步和差异判断的重要依据。不要随意删除、重写或格式化 `.meta`。
|
|
31
|
+
- `.succapp/config.json` 保存服务器地址列表和当前活跃服务器。
|
|
32
|
+
- `.succapp/remote/`、`.succapp/cache/`、`.succapp/locks/`、`.succapp/merge-base/`、
|
|
33
|
+
`.succapp/merge-backup/`、`.succapp/*.log` 和 `.succapp/state.json` 是本地运行态文件,通常不应
|
|
34
|
+
作为业务内容修改或提交。
|
|
35
|
+
- `.vscode/settings.json`、`tsconfig.json` 和 `.succapp/tsconfig.*.json` 是本地编辑器和脚本诊断辅助文件。
|
|
36
|
+
- AI 计划、评审、报告和临时文件统一放在 `.agents/` 下,具体目录和忽略规则见 `.agents/README.md`。
|
|
37
|
+
|
|
38
|
+
## 读取顺序
|
|
39
|
+
|
|
40
|
+
这里是主入口。如果 `.agents/README.md` 或 `.agents/rules/` 中有更细的说明,以细则为准;但
|
|
41
|
+
不要跳过本文件中的安全边界和 `.meta` 约束。
|
|
42
|
+
|
|
43
|
+
## 工作规则
|
|
44
|
+
|
|
45
|
+
- 修改前先查看相关元数据文件、相邻 `.meta` 和当前 SuccApp 同步状态。
|
|
46
|
+
- 改动范围应收敛到用户指定的项目、页面、报表、模型、脚本或扩展。
|
|
47
|
+
- 未经用户明确要求并确认目标环境,不要推送服务器、重置本地修改、覆盖冲突、删除元数据或执行高风险 SQL。
|
|
48
|
+
- AI 计划、评审、报告和临时文件的目录规则以 `.agents/README.md` 为准。
|
|
49
|
+
- 优先遵循现有项目约定和相邻元数据写法,不要凭空发明新结构。
|
|
50
|
+
- 修改完成后说明变更文件和建议检查项。
|