yidaconnector 2026.6.11

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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +383 -0
  3. package/bin/yida.js +670 -0
  4. package/lib/app/form-navigation.js +58 -0
  5. package/lib/app/get-schema.js +538 -0
  6. package/lib/auth/auth.js +294 -0
  7. package/lib/auth/cdp-browser-login.js +390 -0
  8. package/lib/auth/codex-login.js +71 -0
  9. package/lib/auth/login.js +475 -0
  10. package/lib/auth/org.js +363 -0
  11. package/lib/auth/qr-login.js +1563 -0
  12. package/lib/core/chalk.js +384 -0
  13. package/lib/core/check-update.js +82 -0
  14. package/lib/core/cli-error.js +39 -0
  15. package/lib/core/command-manifest.js +106 -0
  16. package/lib/core/env-cmd.js +545 -0
  17. package/lib/core/env-manager.js +601 -0
  18. package/lib/core/env.js +287 -0
  19. package/lib/core/i18n.js +177 -0
  20. package/lib/core/locales/ar.js +805 -0
  21. package/lib/core/locales/de.js +805 -0
  22. package/lib/core/locales/en.js +1623 -0
  23. package/lib/core/locales/es.js +805 -0
  24. package/lib/core/locales/fr.js +805 -0
  25. package/lib/core/locales/hi.js +805 -0
  26. package/lib/core/locales/ja.js +1197 -0
  27. package/lib/core/locales/ko.js +807 -0
  28. package/lib/core/locales/pt.js +805 -0
  29. package/lib/core/locales/vi.js +805 -0
  30. package/lib/core/locales/zh-HK.js +1233 -0
  31. package/lib/core/locales/zh.js +1584 -0
  32. package/lib/core/query-data.js +781 -0
  33. package/lib/core/redact.js +100 -0
  34. package/lib/core/utils.js +799 -0
  35. package/lib/core/yida-client.js +117 -0
  36. package/package.json +94 -0
  37. package/project/config.json +4 -0
  38. package/project/pages/src/demo-birthday-game.oyd.jsx +832 -0
  39. package/project/pages/src/demo-chip-insight.oyd.jsx +983 -0
  40. package/project/pages/src/demo-compat-smoke.oyd.jsx +58 -0
  41. package/project/pages/src/demo-crm-batch-entry.oyd.jsx +805 -0
  42. package/project/pages/src/demo-crm-dashboard.oyd.jsx +677 -0
  43. package/project/pages/src/demo-future-vision-2026.oyd.jsx +1102 -0
  44. package/project/pages/src/demo-ppt.oyd.jsx +1192 -0
  45. package/project/pages/src/demo-salary-calculator.oyd.jsx +904 -0
  46. package/project/pages/src/yidaconnector-knowledge-doc.oyd.jsx +1714 -0
  47. package/project/prd/demo-birthday-game.md +39 -0
  48. package/project/prd/demo-crm.md +463 -0
  49. package/project/prd/demo-dingtalk-ai-solution-center.md +425 -0
  50. package/project/prd/demo-future-vision-2026.md +78 -0
  51. package/project/prd/demo-salary-calculator.md +101 -0
  52. package/scripts/build-skills-package.js +406 -0
  53. package/scripts/check-syntax.js +59 -0
  54. package/scripts/demo-dws.sh +106 -0
  55. package/scripts/e2e-real/cleanup.js +67 -0
  56. package/scripts/e2e-real/fixtures/form-fields.json +18 -0
  57. package/scripts/e2e-real/full-runner.js +1566 -0
  58. package/scripts/e2e-real/runner.js +293 -0
  59. package/scripts/e2e-real/skill-coverage.js +115 -0
  60. package/scripts/generate-command-docs.js +109 -0
  61. package/scripts/nightly-smoke.js +134 -0
  62. package/scripts/postinstall.js +545 -0
  63. package/scripts/solution-center-runner.js +368 -0
  64. package/scripts/validate-ci.sh +50 -0
  65. package/scripts/validate-command-manifest.js +119 -0
  66. package/scripts/validate-package-size.js +78 -0
  67. package/scripts/validate-skills.js +247 -0
  68. package/scripts/validate-structure.js +66 -0
  69. package/yida-skills/SKILL.md +163 -0
  70. package/yida-skills/references/yida-api.md +1309 -0
  71. package/yida-skills/skills/large-file-write/SKILL.md +91 -0
  72. package/yida-skills/skills/large-file-write/references/write-patterns.md +149 -0
  73. package/yida-skills/skills/large-file-write/scripts/write.js +157 -0
  74. package/yida-skills/skills/yida-data-management/SKILL.md +252 -0
  75. package/yida-skills/skills/yida-data-management/references/api-matrix.md +49 -0
  76. package/yida-skills/skills/yida-data-management/references/data-format-guide.md +159 -0
  77. package/yida-skills/skills/yida-data-management/references/verified-endpoints.md +62 -0
  78. package/yida-skills/skills/yida-login/SKILL.md +159 -0
  79. package/yida-skills/skills/yida-logout/SKILL.md +67 -0
@@ -0,0 +1,1584 @@
1
+ /**
2
+ * zh.js - 中文翻译
3
+ */
4
+ 'use strict';
5
+
6
+ module.exports = {
7
+ // ── 通用 ──────────────────────────────────────────
8
+
9
+ // ── bin/yida.js printHelp() ────────────────────────
10
+ help: {
11
+ subtitle: '宜搭低代码 AI 开发工具',
12
+ usage: '用法:',
13
+ alias: '别名:',
14
+ group_auth: '环境 & 认证',
15
+ cmd_login: '登录(优先缓存,按需使用 --browser 或 --agent-qr)',
16
+ cmd_logout: '退出登录 / 切换账号',
17
+ cmd_auth: '登录态管理',
18
+ cmd_org: '组织管理(列出 / 切换)',
19
+ cmd_env: '检测 AI 工具环境和登录态',
20
+ cmd_env_management: '管理公有云 / 私有化环境',
21
+ group_app: '应用管理',
22
+ cmd_app_list: '查询我的应用列表',
23
+ cmd_corp_efficiency: '查询企业效能概览和明细报表',
24
+ cmd_create_app: '创建宜搭应用',
25
+ cmd_update_app: '更新应用信息',
26
+ cmd_nav_group: '管理应用左侧导航分组',
27
+ cmd_app_permission: '管理应用主管理员、数据管理员和开发成员',
28
+ cmd_i18n: '管理应用多语言文案和语言配置',
29
+ cmd_export: '导出应用(生成迁移包)',
30
+ cmd_import: '导入迁移包,重建应用',
31
+ group_form: '表单 & 页面',
32
+ cmd_create_form: '创建表单页面',
33
+ cmd_update_form: '更新表单页面',
34
+ cmd_list_forms: '列出应用下的表单/页面',
35
+ cmd_aggregate_table: '管理聚合表(virtualView)',
36
+ cmd_get_schema: '获取单个或全部表单 Schema',
37
+ cmd_create_page: '创建自定义展示页面',
38
+ cmd_generate_page: '基于高质量模板生成页面',
39
+ cmd_build_page: '构建宜搭兼容页面源码',
40
+ cmd_check_page: '检查自定义页面规范',
41
+ cmd_compile: '本地编译自定义页面',
42
+ cmd_publish: '编译并发布自定义页面',
43
+ cmd_update_form_config: '更新表单配置',
44
+ group_data: '数据 & 权限',
45
+ cmd_data: '统一数据管理(表单/流程/任务/子表单)',
46
+ cmd_task_center: '全局任务中心(待办/已处理/抄送等)',
47
+ cmd_basic_info: '查询组织基本信息、容量、额度和域名设置',
48
+ cmd_get_permission: '查询表单权限配置',
49
+ cmd_save_permission: '保存表单权限配置',
50
+ cmd_corp_manager: '管理平台管理员与通讯录权限',
51
+ cmd_agent_center: '管理流程代理和离职代理',
52
+ group_process: '流程',
53
+ cmd_configure_process: '配置并发布流程规则',
54
+ cmd_create_process: '创建流程表单(一体化)',
55
+ cmd_ai_form_setting: '管理流程表单 AI 审批提示',
56
+ cmd_process_preview: '预览流程实例(可视化流程图)',
57
+ group_share: '页面配置 & 分享',
58
+ cmd_verify_url: '验证短链接 URL',
59
+ cmd_save_share: '保存公开访问 / 分享配置',
60
+ cmd_get_page_config: '查询页面公开访问配置',
61
+ cmd_externalize_form: '生成外部开放安全评估和镜像字段方案',
62
+ group_report: '报表',
63
+ cmd_create_report: '创建宜搭报表',
64
+ cmd_append_chart: '向已有报表追加图表',
65
+ group_connector: '连接器',
66
+ cmd_connector_list: '列出 HTTP 连接器',
67
+ cmd_connector_create: '创建连接器',
68
+ cmd_connector_detail: '查看连接器详情',
69
+ cmd_connector_delete: '删除连接器',
70
+ cmd_connector_add_action: '添加执行动作',
71
+ cmd_connector_list_actions: '列出执行动作',
72
+ cmd_connector_delete_action: '删除执行动作',
73
+ cmd_connector_test: '测试执行动作',
74
+ cmd_connector_list_connections: '列出鉴权账号',
75
+ cmd_connector_create_connection: '创建鉴权账号',
76
+ cmd_connector_smart: '智能创建连接器(从 cURL)',
77
+ cmd_connector_parse_api: '解析接口信息',
78
+ cmd_connector_gen_template: '生成接口文档模板',
79
+ cmd_connector_more: '查看更多子命令',
80
+ group_integration: '集成 & 钉钉',
81
+ cmd_integration: '创建集成自动化逻辑流',
82
+ cmd_integration_list: '列出集成自动化逻辑流',
83
+ cmd_integration_enable: '启用集成自动化逻辑流',
84
+ cmd_integration_disable: '停用集成自动化逻辑流',
85
+ cmd_integration_check: '检查集成自动化异常运行日志',
86
+ cmd_integration_diagnose: '诊断集成自动化故障文本和常见配置坑',
87
+ cmd_dws: '钉钉 CLI(通讯录/日历/待办/审批等)',
88
+ cmd_dingtalk_link: '生成钉钉 AppLink / 兼容 dingtalk:// 跳转链接',
89
+ group_utility: '工具',
90
+ cmd_commands: '输出机器可读命令清单',
91
+ cmd_a2a: '启动本地只读 A2A Adapter 或输出 Agent Card',
92
+ cmd_bridge: '启动 YidaConnector 本地网页桥接服务',
93
+ cmd_copy: '复制 project 工作目录',
94
+ cmd_sample: '输出代码示例/模板',
95
+ cmd_doctor: '环境诊断与自动修复',
96
+ cmd_db_seq_fix: 'PostgreSQL Sequence 漂移检测与修复',
97
+ cmd_formula_evaluate: '静态检查宜搭公式语法和字段引用',
98
+ cmd_update: '检查并更新到最新版本',
99
+ cmd_export_conversation: '导出 AI 对话记录',
100
+ cmd_feedback: '配置体验反馈表单和本地提醒状态',
101
+ cmd_batch: '批量执行 YidaConnector 命令',
102
+ cmd_flash_to_prd: '闪记 / 会议纪要转 PRD prompt',
103
+ cmd_ai: '调用宜搭 AI 文生文和识图能力',
104
+ cmd_cdn: 'CDN 图片管理(配置/上传/刷新)',
105
+ cmd_cdn_config: '配置 CDN / OSS 上传',
106
+ cmd_cdn_upload: '上传图片到 CDN',
107
+ cmd_cdn_refresh: '刷新 CDN 缓存',
108
+ quickstart_title: '快速上手',
109
+ quickstart_app_name: '考勤管理',
110
+ quickstart_form_name: '员工信息',
111
+ docs: '📚 文档:',
112
+ },
113
+
114
+ // ── bin/yida.js ────────────────────────────────────
115
+ cli: {
116
+ help: `
117
+ yidaconnector - 宜搭命令行工具
118
+
119
+ 用法:
120
+ yidaconnector <命令> [参数...](别名:yida)
121
+
122
+ 命令:
123
+ env 检测当前 AI 工具环境和登录态
124
+ copy [--force] 复制 project 工作目录到当前 AI 工具环境
125
+ login 登录态管理(优先缓存,否则扫码)
126
+ logout 退出登录 / 切换账号
127
+ create-app "<名称>" [描述] [图标] [颜色] [主题色] [导航风格] [布局] 创建应用,输出 appType
128
+ create-page <appType> "<页面名>" [--mode dashboard] 创建自定义页面,输出 pageId
129
+ create-form create <appType> "<表单名>" <字段JSON> [--layout <布局>] [--theme <主题>] [--label-align <对齐>] 创建表单页面
130
+ create-form update <appType> <formUuid> <修改JSON> 更新表单页面
131
+ list-forms <appType> [--keyword <关键词>] 列出应用下的表单/页面
132
+ get-schema <appType> <formUuid|--all> 获取单个或全部表单 Schema
133
+ formula evaluate <公式或文件> [--schema <schema.json>] 静态检查宜搭公式
134
+ publish <源文件路径> <appType> <formUuid> [--health-check] 编译并发布自定义页面
135
+ verify-short-url <appType> <formUuid> <url> 验证短链接 URL 是否可用
136
+ save-share-config <appType> <formUuid> <url> <isOpen> [auth] 保存公开访问/分享配置
137
+ get-page-config <appType> <formUuid> 查询页面公开访问/分享配置
138
+ update-form-config <appType> <formUuid> <isRenderNav> <title> 更新表单配置
139
+ data <action> <resource> [args] 统一数据管理(表单/流程/任务/子表单)
140
+ task-center <type> [--page N] [--size N] [--keyword TEXT] 全局任务中心(待办/我创建的/我已处理/抄送/代提交)
141
+ doctor [选项] 检查环境依赖,诊断应用问题
142
+ --fix / --repair 诊断并自动修复
143
+ --production --app <appId> 线上应用诊断
144
+ --monitor 启动实时健康度监控
145
+ --report <format> 生成诊断报告(json | markdown | html)
146
+ --create-ticket 根据诊断结果创建工单
147
+ --create-voc 创建 VOC(需求反馈)
148
+ --auto-submit 自动判断并提交工单或 VOC
149
+ auth status 查看当前登录状态
150
+ auth login 执行登录
151
+ auth refresh 刷新登录态
152
+ auth logout 退出登录
153
+ org list 列出可访问的组织
154
+ org switch --corp-id <corpId> 切换组织(无需重新登录)
155
+ export <appType> [output] 导出应用所有表单 Schema(生成迁移包)
156
+ import <file> [name] 导入迁移包,在目标环境重建应用
157
+ get-permission <appType> <formUuid> 查询表单权限配置
158
+ save-permission <appType> <formUuid> [--data-permission <json>] [--action-permission <json>] 保存表单权限配置
159
+ configure-process <appType> <formUuid> <processDefinitionFile> [processCode] 配置并发布流程
160
+ create-process <appType> <formTitle> <fieldsJsonFile> <processDefinitionFile> 创建流程表单(一体化)
161
+ create-process <appType> --formUuid <formUuid> <processDefinitionFile> 复用已有表单创建流程
162
+ connector list [选项] 列出 HTTP 连接器
163
+ connector create "名称" "域名" --operations <file> [选项] 创建连接器
164
+ connector detail <connector-id> 查看连接器详情
165
+ connector delete <connector-id> [--force] 删除连接器
166
+ connector add-action --operations <file> --connector-id <id> 添加执行动作到连接器
167
+ connector list-actions <connector-id> 列出执行动作
168
+ connector delete-action <connector-id> <operation-id> 删除执行动作
169
+ connector test --connector-id <id> --action <actionId> 测试执行动作
170
+ connector list-connections <connector-id> 列出鉴权账号
171
+ connector create-connection <connector-id> <name> [选项] 创建鉴权账号
172
+ connector smart-create --curl "curl命令" [选项] 智能创建连接器
173
+ connector parse-api [选项] 解析接口信息
174
+ connector gen-template [输出路径] 生成接口文档模板
175
+ integration create <appType> <formUuid> <flowName> [选项] 创建集成&自动化逻辑流
176
+ integration check <appType...> [--json] [--output xlsx] 检查集成自动化异常运行日志
177
+ create-report <appType> "<报表名称>" <图表定义JSON或文件路径> 创建宜搭报表
178
+ append-chart <appType> <reportId> <图表定义JSON或文件路径> 向已有报表追加图表
179
+ dws <command> [args] 钉钉 CLI(通讯录/日历/待办/审批等)
180
+ export-conversation [选项] 导出 AI 对话记录
181
+ --output, -o <path> 指定输出文件路径
182
+ --input, -i <file> 指定输入对话文件
183
+ --latest 只导出最新对话(默认)
184
+ --list 列出可用的对话记录
185
+ cdn-config [选项] 配置 CDN 图片上传(阿里云 OSS + CDN)
186
+ cdn-upload <图片路径> [选项] 上传图片到 CDN
187
+ cdn-refresh [选项] 刷新 CDN 缓存
188
+
189
+ 示例:
190
+ yidaconnector login
191
+ yidaconnector logout
192
+ yidaconnector create-app "考勤管理"
193
+ yidaconnector create-app "考勤管理" "员工考勤系统" "xian-daka" "#00B853" "deepBlue" "dark" "slide"
194
+ yidaconnector create-app "党建管理" "党员管理系统" "xian-zhengfu" "#FF4D4F" "red" "light" "ver"
195
+ yidaconnector create-page APP_XXX "游戏主页"
196
+ yidaconnector create-form create APP_XXX "员工信息" .cache/yidaconnector/forms/employee-fields.json
197
+ yidaconnector create-form update APP_XXX FORM-XXX '[{"action":"add","field":{"type":"TextField","label":"备注"}}]'
198
+ yidaconnector list-forms APP_XXX
199
+ yidaconnector list-forms APP_XXX --keyword 客户
200
+ yidaconnector get-schema APP_XXX FORM-XXX
201
+ yidaconnector get-schema APP_XXX --all --output-dir .cache/schemas
202
+ yidaconnector formula evaluate 'IF(GT(#{numberField_total}, 100), "高", "低")' --schema .cache/schema.json
203
+ yidaconnector publish pages/src/home.oyd.jsx APP_XXX FORM-XXX
204
+ yidaconnector verify-short-url APP_XXX FORM-XXX /o/myapp
205
+ yidaconnector save-share-config APP_XXX FORM-XXX /o/myapp y n
206
+ yidaconnector get-page-config APP_XXX FORM-XXX
207
+ yidaconnector update-form-config APP_XXX FORM-XXX false "页面标题"
208
+ yidaconnector data query form APP_XXX FORM-XXX --page 1 --size 20
209
+ yidaconnector dws contact user search --keyword "悟空"
210
+ yidaconnector dws calendar event list
211
+ yidaconnector dws todo task create --title "任务"
212
+ yidaconnector create-report APP_XXX "销售报表" .cache/yidaconnector/reports/charts.json
213
+ yidaconnector append-chart APP_XXX REPORT-XXX .cache/yidaconnector/reports/charts.json
214
+ yidaconnector configure-process APP_XXX FORM-YYY .cache/yidaconnector/process/process-def.json
215
+ yidaconnector create-process APP_XXX "订单处理表" .cache/yidaconnector/process/fields.json .cache/yidaconnector/process/process-def.json
216
+ yidaconnector create-process APP_XXX --formUuid FORM-YYY .cache/yidaconnector/process/process-def.json
217
+ yidaconnector export APP_XXX
218
+ yidaconnector export APP_XXX ./my-app-backup.json
219
+ yidaconnector import ./yida-export.json
220
+ yidaconnector import ./yida-export.json "质量追溯系统(生产环境)"
221
+ yidaconnector doctor 完整诊断
222
+ yidaconnector doctor --fix 诊断并自动修复
223
+ yidaconnector doctor --production --app APP_XXX 线上应用诊断
224
+ yidaconnector doctor --monitor 实时监控
225
+ yidaconnector doctor --report markdown 生成 Markdown 报告
226
+ yidaconnector doctor --create-ticket 创建工单
227
+ yidaconnector doctor --create-voc 创建 VOC
228
+ yidaconnector doctor --auto-submit 自动判断并提交
229
+ yidaconnector export-conversation 导出当前对话记录
230
+ yidaconnector export-conversation -o output.md 指定输出路径
231
+ yidaconnector export-conversation --list 列出可用对话
232
+ `,
233
+ unknown_command: '未知命令: {0}',
234
+ run_help: '运行 yidaconnector --help 查看帮助',
235
+ integration_help: '用法: yidaconnector integration <create|list|enable|disable|check|diagnose> ...',
236
+ integration_unknown: '未知的 integration 子命令: {0}',
237
+ integration_help_hint: '使用 yidaconnector integration --help 查看可用子命令',
238
+ integration_list_usage: '用法: yidaconnector integration list <appType> [--form-uuid <uuid>] [--status y|n] [--key <kw>] [--page <n>] [--size <n>] [--json]',
239
+ integration_list_example: '示例: yidaconnector integration list APP_XXX --form-uuid FORM-XXX --json',
240
+ integration_enable_usage: '用法: yidaconnector integration enable <appType> <formUuid> <processCode>',
241
+ integration_enable_example: '示例: yidaconnector integration enable APP_XXX FORM-XXX LPROC-XXX',
242
+ integration_disable_usage: '用法: yidaconnector integration disable <appType> <formUuid> <processCode>',
243
+ integration_disable_example: '示例: yidaconnector integration disable APP_XXX FORM-XXX LPROC-XXX',
244
+ compile_usage: '用法: yidaconnector compile <源文件路径>',
245
+ compile_example: '示例: yidaconnector compile pages/src/home.oyd.jsx',
246
+ check_page_usage: '用法: yidaconnector check-page <源文件路径> [--compat] [--json]',
247
+ check_page_example: '示例: yidaconnector check-page pages/src/home.oyd.jsx --json',
248
+ generate_page_usage: '用法: yidaconnector generate-page <template> --output pages/src/home.oyd.jsx [--spec .cache/yidaconnector/page-specs/home.json] [--compile]',
249
+ generate_page_example: '示例: yidaconnector generate-page product-homepage --brand-name OpenKuma --brand-initials OK --output pages/src/home.oyd.jsx --compile',
250
+ build_page_usage: '用法: yidaconnector build-page <源文件路径> [--output pages/build/page.yida.jsx|--write] [--json]',
251
+ build_page_example: '示例: yidaconnector build-page pages/src/dashboard.oyd.jsx --output pages/build/dashboard.yida.jsx',
252
+ publish_usage: '用法: yidaconnector publish <源文件路径> <appType> <formUuid> [--health-check]',
253
+ publish_example: '示例: yidaconnector publish pages/src/home.oyd.jsx APP_XXX FORM-XXX --health-check',
254
+ formula_usage: '用法: yidaconnector formula evaluate <公式或文件> [--schema schema.json] [--json] [--strict]',
255
+ formula_example: '示例: yidaconnector formula evaluate \'IF(GT(#{numberField_total}, 100), "高", "低")\' --schema .cache/schema.json',
256
+ verify_usage: '用法: yidaconnector verify-short-url <appType> <formUuid> <url>',
257
+ verify_example: '示例: yidaconnector verify-short-url APP_XXX FORM-XXX /o/myapp',
258
+ share_usage: '用法: yidaconnector save-share-config <appType> <formUuid> <url> <isOpen> [openAuth]',
259
+ share_example: '示例: yidaconnector save-share-config APP_XXX FORM-XXX /o/myapp y n',
260
+ page_config_usage: '用法: yidaconnector get-page-config <appType> <formUuid>',
261
+ page_config_example: '示例: yidaconnector get-page-config APP_XXX FORM-XXX',
262
+ form_config_usage: '用法: yidaconnector update-form-config <appType> <formUuid> <isRenderNav> <title>',
263
+ form_config_example: '示例: yidaconnector update-form-config APP_XXX FORM-XXX false "页面标题"',
264
+ update_app_usage: '用法: yidaconnector update-app <appType> --name "新名称" [--desc "描述"] [--icon "图标"]',
265
+ update_app_example: '示例: yidaconnector update-app APP_XXX --name "新应用名称" --desc "新描述"',
266
+ export_usage: '用法: yidaconnector export <appType> [output]',
267
+ export_example1: '示例: yidaconnector export APP_XXX',
268
+ export_example2: ' yidaconnector export APP_XXX ./my-app-backup.json',
269
+ import_usage: '用法: yidaconnector import <file> [name]',
270
+ import_example1: '示例: yidaconnector import ./yida-export.json',
271
+ import_example2: ' yidaconnector import ./yida-export.json "质量追溯系统(生产环境)"',
272
+ configure_process_usage: '用法: yidaconnector configure-process <appType> <formUuid> <processDefinitionFile> [processCode]',
273
+ configure_process_example: '示例: yidaconnector configure-process "APP_XXX" "FORM-YYY" .cache/yidaconnector/process/process-definition.json',
274
+ create_process_usage: '用法: yidaconnector create-process <appType> <formTitle> <fieldsJsonFile> <processDefinitionFile>\n yidaconnector create-process <appType> --formUuid <formUuid> <processDefinitionFile>',
275
+ create_process_example: '示例: yidaconnector create-process "APP_XXX" "订单处理表" .cache/yidaconnector/process/fields.json .cache/yidaconnector/process/process-definition.json',
276
+ process_usage: '用法: yidaconnector process <子命令>\n\n子命令:\n preview <appType> <processInstanceId> [--output <path>] 预览流程实例(生成可视化流程图)',
277
+ process_preview_usage: '用法: yidaconnector process preview <appType> <processInstanceId> [--output <path>]',
278
+ process_preview_example: '示例: yidaconnector process preview APP_XXX proc-inst-id-xxx',
279
+ get_permission_usage: '用法: yidaconnector get-permission <appType> <formUuid>',
280
+ get_permission_example: '示例: yidaconnector get-permission APP_XXX FORM-XXX',
281
+ save_permission_usage: '用法: yidaconnector save-permission <appType> <formUuid> [--data-permission <json>] [--action-permission <json>]',
282
+ save_permission_example: "示例: yidaconnector save-permission APP_XXX FORM-XXX --data-permission '{\"role\":\"DEFAULT\",\"dataRange\":\"SELF\"}'",
283
+ exec_failed: '\n❌ 执行失败: {0}',
284
+ first_run_title: ' 🤖 YidaConnector - AI 问答模式已开启! ',
285
+ first_run_welcome: ' {0}欢迎首次使用 YidaConnector!{1} 以下是快速上手指南:',
286
+ first_run_way1_title: ' 📝 方式一:直接描述需求',
287
+ first_run_way1_desc: ' 在 AI 工具对话框中,直接告诉 AI 你想要什么:',
288
+ first_run_prompt1: ' 「帮我用宜搭创建一个考勤管理系统」',
289
+ first_run_prompt2: ' 「创建一个 CRM 客户管理系统」',
290
+ first_run_prompt3: ' 「帮我搭建个人薪资计算器应用」',
291
+ first_run_way2_title: ' 💡 方式二:指定详细需求',
292
+ first_run_prompt4: ' 「创建一个员工入职流程,包含基本信息填写、部门审批、HR 备案」',
293
+ first_run_examples_title: ' 📋 示例应用',
294
+ first_run_examples: ' 薪资计算器 • 生日祝福小程序 • 企业宣传页',
295
+ first_run_tips_title: ' 🔧 首次使用建议',
296
+ first_run_tip1: ' 1. 运行 {0}yidaconnector env{1} 检测环境和登录态',
297
+ first_run_tip2: ' 2. 运行 {0}yidaconnector login{1} 登录宜搭账号',
298
+ first_run_tip3: ' 3. 在 AI 工具中直接对话,描述你想要的应用 🚀',
299
+ first_run_footer1: ' 支持的 AI 工具:Codex / Claude Code / Aone Copilot / Cursor / OpenCode',
300
+ first_run_footer2: ' 📚 文档:https://github.com/bunnyrui/yidaconnector',
301
+ first_run_footer3: ' (此引导仅首次运行时显示,运行 yidaconnector --help 查看所有命令)',
302
+ },
303
+
304
+ // ── lib/integration/integration-check.js ─────────
305
+ integration_check: {
306
+ result_sheet: '结果',
307
+ header_app: '应用',
308
+ header_form_title: '表单名称',
309
+ header_form_uuid: '表单ID',
310
+ header_flow_name: '自动化名称',
311
+ header_process_code: '自动化ID',
312
+ header_flow_status: '自动化状态',
313
+ header_event_name: '触发事件',
314
+ header_last_action: '最后操作',
315
+ header_modifier: '修改人',
316
+ header_modified_time: '修改时间',
317
+ header_abnormal_log_count: '异常日志数',
318
+ header_proc_inst_id: '运行实例ID',
319
+ header_form_inst_id: '表单实例ID',
320
+ header_execution_status: '执行状态',
321
+ header_exception: '异常信息',
322
+ header_diagnosis: '诊断',
323
+ header_recommendation: '建议',
324
+ header_start_time: '开始时间',
325
+ header_finish_time: '完成时间',
326
+ header_elapsed_ms: '耗时(ms)',
327
+ no_abnormal: '未发现执行异常日志',
328
+ app_failed: '应用检查失败:{0}',
329
+ summary: '检查完成:{0} 个应用,{1} 条自动化,{2} 条存在异常日志',
330
+ apps_failed: '有 {0} 个应用检查失败,详见 JSON 输出或错误摘要。',
331
+ no_logs: '未发现执行异常日志。',
332
+ usage: 'yidaconnector integration check <appType...> [--json] [--output result.xlsx] [--no-progress] [--flow-types 1,2,3,5,6] [--log-page-size 10] [--max-log-pages 1]',
333
+ example: 'yidaconnector integration check APP_XXX --output project/output/自动化异常.xlsx',
334
+ missing_app: '缺少 appType。用法:yidaconnector integration check <appType...>',
335
+ banner_title: '检查集成自动化异常日志',
336
+ status_filter: '执行状态筛选:{0}',
337
+ checking_app: '检查应用:{0}',
338
+ progress: '检查进度 {0}{1}',
339
+ current: ',当前:{0}',
340
+ excel_exported: 'Excel 已导出:{0}',
341
+ },
342
+
343
+ // ── lib/integration/integration-create.js ─────────
344
+ integration: {
345
+ create_usage: '用法: yidaconnector integration create <appType> <formUuid> <flowName> [选项]',
346
+ create_args_title: '参数:',
347
+ create_arg_app_type: ' appType 应用 ID,如 APP_XXX',
348
+ create_arg_form_uuid: ' formUuid 触发表单 UUID,如 FORM-XXX',
349
+ create_arg_flow_name: ' flowName 集成自动化名称',
350
+ create_options_title: '选项:',
351
+ create_opt_process_code: ' --process-code <code> 更新已有逻辑流的 processCode',
352
+ create_opt_receivers: ' --receivers <ids> 钉钉工作通知接收人 userId,多个用逗号分隔',
353
+ create_opt_title: ' --title <text> 通知标题,支持 #{fieldId-ComponentType}#',
354
+ create_opt_content: ' --content <text> 通知内容,支持 #{fieldId-ComponentType}#',
355
+ create_opt_events: ' --events <list> 触发事件,insert/update/delete/comment/processFinish/activityTask',
356
+ create_opt_data_form_uuid: ' --data-form-uuid <uuid> 插入获取单条数据节点的目标表单 UUID',
357
+ create_opt_data_condition: ' --data-condition <rule> 获取数据过滤条件:目标字段:字段名:触发字段[:组件[:操作符[:值类型]]]',
358
+ create_opt_get_self: ' --get-self 自动插入获取自身节点(pid 等于触发事件表单实例ID)',
359
+ create_opt_get_self_field: ' --get-self-field <field> 覆盖右侧触发事件系统字段,默认 __masterdata_form_inst_id',
360
+ create_opt_get_self_query_field: ' --get-self-query-field <f> 覆盖左侧查询系统字段,默认 pid',
361
+ create_opt_add_data_form_uuid: ' --add-data-form-uuid <uuid> 插入新增数据节点的目标表单 UUID',
362
+ create_opt_add_data_assignment: ' --add-data-assignment <rule> 新增数据赋值:目标字段:valueType:value',
363
+ create_opt_publish: ' --publish 保存后立即发布',
364
+ create_examples_title: '示例:',
365
+ create_example1: ' yidaconnector integration create APP_XXX FORM-XXX "新增通知" --receivers user123 --publish',
366
+ create_example2: ' yidaconnector integration create APP_XXX FORM-XXX "获取自身后通知" --get-self --publish',
367
+ create_missing_args: '缺少必要参数。',
368
+ create_invalid_events: '未识别到有效触发事件。',
369
+ create_no_receivers: '未指定通知接收人或成员字段,将不会生成消息通知节点。',
370
+ create_title: '创建集成自动化逻辑流',
371
+ create_app_type: '应用 ID: {0}',
372
+ create_form_uuid: '触发表单: {0}',
373
+ create_flow_name: '逻辑流名称: {0}',
374
+ create_mode_update: '模式: 更新已有逻辑流',
375
+ create_mode_new: '模式: 新建逻辑流',
376
+ create_process_code: '逻辑流 ID: {0}',
377
+ create_events: '触发事件: {0}',
378
+ create_receivers: '通知接收人: {0}',
379
+ create_receivers_empty: '无',
380
+ create_notify_title: '通知标题: {0}',
381
+ create_notify_content: '通知内容: {0}',
382
+ create_data_form: '获取数据表单: {0}',
383
+ create_data_conditions: '获取数据条件数: {0}',
384
+ create_get_self_summary: '获取自身闭坑: {0} 等于 字段 {1}',
385
+ create_op_mode_publish: '操作模式: 保存并发布',
386
+ create_op_mode_draft: '操作模式: 仅保存草稿',
387
+ create_step: '[{0}/{1}] {2}',
388
+ create_step_login: '读取登录态',
389
+ create_no_cache: '未找到登录缓存,开始登录',
390
+ create_login_ok: '登录态已就绪: {0}',
391
+ create_step_new_flow: '创建逻辑流绑定',
392
+ create_new_flow_ok: '逻辑流已创建: {0}',
393
+ create_new_flow_failed: '创建逻辑流失败: {0}',
394
+ create_step_get_schema: '获取目标表单 Schema',
395
+ create_get_schema_ok: '目标表单字段数: {0}',
396
+ create_get_schema_warn: '获取目标表单 Schema 失败,继续保存: {0}',
397
+ create_step_save: '保存逻辑流草稿',
398
+ create_save_failed: '保存逻辑流失败: {0}',
399
+ create_save_ok: '逻辑流草稿已保存',
400
+ create_step_publish: '发布逻辑流',
401
+ create_publish_warn: '发布失败: {0}',
402
+ create_publish_draft_hint: '已保留草稿,可修正后重新发布。',
403
+ create_published_ok: '逻辑流已发布',
404
+ create_done_published: '集成自动化创建并发布完成',
405
+ create_done_draft: '集成自动化草稿已保存',
406
+ create_draft_hint: '可在宜搭设计器确认配置后手动发布。',
407
+ },
408
+
409
+ // ── lib/env.js ─────────────────────────────────────
410
+ env: {
411
+ title: ' yidaconnector env - 环境检测',
412
+ system_info: '\n📋 系统信息',
413
+ os: ' 操作系统: {0} ({1})',
414
+ node: ' Node.js: {0}',
415
+ home: ' 主目录: {0}',
416
+ cwd: ' 工作目录: {0}',
417
+ ai_tools: '\n🤖 AI 工具检测',
418
+ no_tools: ' ⚠️ 未检测到任何已知 AI 工具',
419
+ tool_active_ready: '← 当前活跃,项目已就绪',
420
+ tool_active_no_project: '← 当前活跃,但无 project 工作目录',
421
+ tool_installed_has_project: '(已安装,项目存在,但未活跃)',
422
+ tool_installed: '(已安装,未活跃)',
423
+ active_env: '\n🎯 当前生效环境',
424
+ ai_tool_label: ' AI 工具: {0}',
425
+ project_root_label: ' 项目根目录: {0}',
426
+ active_no_project: ' AI 工具: {0} (活跃,但无 project 工作目录)',
427
+ no_active_tool: ' AI 工具: 未检测到活跃工具',
428
+ project_fallback: ' 项目根目录: {0} (fallback)',
429
+ login_status: '\n🔐 登录态检测',
430
+ logged_in: ' 状态: ✅ 已登录',
431
+ base_url_label: ' 域名: {0}',
432
+ corp_id_label: ' 组织 ID: {0}',
433
+ user_id_label: ' 用户 ID: {0}',
434
+ csrf_label: ' csrf_token: {0}...',
435
+ not_logged_in: ' 状态: ❌ 未登录(运行 yidaconnector login 进行登录)',
436
+ unknown: '(未知)',
437
+ },
438
+
439
+ // ── lib/login.js ───────────────────────────────────
440
+ login: {
441
+ title: ' yidaconnector login - 宜搭登录工具',
442
+ logout_title: ' yidaconnector logout - 宜搭退出登录工具',
443
+ cookie_file_label: '\n Cookie 文件: {0}',
444
+ logout_success: ' ✅ 已清空 Cookie,登录态已失效。',
445
+ logout_hint: ' 下次调用 yidaconnector login 时将重新触发扫码登录。',
446
+ logout_no_file: ' ℹ️ Cookie 文件不存在,无需清空。',
447
+ using_cache: '🔍 检测到本地 Cookie,直接使用...',
448
+ csrf_ok: ' ✅ csrf_token: {0}...',
449
+ corp_id_ok: ' ✅ corpId: {0}',
450
+ no_playwright: '\n❌ 本地浏览器登录会优先使用 Chrome/Edge/Chromium CDP;当前 CDP 不可用且未找到 Playwright 兜底。默认请使用 yidaconnector login 或 yidaconnector login --qr;如确需本地浏览器登录,请先安装:',
451
+ playwright_install1: ' npm install -g playwright',
452
+ playwright_install2: ' npx playwright install chromium',
453
+ browser_opening: '\n🔐 正在打开浏览器,请扫码登录...',
454
+ login_url_label: ' 登录地址: {0}',
455
+ waiting_login: ' 等待登录完成(最长等待 10 分钟)...',
456
+ login_timeout: ' ⏰ 登录超时(10分钟),请重试。',
457
+ login_success: ' ✅ 登录成功!',
458
+ no_csrf_in_cookie: ' ❌ 登录成功但 Cookie 中无 tianshu_csrf_token,请重试。',
459
+ no_cookie_cache: ' ❌ 本地无有效 Cookie,无法刷新,需要重新登录。',
460
+ no_csrf_in_cache: ' ❌ Cookie 中无 tianshu_csrf_token,需要重新登录。',
461
+ csrf_extracted: ' ✅ csrf_token 提取成功: {0}...',
462
+ trigger_login: '\n🔐 登录态失效,正在打开浏览器扫码登录...\n',
463
+ csrf_refresh: '\n🔄 csrf_token 已过期,正在从 Cookie 重新提取...\n',
464
+ },
465
+
466
+ // ── lib/auth.js ────────────────────────────────────
467
+ auth: {
468
+ status_title: ' yidaconnector auth status - 登录状态查询',
469
+ not_logged_in: ' 状态: ❌ 未登录',
470
+ login_hint: ' 提示: 运行 yidaconnector auth login 进行登录',
471
+ no_csrf_token: ' 状态: ❌ 登录态无效(无 csrf_token)',
472
+ relogin_hint: ' 提示: 运行 yidaconnector auth login 重新登录',
473
+ logged_in: ' 状态: ✅ 已登录',
474
+ base_url_label: ' 域名: {0}',
475
+ corp_id_label: ' 组织 ID: {0}',
476
+ user_id_label: ' 用户 ID: {0}',
477
+ csrf_label: ' csrf_token: {0}...',
478
+ login_type_label: ' 登录方式: {0}',
479
+ login_time_label: ' 登录时间: {0}',
480
+ login_start: '\n🔐 开始登录(方式: {0})...',
481
+ login_success: '\n✅ 登录成功!',
482
+ corp_id_ok: ' ✅ corpId: {0}',
483
+ refresh_start: '\n🔄 正在刷新登录态...',
484
+ no_cookie_cache: ' ❌ 本地无 Cookie 缓存,无法刷新',
485
+ no_csrf_in_cache: ' ❌ Cookie 中无 csrf_token,需要重新登录',
486
+ refresh_success: ' ✅ 登录态刷新成功!',
487
+ csrf_ok: ' ✅ csrf_token: {0}...',
488
+ auth_config_cleared: ' ✅ 已清空登录配置',
489
+ },
490
+
491
+ // ── lib/org.js ─────────────────────────────────────
492
+ org: {
493
+ list_title: ' yidaconnector org list - 组织列表',
494
+ no_corp_id: ' ❌ 无法获取当前组织 ID,请先登录',
495
+ current_org: '当前组织',
496
+ current: '当前',
497
+ no_organizations: ' ⚠️ 暂无组织信息',
498
+ switch_title: ' yidaconnector org switch - 组织切换',
499
+ switch_from: ' 当前组织: {0}',
500
+ switch_to: ' 目标组织: {0}',
501
+ already_in_org: ' ✅ 已在目标组织中,无需切换',
502
+ step1: '\n Step 1: 发起切换请求...',
503
+ step2: ' Step 2: 确认切换...',
504
+ step3: ' Step 3: 获取新登录态...',
505
+ redirect: ' Step 4: 跟随重定向 ({0})...',
506
+ switch_failed_no_csrf: ' ❌ 切换失败:未获取到新的 csrf_token',
507
+ switch_success: '\n ✅ 组织切换成功!',
508
+ new_corp_id: ' 新组织 ID: {0}',
509
+ new_csrf: ' csrf_token: {0}...',
510
+ switch_error: ' ❌ 切换失败: {0}',
511
+ only_one_org: ' ⚠️ 只有一个组织,无需切换',
512
+ select_prompt: '\n 请选择要切换的组织:',
513
+ use_corp_id_hint: '\n 💡 提示:使用 --corp-id 参数指定目标组织',
514
+ no_login: '❌ 未登录,请先运行 yidaconnector login',
515
+ switched_org: '切换后的组织',
516
+ unknown: '未知',
517
+ },
518
+
519
+ // ── lib/create-app.js ──────────────────────────────
520
+ create_app: {
521
+ title: ' yidaconnector create-app - 宜搭应用创建工具',
522
+ usage: '用法: yidaconnector create-app "<appName>" [description] [icon] [iconColor] [themeColor] 或 yidaconnector create-app --name "<appName>" [--desc "..."] [--theme deepBlue]',
523
+ example: '示例: yidaconnector create-app --name "考勤管理" --desc "员工考勤打卡系统" --theme deepBlue',
524
+ available_icons: '\n可用图标:',
525
+ icons_list: ' xian-xinwen, xian-zhengfu, xian-yingyong, xian-xueshimao, xian-qiye,\n xian-danju, xian-shichang, xian-jingli, xian-falv, xian-baogao,\n huoche, xian-shenbao, xian-diqiu, xian-qiche, xian-feiji,\n xian-diannao, xian-gongzuozheng, xian-gouwuche, xian-xinyongka,\n xian-huodong, xian-jiangbei, xian-liucheng, xian-chaxun, xian-daka',
526
+ available_colors: '\n可用颜色:',
527
+ colors_list: ' #0089FF #00B853 #FFA200 #FF7357 #5C72FF\n #85C700 #FFC505 #FF6B7A #8F66FF #14A9FF',
528
+ app_name: ' 应用名称: {0}',
529
+ app_desc: ' 应用描述: {0}',
530
+ app_icon: ' 图标: {0} ({1})',
531
+ app_theme: ' 主题: colour={0} navTheme={1} layout={2}',
532
+ step_create: '\n📦 Step 2: 创建应用\n',
533
+ success: ' ✅ 应用创建成功!',
534
+ app_type_label: ' appType: {0}',
535
+ corp_id_label: ' corpId: {0}',
536
+ url_label: ' 访问地址: {0}',
537
+ failed: ' ❌ 创建失败: {0}',
538
+ prd_config_title: '## 应用配置',
539
+ prd_config_key: '配置项',
540
+ prd_config_value: '值',
541
+ prd_not_found: '\n ⚠️ 未找到 prd 文档,跳过 corpId 写入',
542
+ prd_updated: ' ✅ 已更新 prd 文档: {0}',
543
+ prd_update_failed: ' ⚠️ 更新 prd 文档失败: {0}',
544
+ },
545
+
546
+ // ── lib/create-page.js ─────────────────────────────
547
+ create_page: {
548
+ title: ' yidaconnector create-page - 宜搭自定义页面创建工具',
549
+ usage: '用法: yidaconnector create-page <appType> "<pageName>" [--mode dashboard]',
550
+ example: '示例: yidaconnector create-page "APP_XXX" "驾驶舱" --mode dashboard',
551
+ app_id: ' 应用 ID: {0}',
552
+ page_name: ' 页面名称: {0}',
553
+ step_create: '\n📄 Step 2: 创建自定义页面\n',
554
+ sending: ' 发送 saveFormSchemaInfo 请求...',
555
+ success: ' ✅ 页面创建成功!',
556
+ step_dashboard_config: '\n🖥️ Step 3: 配置看板全屏模式',
557
+ dashboard_config_ok: ' ✅ 已配置看板模式:隐藏顶部导航,并输出无左侧栏的 custom URL',
558
+ dashboard_config_failed: ' ⚠️ 看板模式配置失败: {0}',
559
+ err_mode_invalid: '不支持的页面模式: {0}',
560
+ mode_hint: '可用模式: default, dashboard',
561
+ page_id_label: ' pageId: {0}',
562
+ url_label: ' 访问地址: {0}',
563
+ failed: ' ❌ 创建失败: {0}',
564
+ },
565
+
566
+ // ── lib/get-schema.js ──────────────────────────────
567
+ get_schema: {
568
+ title: ' yidaconnector get-schema - 宜搭表单 Schema 获取工具',
569
+ usage: '用法: yidaconnector get-schema <appType> <formUuid> 或 yidaconnector get-schema <appType> --all [--output-dir <dir>]',
570
+ example: '示例: yidaconnector get-schema "APP_XXX" "FORM-XXX";yidaconnector get-schema "APP_XXX" --all --output-dir .cache/schemas',
571
+ app_id: ' 应用 ID: {0}',
572
+ form_uuid: ' 表单 UUID: {0}',
573
+ step_get: '\n📄 Step 2: 获取表单 Schema',
574
+ sending: ' 发送 getFormSchema 请求...',
575
+ success: ' ✅ Schema 获取成功!',
576
+ failed: ' ❌ 获取 Schema 失败: {0}',
577
+ },
578
+
579
+ list_forms: {
580
+ title: ' yidacli list-forms - 应用表单/页面列表查询工具',
581
+ usage: '用法: yidaconnector list-forms <appType> [--keyword <关键词>]',
582
+ example1: '示例: yidaconnector list-forms APP_XXX',
583
+ example2: ' yidaconnector list-forms APP_XXX --keyword 客户',
584
+ app_id: ' 应用 ID: {0}',
585
+ keyword: ' 关键词: {0}',
586
+ step_get: '\n📋 步骤 2: 获取应用下的表单/页面列表',
587
+ found: ' ✅ 共找到 {0} 个匹配项',
588
+ empty: ' ⚠️ 当前应用下没有匹配的表单/页面,将输出 []',
589
+ unnamed_form: '未命名页面',
590
+ fetch_failed: '获取应用导航列表失败',
591
+ failed: ' ❌ 查询失败: {0}',
592
+ no_login: ' ❌ 无法获取有效登录态',
593
+ },
594
+
595
+ // ── lib/create-form.js ─────────────────────────────
596
+ create_form: {
597
+ create_title: ' yida-create-form-page - 宜搭表单页面创建工具',
598
+ update_title: ' yida-create-form-page - 宜搭表单页面更新工具',
599
+ app_id: '\n 应用 ID: {0}',
600
+ form_title: ' 表单名称: {0}',
601
+ form_uuid: ' 表单 UUID: {0}',
602
+ form_uuid_input: ' 表单 UUID: {0}',
603
+ fields_def: ' 字段定义: {0}',
604
+ changes_def: ' 变更定义: {0}',
605
+ step_read_fields: '\n📋 步骤 {0}: 读取字段定义',
606
+ fields_loaded: ' ✅ 已加载 {0} 个字段定义',
607
+ pc_columns: ' PC 列数: {0}',
608
+ step_fields: '\n📋 步骤 2: 读取字段定义',
609
+ columns: ' PC 列数: {0}',
610
+ step_create_blank: '\n📄 步骤 {0}: 创建空白表单',
611
+ step_create_form: '\n📄 步骤 3: 创建空白表单',
612
+ sending_create: ' 正在发送 saveFormSchemaInfo 请求...',
613
+ blank_created: ' ✅ 空白表单已创建: {0}',
614
+ create_blank_failed: ' ❌ 创建空白表单失败: {0}',
615
+ form_created: ' ✅ 空白表单已创建: {0}',
616
+ create_failed: ' ❌ 创建空白表单失败: {0}',
617
+ no_corp_id_warning: ' ⚠️ 警告: 无法获取 corpId,SerialNumberField formula 可能无法正常工作',
618
+ no_corp_id: ' ⚠️ 警告: 无法获取 corpId,SerialNumberField formula 可能无法正常工作',
619
+ corp_id_ok: ' ✅ corpId: {0}',
620
+ step_save_schema: '\n📝 步骤 {0}: 保存表单 Schema',
621
+ sending_save: ' 正在发送 saveFormSchema 请求...',
622
+ schema_saved: ' ✅ Schema 保存成功!',
623
+ save_success: ' ✅ Schema 保存成功!',
624
+ current_version: ' 当前版本: {0}',
625
+ version_label: ' 当前版本: {0}',
626
+ save_schema_failed: '\n❌ 保存 Schema 失败: {0}',
627
+ save_failed: '\n❌ 保存 Schema 失败: {0}',
628
+ step_update_config: '\n⚙️ 步骤 {0}: 更新表单配置',
629
+ sending_config: ' 正在发送 updateFormConfig 请求...',
630
+ step_get_schema: '\n📄 步骤 {0}: 获取当前表单 Schema',
631
+ sending_get_schema: ' 正在发送 getFormSchema 请求...',
632
+ sending_get: ' 正在发送 getFormSchema 请求...',
633
+ get_schema_failed: ' ❌ 获取表单 Schema 失败: {0}',
634
+ get_failed: ' ❌ 获取表单 Schema 失败: {0}',
635
+ schema_empty_init: ' ⚠️ Schema 为空,正在使用基础表单模板初始化',
636
+ schema_empty: ' ⚠️ Schema 为空,正在使用基础表单模板初始化',
637
+ schema_got_fields: ' ✅ 已获取 Schema,当前有 {0} 个字段:',
638
+ schema_got_empty: ' ✅ 已获取 Schema(暂无字段)',
639
+ schema_success_with_fields: ' ✅ 已获取 Schema,当前有 {0} 个字段:',
640
+ schema_success_no_fields: ' ✅ 已获取 Schema(暂无字段)',
641
+ step_read_changes: '\n📋 步骤 {0}: 读取变更定义',
642
+ changes_loaded: ' ✅ 已加载 {0} 个变更操作',
643
+ action_add: '新增',
644
+ action_delete: '删除',
645
+ action_update: '更新',
646
+ step_apply_changes: '\n🔧 步骤 {0}: 应用变更',
647
+ step_apply: '\n🔧 步骤 4: 应用变更',
648
+ request_timeout: ' ❌ 请求超时',
649
+ create_success: ' ✅ 表单创建成功!',
650
+ update_success: ' ✅ 表单更新成功!',
651
+ form_uuid_label: ' formUuid: {0}',
652
+ url_label: ' URL: {0}',
653
+ config_updated_0: ' 配置已更新: MINI_RESOURCE = 0',
654
+ config_updated: ' 配置已更新: MINI_RESOURCE = 0',
655
+ changes_applied: ' 已应用变更: {0}',
656
+ config_failed: ' ⚠️ 配置更新失败: {0}',
657
+ schema_ok_config_failed: ' Schema 已保存,但配置更新失败',
658
+ schema_saved_config_failed: ' Schema 已保存,但配置更新失败',
659
+ error: '\n❌ 错误: {0}',
660
+ usage_create: '用法: yidaconnector create-form create <appType> <formTitle> <fieldsJsonFile>',
661
+ example_create: '示例:yidaconnector create-form create "APP_XXX" "员工信息登记" .cache/yidaconnector/forms/employee-fields.json',
662
+ usage_update: '用法: yidaconnector create-form update <appType> <formUuid> <changesJsonOrFile>',
663
+ example_update: '示例:yidaconnector create-form update "APP_XXX" "FORM-YYY" \'[{"action":"add","field":{"type":"TextField","label":"备注"}}]\'',
664
+ usage_label: '用法:',
665
+ usage_create_short: ' 创建: yidaconnector create-form create <appType> <formTitle> <fieldsJsonFile>',
666
+ usage_update_short: ' 更新: yidaconnector create-form update <appType> <formUuid> <changesJsonOrFile>',
667
+ example_label: '\n示例:',
668
+ fields_file_not_found: ' ❌ 字段定义文件不存在: ',
669
+ fields_format_invalid: '字段定义格式不正确',
670
+ fields_must_be_array: '字段定义必须是非空数组',
671
+ fields_parse_failed: ' ❌ 解析字段定义失败: ',
672
+ changes_file_not_found: ' ❌ 修改定义文件不存在: ',
673
+ changes_must_be_array: '修改定义必须是非空数组',
674
+ changes_parse_failed: ' ❌ 解析修改定义失败: ',
675
+ no_components_tree: ' ❌ Schema 中未找到 componentsTree',
676
+ no_form_container: ' ❌ Schema 中未找到 FormContainer',
677
+ add_missing_field: ' - 缺少 field.type 或 field.label,跳过',
678
+ add_after_ok: ' - 在「{0}」后新增字段「{1}」({2})',
679
+ add_after_not_found: ' - 未找到「{0}」,字段「{1}」追加到末尾',
680
+ add_before_ok: ' - 在「{0}」前新增字段「{1}」({2})',
681
+ add_before_not_found: ' - 未找到「{0}」,字段「{1}」追加到末尾',
682
+ add_ok: ' - 新增字段「{0}」({1})',
683
+ delete_missing_label: ' - 缺少 label,跳过',
684
+ delete_ok: ' - 删除字段「{0}」',
685
+ delete_not_found: ' - 未找到字段「{0}」,跳过删除',
686
+ update_missing_label: ' - 缺少 label,跳过',
687
+ update_missing_changes: ' - 缺少 changes,跳过',
688
+ update_table_not_found: ' - 未找到子表「{0}」,跳过更新',
689
+ update_not_table: ' - 「{0}」不是有效的子表字段,跳过更新',
690
+ in_table: '子表「{0}」中的',
691
+ update_ok: ' - 更新{0}字段「{1}」的属性: {2}',
692
+ update_not_found: ' - 未找到{0}字段「{1}」,跳过更新',
693
+ unknown_action: ' - 未知操作类型「{0}」,跳过',
694
+ filling_rule_resolved: ' 🔗 回填规则解析: @label:{0} → {1}',
695
+ filling_rule_failed: ' ⚠️ 回填规则解析失败: 找不到标签为「{0}」的字段,请检查字段名是否正确',
696
+ table_filling_rule: ' 📋 处理子表回填规则 [{0}]: tableId={1}',
697
+ table_rule_resolved: ' 🔗 子表规则解析 [{0}]: @label:{1} → {2}',
698
+ table_rule_failed: ' ⚠️ 子表规则解析失败: 找不到标签为「{0}」的字段,请检查字段名是否正确',
699
+ serial_number_formula_set: ' 🔢 SerialNumberField 「{0}」formula 已设置',
700
+ schema_extract_failed: ' ❌ 无法从返回结果中提取 Schema',
701
+ schema_response_structure: ' 响应结构: {0}',
702
+ schema_parse_failed: '无法解析 Schema 结构',
703
+ action_label: '操作 {0}: {1}',
704
+ step_check_data: '\n🔍 步骤 {0}: 检查表单是否已有数据',
705
+ data_exists_warning: ' ⚠️ 该表单已有 {0} 条数据!修改表单结构可能导致:',
706
+ data_exists_impact: ' - 历史数据丢失或损坏\n - 流程状态异常\n - 数据不一致',
707
+ data_exists_abort: ' ❌ 已中止修改。如需强制执行,请添加 --force 参数。',
708
+ data_exists_confirm_message: '该表单已有 {0} 条数据,修改结构可能影响已有数据。请添加 --force 参数确认执行。',
709
+ data_exists_force_hint: '用法: yidaconnector create-form update <appType> <formUuid> <changesJson> --force',
710
+ data_exists_force_proceed: ' ⚠️ --force 模式:跳过确认,强制修改已有 {0} 条数据的表单结构',
711
+ data_check_empty: ' ✅ 表单暂无数据,可安全修改',
712
+ data_check_failed: ' ⚠️ 数据量检查失败,继续执行修改',
713
+ },
714
+ common: {
715
+ http_status: ' HTTP 状态码: {0}',
716
+ http_response: ' HTTP 响应: {0}',
717
+ response_body: ' 响应内容: {0}',
718
+ response_detail: ' 响应详情: {0}',
719
+ response_not_json: '响应非 JSON',
720
+ login_expired: ' 检测到登录过期: {0}',
721
+ csrf_expired: ' 检测到 csrf_token 过期: {0}',
722
+ csrf_refreshed: ' csrf_token 已刷新',
723
+ request_timeout: ' ❌ 请求超时',
724
+ request_failed: '请求失败',
725
+ request_failed_label: ' ❌ 请求失败',
726
+ unknown_error: '未知错误',
727
+ step_login: '\n🔑 Step 1: 读取登录态',
728
+ step_login_label: '\n🔑 读取登录态',
729
+ no_login_cache: ' ⚠️ 未找到本地登录态,触发登录...',
730
+ login_no_cache: ' ⚠️ 未找到本地登录态,触发登录...',
731
+ login_ready: ' ✅ 登录态已就绪({0})',
732
+ resend: ' 🔄 重新发送请求...',
733
+ resend_csrf: ' 🔄 重新发送请求(csrf_token 已刷新)...',
734
+ relogin_retry: ' 🔄 重新登录后重新发送请求...',
735
+ exception: '\n❌ 异常: {0}',
736
+ yes: '是',
737
+ no: '否',
738
+ empty: '(空)',
739
+ },
740
+
741
+ // ── lib/export-app.js ──────────────────────────────
742
+ export: {
743
+ usage: '用法: yidaconnector export <appType> [output]',
744
+ example1: '示例: yidaconnector export APP_XXXXXXXXXXXXX',
745
+ example2: ' yidaconnector export APP_XXXXXXXXXXXXX ./my-app-backup.json',
746
+ title: ' yidaconnector export - 宜搭应用导出工具',
747
+ app_id: '\n 应用 ID: {0}',
748
+ output_file: ' 输出文件: {0}',
749
+ step_get_forms: '\n📋 Step 2: 获取应用表单列表',
750
+ no_forms: ' ⚠️ 未找到任何表单页面,请确认应用 ID 是否正确',
751
+ forms_found: ' ✅ 找到 {0} 个表单页面',
752
+ step_export_schema: '\n📦 Step 3: 导出表单 Schema',
753
+ exporting: '\n 正在导出: {0} ({1})',
754
+ export_ok: ' ✅ 导出成功',
755
+ export_failed: ' ⚠️ 导出失败,跳过',
756
+ step_write_file: '\n💾 Step 4: 写入导出文件',
757
+ done: ' ✅ 导出完成!',
758
+ success_count: ' 成功: {0} 个表单',
759
+ fail_count: ' 失败: {0} 个表单(已跳过)',
760
+ fetch_forms_failed: '获取表单列表失败',
761
+ unnamed_form: '未命名表单',
762
+ },
763
+
764
+ // ── lib/import-app.js ──────────────────────────────
765
+ import_example2: ' yidaconnector import ./yida-export.json "质量追溯系统(生产环境)"',
766
+ exec_failed: '\n❌ 执行失败: {0}',
767
+ auth_usage: '用法: yidaconnector auth <status|login|refresh|logout>',
768
+ auth_example: '示例:\n yidaconnector auth status # 查看登录状态\n yidaconnector auth login # 执行登录\n yidaconnector auth login --codex # Codex 内置浏览器登录\n yidaconnector auth refresh # 刷新登录态\n yidaconnector auth logout # 退出登录',
769
+ org_usage: '用法: yidaconnector org <list|switch>',
770
+ org_example: '示例:\n yidaconnector org list # 列出可访问的组织\n yidaconnector org switch --corp-id dingXXX # 切换到指定组织',
771
+ title: ' yidaconnector import - 宜搭应用导入工具',
772
+ // ── lib/get-page-config.js ─────────────────────────
773
+ get_page_config: {
774
+ usage: '用法: yidaconnector get-page-config <appType> <formUuid>',
775
+ example: '示例: yidaconnector get-page-config APP_XXX FORM-XXX',
776
+ title: ' get-page-config - 宜搭页面配置查询工具',
777
+ app_id: '\n 应用 ID: {0}',
778
+ form_uuid: ' 表单 UUID: {0}',
779
+ step_query: '\n🔍 Step 2: 查询页面配置',
780
+ sending_request: ' 发送 getShareConfig 请求...',
781
+ query_ok: ' ✅ 查询成功!',
782
+ open_url: ' 公开访问: {0}',
783
+ share_url: ' 组织内分享: {0}',
784
+ no_config: ' (暂未配置公开访问或分享链接)',
785
+ query_failed: ' ❌ 查询失败: {0}',
786
+ },
787
+
788
+ // ── lib/save-share-config.js ───────────────────────
789
+ save_share_config: {
790
+ usage: '用法: yidaconnector save-share-config <appType> <formUuid> <openUrl> <isOpen> [openAuth]',
791
+ example: '示例: yidaconnector save-share-config "APP_XXX" "FORM-XXX" "/o/xxx" "y" "n"',
792
+ is_open_hint: ' isOpen: y=开启公开访问, n=关闭公开访问',
793
+ open_auth_hint: ' openAuth: y=需要授权, n=不需要授权(默认)',
794
+ title: ' save-share-config - 宜搭公开访问配置保存工具',
795
+ app_id: '\n 应用 ID: {0}',
796
+ form_uuid: ' 表单 UUID: {0}',
797
+ open_url: ' 公开访问路径: {0}',
798
+ is_open: ' 是否开放: {0}',
799
+ open_auth: ' 是否需要授权: {0}',
800
+ step_validate: '\n📋 Step 0: 验证参数',
801
+ validate_ok: ' ✅ 参数验证通过',
802
+ validate_failed: ' ❌ 参数验证失败: {0}',
803
+ step_save: '\n💾 Step 2: 保存公开访问配置',
804
+ sending_request: ' 发送 saveShareConfig 请求...',
805
+ save_ok: ' ✅ 配置保存成功!',
806
+ save_ok_msg: '公开访问配置已保存',
807
+ save_failed: ' ❌ 保存失败: {0}',
808
+ save_failed_msg: '保存失败',
809
+ err_is_open_invalid: 'isOpen 必须为 y 或 n,当前值: {0}',
810
+ err_open_auth_invalid: 'openAuth 必须为 y 或 n,当前值: {0}',
811
+ err_open_url_required: '开启公开访问时,openUrl 不能为空',
812
+ err_open_url_prefix: 'openUrl 必须以 /o/ 开头,当前值: {0}',
813
+ err_open_url_chars: 'openUrl 路径部分只支持 a-z A-Z 0-9 _ -,可用 / 分隔多级路径,当前值: {0}',
814
+ },
815
+
816
+ // ── lib/update-app.js ─────────────────────────────
817
+ update_app: {
818
+ usage: '用法: yidaconnector update-app <appType> [--name "新名称"] [--desc "描述"] [--layout slide|ver] [--theme deepBlue]',
819
+ example: '示例: yidaconnector update-app APP_XXX --name "新应用名称" --layout ver --theme deepBlue',
820
+ options: '选项:\n --name, -n 应用名称(至少指定一个更新字段)\n --desc, -d 应用描述\n --icon 图标名称(如: xian-yingyong)\n --icon-color 图标颜色(默认: #0089FF)\n --theme 应用主题 colour\n --nav-theme 导航主题 navTheme\n --layout 布局方向 layoutDirection(slide 或 ver)',
821
+ missing_app_type: '错误: 缺少 appType 参数',
822
+ missing_update_field: '错误: 至少需要指定一个更新字段(--name, --desc, --icon, --theme, --nav-theme, --layout)',
823
+ title: ' update-app - 宜搭应用信息更新工具',
824
+ app_type: '\n 应用 ID: {0}',
825
+ new_name: ' 新名称: {0}',
826
+ new_desc: ' 新描述: {0}',
827
+ new_icon: ' 新图标: {0} ({1})',
828
+ step_update: '\n💾 Step 2: 更新应用信息',
829
+ success: ' ✅ 应用信息更新成功!',
830
+ app_type_label: ' appType: {0}',
831
+ name_label: ' 应用名称: {0}',
832
+ failed: ' ❌ 更新失败: {0}',
833
+ layout_notice: '提示:layoutDirection 由宜搭应用外壳在创建/刷新时消费;若后台切换后顶部操作栏未立即恢复,请重新打开工作台或使用目标 layout 重新创建应用。',
834
+ },
835
+
836
+ // ── lib/process/create-process.js ─────────────────
837
+ create_process: {
838
+ title: '宜搭流程表单一体化创建',
839
+ app_id: '应用 ID',
840
+ mode: '模式',
841
+ reuse_form: '复用已有表单',
842
+ new_form: '创建新表单',
843
+ form_title: '表单名称',
844
+ fields_file: '字段定义文件',
845
+ process_def: '流程定义文件',
846
+ loading_auth: '加载登录态',
847
+ auth_loaded: '登录态已加载',
848
+ reusing_form: '复用已有表单',
849
+ using_form: '使用表单',
850
+ creating_form: '创建表单',
851
+ form_created: '表单创建成功',
852
+ create_form_failed: '创建表单失败',
853
+ switching_form_type: '转换表单类型',
854
+ switch_success: '表单类型转换成功',
855
+ already_process: '已是流程表单',
856
+ switch_failed: '表单类型转换失败',
857
+ getting_process_code: '获取流程代码',
858
+ method1: '方法 1: 从应用参数获取',
859
+ method2: '方法 2: 从 Schema 获取',
860
+ got_process_code: '获取流程代码成功',
861
+ got_from_schema: '从 Schema 获取流程代码成功',
862
+ no_process_code: '无法获取流程代码',
863
+ manual_hint: '请手动在宜搭后台配置流程,表单 UUID: {0}',
864
+ configuring_process: '配置并发布流程',
865
+ configure_failed: '流程配置失败',
866
+ retry_hint: '流程配置失败,但表单已创建。请修复流程定义后,使用以下命令复用该表单重试:',
867
+ fields_not_found: '字段定义文件不存在',
868
+ process_def_not_found: '流程定义文件不存在',
869
+ done: '流程表单创建完成',
870
+ url: '访问地址',
871
+ usage: '用法: yidaconnector create-process <appType> <formTitle> <fieldsJsonFile> <processDefinitionFile>',
872
+ usage2: ' yidaconnector create-process <appType> --formUuid <formUuid> <processDefinitionFile>',
873
+ example: '示例: yidaconnector create-process "APP_XXX" "订单处理表" .cache/yidaconnector/process/fields.json .cache/yidaconnector/process/process-definition.json',
874
+ example2: ' yidaconnector create-process "APP_XXX" --formUuid FORM-YYY .cache/yidaconnector/process/process-definition.json',
875
+ },
876
+
877
+ // ── lib/update-form-config.js ──────────────────────
878
+ update_form_config: {
879
+ usage: '用法: yidaconnector update-form-config <appType> <formUuid> <isRenderNav> <title>',
880
+ example: '示例: yidaconnector update-form-config "APP_XXX" "FORM_XXX" "false" "我的页面"',
881
+ params_label: '参数说明:',
882
+ param_is_render_nav: ' isRenderNav: true=显示顶部导航, false=隐藏顶部导航',
883
+ param_title: ' title: 页面标题(必填)',
884
+ title: ' update-form-config - 宜搭表单配置更新工具',
885
+ app_id: '\n 应用 ID: {0}',
886
+ form_uuid: ' 表单 UUID: {0}',
887
+ is_render_nav: ' 显示导航: {0}',
888
+ page_title: ' 页面标题: {0}',
889
+ step_update: '\n💾 Step 2: 更新表单配置(隐藏顶部导航)',
890
+ sending_request: ' 发送 updateFormSchemaInfo 请求...',
891
+ update_ok: ' ✅ 配置更新成功!',
892
+ nav_shown: '已显示顶部导航',
893
+ nav_hidden: '已隐藏顶部导航',
894
+ update_failed: ' ❌ 更新失败: {0}',
895
+ update_failed_msg: '更新失败',
896
+ },
897
+
898
+ // ── lib/verify-short-url.js ────────────────────────
899
+ verify_short_url: {
900
+ usage: '用法: yidaconnector verify-short-url <appType> <formUuid> <url>',
901
+ example: '示例: yidaconnector verify-short-url "APP_XXX" "FORM-XXX" "/o/aaa"',
902
+ formats_label: ' 支持两种格式:',
903
+ format_open: ' /o/xxx - 公开访问(对外)',
904
+ format_share: ' /s/xxx - 组织内分享(对内)',
905
+ open_url_label: '公开访问路径',
906
+ share_url_label: '组织内分享路径',
907
+ title: ' verify-short-url - 宜搭 URL 验证工具',
908
+ app_id: '\n 应用 ID: {0}',
909
+ form_uuid: ' 表单 UUID: {0}',
910
+ step_validate: '\n📋 Step 0: 验证 URL 格式',
911
+ validate_ok: ' ✅ 格式验证通过',
912
+ validate_failed: ' ❌ 格式验证失败: {0}',
913
+ step_verify: '\n🔍 Step 2: 验证 URL',
914
+ sending_request: ' 发送 verifyShortUrl 请求...',
915
+ url_available: ' ✅ URL 可用!',
916
+ open_available_msg: '该公开访问路径可用',
917
+ share_available_msg: '该组织内分享路径可用',
918
+ url_taken: ' ❌ URL 被占用',
919
+ url_taken_msg: '该短链接已被占用',
920
+ verify_failed: ' ❌ 验证请求失败',
921
+ err_url_prefix: 'URL 必须以 /o/ 或 /s/ 开头,当前值: {0}',
922
+ err_url_chars: 'URL 路径部分只支持 a-z A-Z 0-9 _ -,可用 / 分隔多级路径,当前值: {0}',
923
+ err_url_empty: 'URL 路径部分不能为空: {0}',
924
+ },
925
+ // ── lib/copy.js ────────────────────────────────────
926
+ copy: {
927
+ title: ' yidaconnector copy - 初始化宜搭工作目录',
928
+ package_root: '\n📦 包根目录: {0}',
929
+ dest_base: '🤖 目标根目录: {0}',
930
+ dest_root: '🤖 目标根目录: {0}',
931
+ dest_empty_flatten: '📂 目标目录为空,将 project/ 内容直接铺入(不创建 project/ 子目录)',
932
+ force_mode: '⚠️ --force 模式:目标目录将被清空后重新复制',
933
+ no_package: '\n❌ 未找到 yidaconnector 安装包目录',
934
+ no_package_hint1: ' 请确认 yidaconnector 已正确全局安装:',
935
+ no_package_hint2: ' npm install -g yidaconnector',
936
+ no_ai_tool: '\n❌ 未检测到活跃的 AI 工具环境\n 支持的工具:悟空、Codex、OpenCode、Claude Code、Aone Copilot、Cursor、Qoder\n\n 当前检测结果:',
937
+ no_active_tool: '\n❌ 未检测到活跃的 AI 工具环境',
938
+ supported_tools: ' 支持的工具:悟空、Codex、OpenCode、Claude Code、Aone Copilot、Cursor、Qoder',
939
+ current_result: '\n 当前检测结果:',
940
+ force_hint: '\n 如需强制复制到当前目录,请运行:\n yidaconnector copy --force',
941
+ force_cmd: ' yidaconnector copy --force',
942
+ copying: ' 复制: {0}',
943
+ copying_label: '\n📂 复制 {0}...',
944
+ creating_symlink: '\n📂 创建 yida-skills/ 软链接...',
945
+ file_copied: ' 复制: {0}',
946
+ cleared: ' 🗑️ 已清空: {0}',
947
+ symlink_removed: ' 🗑️ 已移除旧软链接: {0}',
948
+ old_symlink_removed: ' 🗑️ 已移除旧软链接: {0}',
949
+ dir_deleted: ' 🗑️ 已删除实际目录: {0}',
950
+ removed: ' 🗑️ 已移除: {0}',
951
+ symlink_created: ' 🔗 软链接: {0} -> {1}',
952
+ symlink_label: '软链接',
953
+ done: '✅ 完成!',
954
+ files_copied: ' 复制文件: {0} 个',
955
+ files_count: '{0} 个文件',
956
+ symlinks_created: ' 创建软链接: {0} 个',
957
+ result_symlink: ' {0} → {1} (软链接)',
958
+ result_copy: ' {0} → {1} ({2} 个文件)',
959
+ wukong_skills_cleanup: '\n🗑️ 悟空环境:清理 yida-skills/ 软链(悟空通过手动上传技能,不需要软链)...',
960
+ wukong_skills_cleaned: '已清理',
961
+ wukong_skills_not_found: ' ℹ️ 未找到 yida-skills/ 软链或目录,无需清理: {0}',
962
+ remove_failed: ' ❌ 删除失败: {0} ({1})',
963
+ symlink_fallback_copy: ' ⚠️ Windows 软链创建失败(需要管理员权限),降级为目录复制: {0}',
964
+ symlink_failed: ' ❌ 软链接创建失败: {0} ({1})',
965
+ },
966
+
967
+ // ── lib/check-update.js ────────────────────────────
968
+ check_update: {
969
+ new_version: '\n💡 发现新版本 {0}(当前 {1})\n 运行以下命令更新:\n npm install -g yidaconnector@latest\n',
970
+ },
971
+
972
+ // ── lib/update.js ──────────────────────────────────
973
+ update: {
974
+ checking: '正在检查最新版本...',
975
+ fetch_failed: '无法获取最新版本信息,请检查网络连接',
976
+ already_latest: '当前已是最新版本({0}),无需更新',
977
+ found_new_version: '发现新版本 {0}(当前 {1})',
978
+ installing: '正在安装 yidaconnector@latest...',
979
+ success: '更新成功!当前版本:{0}',
980
+ install_failed: '更新失败:{0}',
981
+ manual_hint: '请尝试手动执行:npm install -g yidaconnector@latest',
982
+ available: '有可用更新',
983
+ up_to_date: '已是最新',
984
+ label_install: 'Install',
985
+ label_channel: 'Channel',
986
+ label_version: 'Version',
987
+ label_update: 'Update',
988
+ done: '更新完成!',
989
+ done_hint: '运行 yidaconnector --version 确认新版本',
990
+ },
991
+
992
+ // ── lib/publish.js ─────────────────────────────────
993
+ generate_page: {
994
+ spec_not_found: 'spec 文件不存在:{0}',
995
+ spec_invalid: 'spec JSON 解析失败:{0}',
996
+ unknown_template: '未知页面模板:{0}',
997
+ available_templates: '可用模板:{0}',
998
+ template_not_found: '模板文件不存在:{0}',
999
+ done: '页面已生成:{0}',
1000
+ hint: '建议继续运行 yidaconnector compile <file> 或使用 --compile 直接编译校验。',
1001
+ success: '页面生成完成',
1002
+ },
1003
+ page_size: {
1004
+ large_source: '页面源码体积较大:{0}({1},约 {2} 行)',
1005
+ long_line_hint: '检测到超长单行(约 {0} 字符),通常来自压缩 vendor 或 base64,建议外置。',
1006
+ base64_hint: '检测到较长 base64 内嵌内容,建议上传到 CDN/OSS 后引用 URL。',
1007
+ memory_hint: '发布/编译会同时保留源码、构建产物、压缩产物和 schema 副本;如包含 vendor/base64,建议拆分或通过 this.utils.loadScript 加载。',
1008
+ windows_hint: 'Windows 代理写大 JSX 时不要使用 PowerShell Get-Content -Raw + ConvertTo-Json;请用 Node fs.writeFileSync/appendFileSync 分段写入。',
1009
+ },
1010
+ build_page: {
1011
+ step: '兼容构建宜搭页面源码',
1012
+ preparing: '正在构建宜搭兼容页面源码...',
1013
+ output: '宜搭兼容源码:{0}',
1014
+ success: '宜搭兼容页面源码已构建',
1015
+ done: '页面构建完成',
1016
+ },
1017
+ publish: {
1018
+ title: ' yida-publish - 宜搭页面发布工具',
1019
+ platform: ' 平台地址: {0}',
1020
+ base_url: '\n 平台地址: {0}',
1021
+ app_type: ' 应用ID: {0}',
1022
+ app_id: ' 应用ID: {0}',
1023
+ form_uuid: ' 表单ID: {0}',
1024
+ source_file: ' 源文件: {0}',
1025
+ compiled_file: ' 编译产物:{0}',
1026
+ output_dir: ' 输出目录:pages/dist/',
1027
+ step_lint: '\n🔍 Step 0: 宜搭编码规范预检\n',
1028
+ lint_title: '⚠️ 宜搭页面代码检查:',
1029
+ lint_error_line: ' ❌ 第 {0} 行: {1}',
1030
+ lint_warning_line: ' ⚠️ 第 {0} 行: {1}',
1031
+ lint_event_function: '事件绑定使用了 function,应使用箭头函数 (e) => { this.xxx() }',
1032
+ lint_missing_render_jsx: '缺少 export function renderJsx(),宜搭自定义页面必须导出 renderJsx',
1033
+ lint_import_require: '检测到 import/require。宜搭自定义页面禁止模块导入,第三方脚本应通过 this.utils.loadScript 加载',
1034
+ lint_react_hooks: '检测到 React Hooks。宜搭运行时基于 React 16 类组件模式,不支持 useState/useEffect 等 Hooks',
1035
+ lint_export_default: '检测到 export default。宜搭需要 export function renderJsx/didMount 等具名导出',
1036
+ lint_jsx_extension: '当前文件是 .js 但包含 JSX,建议改为 .jsx,编译产物仍会输出 .js',
1037
+ lint_event_direct_method: '事件绑定直接传入 this.xxx,会导致 this 丢失;请使用 (e) => { this.xxx(e); }',
1038
+ lint_event_bind_this: '事件绑定使用了 .bind(this),请改为 (e) => { this.xxx(e); }',
1039
+ lint_lifecycle_case: '检测到生命周期导出 {0},宜搭只识别 {1}(大小写敏感)',
1040
+ lint_react_lifecycle_method: '检测到 React 生命周期 {0},宜搭自定义页面应导出 {1}',
1041
+ lint_event_lowercase: '检测到小写事件属性 {0},React/Yida 不会绑定;请改为 {1}',
1042
+ lint_event_call_result: '事件绑定执行了函数或不是表达式处理器;请改为 (e) => { self.xxx(e); }',
1043
+ lint_event_noop_arrow: '事件箭头函数只返回/引用了方法但没有调用;请改为 (e) => { self.xxx(e); }',
1044
+ lint_button_missing_handler: '可见 <button> 没有 onClick/onMouseDown/onKeyDown 或 disabled,会显示成按钮但点了没有反应;请绑定事件,或改用 span/div 展示静态标签',
1045
+ lint_array_callback_function: '.{0}(function ...) 会导致回调内 this 丢失,请改为 .{0}((item) => ...)',
1046
+ lint_foreach_callback_function: '.forEach(function ...) 可能导致回调内 this 丢失,建议改为 .forEach((item) => ...)',
1047
+ lint_controlled_input: 'input 使用了 value 受控模式,宜搭页面应使用 defaultValue + onChange 写入 _customState',
1048
+ lint_native_select_ui: '检测到原生 select。面向用户的自定义页面下拉交互应使用 Tailwind 风格的自定义下拉组件,避免浏览器原生控件观感不一致',
1049
+ lint_iframe_self_navigation: '宜搭自定义页面运行在 iframe 中,跳转宜搭页面时请使用 target="_top"/target="_blank" 或 window.top.location,避免页面套娃',
1050
+ lint_page_size_limit: 'pageSize={0} 超过宜搭接口上限 100,请改为 100 或更小',
1051
+ lint_yida_api_catch: 'this.utils.yida API 调用未检测到 .catch(),请补充错误处理并 toast 给用户',
1052
+ lint_echarts_legacy_map_china: 'ECharts 5 已废弃 echarts/map/js/china.js,请加载 DataV GeoJSON 后调用 echarts.registerMap("china", geoJson)',
1053
+ lint_echarts_rich_label_formatter: 'ECharts label.formatter 返回 rich text 模板在宜搭自定义页面环境不稳定,建议使用普通 formatter 字符串或预先拼好的标签文本',
1054
+ lint_const_let: '使用了 const/let 声明,建议改为 var(宜搭运行环境兼容性)',
1055
+ lint_computed_property: '使用了 ES6 计算属性名 { [key]: value },宜搭 JS 引擎不支持此语法,会导致静默失败。请改为 var obj = {}; obj[key] = value;',
1056
+ lint_pad_method: '使用了 String.{0}(),宜搭 JS 引擎不支持此方法,会导致 Promise 回调静默中断。请用三元运算符替代,如:x < 10 ? "0" + x : "" + x',
1057
+ lint_large_then_callback: 'Promise .then() 回调代码量过大({0} 行,建议不超过 {1} 行),可能导致静默截断。建议将逻辑提取到独立的 export function 中',
1058
+ lint_fix_errors: '❌ 请修复以上错误后再发布',
1059
+ lint_skip_hint: '💡 如需跳过检查,可添加 --skip-lint 参数',
1060
+ lint_passed: ' ✅ 代码检查通过\n',
1061
+ lint_skipped: '\n⏭️ 跳过代码预检(--skip-lint)\n',
1062
+ duplicate_source_mismatch: ' ⚠️ 检测到同名双副本但内容不一致。当前发布: {0};另一份: {1}',
1063
+ data_source_fetching: ' 正在读取现有页面数据源...',
1064
+ data_source_preserved: ' ✅ 已保留现有页面数据源:{0} 个',
1065
+ data_source_none: ' 未发现需要保留的自定义数据源',
1066
+ data_source_fetch_failed: '无法读取现有页面 Schema,已停止发布以避免清空已有数据源:{0}',
1067
+ target_checking: ' 正在校验发布目标类型...',
1068
+ target_check_forced: ' ⚠️ 已跳过发布目标类型校验(--force)',
1069
+ target_check_ok: ' ✅ 发布目标已确认:{0} ({1})',
1070
+ target_check_failed: '无法校验发布目标:{0}',
1071
+ target_not_found: '未在应用导航中找到发布目标:{0}',
1072
+ target_type_invalid: '发布目标不是自定义展示页面:{0} 当前类型为 {1}',
1073
+ target_type_hint: '当前目标「{0}」看起来不是自定义页面(类型:{1})。请不要把 JSX 发布到数据表或流程表单。',
1074
+ target_list_hint: '可先运行 yidaconnector list-forms {0} --keyword <页面名>,选择 formType=display 的自定义页面 formUuid。',
1075
+ target_force_hint: '确认要绕过保护时可追加 --force;这会覆盖目标 Schema,请只在明确知道目标是自定义页面时使用。',
1076
+ step_compile: '\n📦 Step 1: 编译源码 & 构建 Schema\n',
1077
+ reading_source: '[1/4] 读取 {0} 源码...',
1078
+ compiling: '[2/4] Babel 编译 {0}...',
1079
+ compile_failed: ' ❌ 编译失败:{0}',
1080
+ compile_location: '\n 位置: 第 {0} 行, 第 {1} 列',
1081
+ compile_error_loc: ' 位置: 第 {0} 行, 第 {1} 列',
1082
+ compile_error_code: ' 错误码: {0}',
1083
+ minifying: '[3/4] UglifyJS 压缩 → {0}...',
1084
+ minify_failed: ' 压缩失败:{0}',
1085
+ uglifying: '[3/4] UglifyJS 压缩 → {0}...',
1086
+ uglify_failed: ' 压缩失败:{0}',
1087
+ compile_done: ' ✅ 编译压缩完成:{0}',
1088
+ building_schema: '[4/4] 构建 Schema...',
1089
+ schema_built: ' ✅ Schema 构建完成!',
1090
+ step_login: '\n🔑 Step 2: 读取登录态',
1091
+ step_publish: '\n📤 Step 3: 发布 Schema\n',
1092
+ resend_save_csrf: ' 🔄 重新发送 saveFormSchema 请求(csrf_token 已刷新)...',
1093
+ resend_save: ' 🔄 重新发送 saveFormSchema 请求...',
1094
+ csrf_retry: ' 🔄 重新发送 saveFormSchema 请求(csrf_token 已刷新)...',
1095
+ relogin_retry: ' 🔄 重新发送 saveFormSchema 请求...',
1096
+ publish_failed: '\n❌ 发布失败: {0}',
1097
+ schema_published: ' ✅ Schema 发布成功!',
1098
+ schema_success: ' ✅ Schema 发布成功!',
1099
+ form_uuid_label: ' formUuid: {0}',
1100
+ version_label: ' version: {0}',
1101
+ step_config: '\n⚙️ Step 4: 更新表单配置\n',
1102
+ sending_config: ' 发送 updateFormConfig 请求...',
1103
+ resend_config_csrf: ' 🔄 重新发送 updateFormConfig 请求(csrf_token 已刷新)...',
1104
+ resend_config: ' 🔄 重新发送 updateFormConfig 请求...',
1105
+ config_csrf_retry: ' 🔄 重新发送 updateFormConfig 请求(csrf_token 已刷新)...',
1106
+ config_relogin_retry: ' 🔄 重新发送 updateFormConfig 请求...',
1107
+ success: ' ✅ 发布成功!',
1108
+ publish_success: ' ✅ 发布成功!',
1109
+ config_updated: ' 配置已更新: MINI_RESOURCE = 8',
1110
+ config_failed: ' ⚠️ 配置更新失败: {0}',
1111
+ schema_ok_config_failed: ' Schema 已发布,但配置更新失败',
1112
+ schema_published_config_failed: ' Schema 已发布,但配置更新失败',
1113
+ step_health_check: '\n🩺 Step 5: 健康检查已发布页面\n',
1114
+ health_check_ok: ' ✅ 健康检查通过: HTTP {0}',
1115
+ health_check_failed: ' ⚠️ 健康检查失败: HTTP {0} {1}',
1116
+ exception: '\n❌ 发布异常: {0}',
1117
+ error: '\n❌ 发布异常: {0}',
1118
+ source_not_found: '❌ 源文件不存在:{0}',
1119
+ usage: '用法: yidaconnector publish <源文件路径> <appType> <formUuid> [--health-check]',
1120
+ example: '示例:yidaconnector publish pages/src/xxx.js APP_XXX FORM-XXX --health-check',
1121
+ },
1122
+
1123
+ // ── lib/qr-login.js ────────────────────────────────
1124
+ qr_login: {
1125
+ title: '🔐 宜搭终端二维码登录',
1126
+ step_init: ' Step 1: 初始化会话...',
1127
+ step_get_qr: ' Step 2: 获取二维码...',
1128
+ scan_hint: ' 📱 请用钉钉扫描以下二维码登录:',
1129
+ qr_url_label: ' 二维码链接: {0}',
1130
+ waiting_scan: ' ⏳ 等待扫码中(最长 2 分钟)...',
1131
+ scanned_confirm: ' ✅ 已扫码!请在手机上确认登录...',
1132
+ scan_success: ' ✅ 扫码确认成功!',
1133
+ step_exchange: ' Step 4: 获取登录凭证...',
1134
+ step_get_corps: ' Step 5: 获取组织列表...',
1135
+ step_switch_corp: ' Step 7: 切换到目标组织...',
1136
+ only_one_corp: ' ✅ 检测到唯一组织:{0},自动选择',
1137
+ select_corp_prompt: ' 🏢 检测到多个可访问组织,请选择:',
1138
+ select_corp_input: ' 请输入序号 (1-{0}): ',
1139
+ select_corp_invalid: ' ❌ 无效输入,请输入 1 到 {0} 之间的数字',
1140
+ target_corp_not_found: '未在可访问组织中找到指定 corpId:{0}',
1141
+ corp_selected: ' ✅ 已选择组织:{0}',
1142
+ login_success: '✅ 登录成功!',
1143
+ qrcode_fallback: ' ⚠️ qrcode 包未安装,请手动访问以下链接完成登录:',
1144
+ qrcode_render_failed: ' ⚠️ 二维码渲染失败({0}),请手动访问以下链接:',
1145
+ get_qr_failed: '获取二维码响应解析失败: {0}',
1146
+ get_qr_api_failed: '获取二维码接口失败: {0}',
1147
+ get_qr_error: '获取二维码失败: {0}',
1148
+ qr_expired: '二维码已过期,请重新登录',
1149
+ poll_timeout: '等待扫码超时(2 分钟),请重新登录',
1150
+ poll_error: '轮询扫码状态失败: {0}',
1151
+ exchange_failed: '换取登录凭证响应解析失败: {0}',
1152
+ exchange_api_failed: '换取登录凭证接口失败: {0}',
1153
+ exchange_error: '换取登录凭证失败: {0}',
1154
+ get_corp_list_failed: '获取组织列表响应解析失败: {0}',
1155
+ get_corp_list_api_failed: '获取组织列表接口失败: {0}',
1156
+ get_corps_warn: ' ⚠️ 获取组织列表失败({0}),将使用默认组织',
1157
+ switch_corp_failed: '切换组织失败: {0}',
1158
+ switch_corp_warn: ' ⚠️ 切换组织失败({0}),将使用当前组织',
1159
+ select_corp_warn: ' ⚠️ 组织选择失败({0}),将使用默认组织',
1160
+ no_corp_available: '未找到可访问的组织',
1161
+ no_csrf_in_cookie: '登录成功但未获取到 csrf_token,请重试',
1162
+ stdin_closed: '输入流已关闭,无法选择组织',
1163
+ },
1164
+
1165
+ // ── scripts/postinstall.js ─────────────────────────
1166
+ postinstall: {
1167
+ welcome_title: ' 🎉 欢迎使用 YidaConnector! ',
1168
+ install_success: ' ✅ 安装成功!{0} 宜搭 AI 应用开发工具已就绪。',
1169
+ update_success: ' ✅ 更新成功!{0} YidaConnector 已升级到最新版本。',
1170
+ ai_mode_title: ' 🚀 开启 AI 问答模式',
1171
+ ai_mode_desc: ' 在 Codex / Claude Code / Aone Copilot / Cursor 等 AI 工具中直接对话:',
1172
+ prompt1: ' 📋 「帮我用宜搭创建一个考勤管理系统」',
1173
+ prompt2: ' 💰 「帮我搭建个人薪资计算器应用」',
1174
+ prompt3: ' 🏢 「创建一个 CRM 客户管理系统」',
1175
+ prompt4: ' 🎂 「做一个生日祝福小程序」',
1176
+ steps_title: ' 📖 基础使用步骤',
1177
+ step1: ' {0}Step 1{1} 打开你的 AI 编程工具(Codex / Claude Code / Cursor 等)',
1178
+ step2: ' {0}Step 2{1} 直接用自然语言描述你想要的应用',
1179
+ step3: ' {0}Step 3{1} AI 自动调用 yidaconnector 命令完成创建和发布',
1180
+ step4: ' {0}Step 4{1} 获得可访问的宜搭应用链接 🎉',
1181
+ commands_title: ' ⚡ 快捷命令',
1182
+ cmd_env: ' {0}yidaconnector env{1} {2}# 检测当前 AI 工具环境和登录态{3}',
1183
+ cmd_login: ' {0}yidaconnector login{1} {2}# 登录宜搭账号{3}',
1184
+ cmd_help: ' {0}yidaconnector --help{1} {2}# 查看所有命令{3}',
1185
+ footer1: ' 📚 文档:https://github.com/bunnyrui/yidaconnector',
1186
+ footer2: ' 💬 社区:钉钉扫码加入 YidaConnector 社区',
1187
+ },
1188
+
1189
+ // ── lib/conversation/export-conversation.js ────────
1190
+ exportConv: {
1191
+ // CLI 选项描述
1192
+ outputDesc: '指定输出文件路径',
1193
+ inputDesc: '手动指定对话记录文件',
1194
+ latestDesc: '仅导出最近一次对话',
1195
+ listDesc: '列出可用的对话记录',
1196
+ // 主流程消息
1197
+ title: '📝 导出 AI 对话记录',
1198
+ detectEnv: '🔍 检测当前环境...',
1199
+ currentTool: ' 当前 AI 工具: {0}',
1200
+ collecting: '📥 采集对话记录...',
1201
+ noConversation: '❌ 未找到对话记录',
1202
+ messagesFound: ' 找到 {0} 条消息',
1203
+ loadingConfig: '⚙️ 加载应用配置...',
1204
+ appName: ' 应用名: {0}',
1205
+ noConfig: ' 未找到应用配置,使用默认值',
1206
+ formatting: '📄 格式化 Markdown...',
1207
+ writing: '💾 写入文件...',
1208
+ success: '✅ 导出成功!',
1209
+ outputPath: '📁 输出路径: {0}',
1210
+ error: '❌ 导出失败: {0}',
1211
+ // collector.js 消息
1212
+ inputNotFound: '❌ 输入文件不存在: {0}',
1213
+ unsupportedFormat: '❌ 不支持的文件格式,请使用 .json 或 .jsonl',
1214
+ noClaudeProject: '❌ 未找到当前目录对应的 Claude Code 项目',
1215
+ useInputHint: '💡 请使用 --input 参数手动指定对话文件',
1216
+ noConversations: '❌ 未找到任何对话记录',
1217
+ availableConversations: '📋 可用的对话记录:',
1218
+ usingLatest: ' 使用最新对话: {0}',
1219
+ envNotSupported: '❌ 当前环境不支持自动检测对话记录',
1220
+ // formatter.js 消息
1221
+ noKeySteps: '无工具调用记录',
1222
+ },
1223
+
1224
+ // ── lib/cdn-*.js ───────────────────────────────────
1225
+ cdn: {
1226
+ // 配置管理
1227
+ config_load_error: '加载 CDN 配置失败: {0}',
1228
+ config_saved: '✅ CDN 配置已保存到: {0}',
1229
+ config_usage: '用法: yidaconnector cdn-config [选项]',
1230
+ config_examples: `
1231
+ 示例:
1232
+ yidaconnector cdn-config --init
1233
+ yidaconnector cdn-config --show
1234
+ yidaconnector cdn-config --set-domain cdn.example.com`,
1235
+ config_options: `
1236
+ 选项:
1237
+ --init 初始化配置(交互式)
1238
+ --show 显示当前配置
1239
+ --set-key <key> 设置 AccessKey ID
1240
+ --set-secret <secret> 设置 AccessKey Secret
1241
+ --set-domain <domain> 设置 CDN 加速域名
1242
+ --set-bucket <bucket> 设置 OSS Bucket 名称
1243
+ --set-region <region> 设置 OSS 区域
1244
+ --set-path <path> 设置上传目录前缀`,
1245
+ config_file_path: '📄 配置文件: {0}',
1246
+ config_section_aliyun: '🔐 阿里云凭证',
1247
+ config_section_cdn: '🌐 CDN 配置',
1248
+ config_section_oss: '📦 OSS 配置',
1249
+ config_section_upload: '📤 上传配置',
1250
+ config_cdn_domain: 'CDN 加速域名',
1251
+ config_oss_region: 'OSS 区域',
1252
+ config_oss_bucket: 'OSS Bucket',
1253
+ config_oss_endpoint: 'OSS Endpoint',
1254
+ config_upload_path: '上传目录',
1255
+ config_compress: '图片压缩',
1256
+ config_max_width: '最大宽度',
1257
+ config_quality: '图片质量',
1258
+ config_not_set: '未设置',
1259
+ config_enabled: '启用',
1260
+ config_disabled: '禁用',
1261
+ config_status_valid: '✅ 配置完整,可以使用',
1262
+ config_status_invalid: '⚠️ 配置不完整',
1263
+ config_missing: ' 缺少字段: {0}',
1264
+ config_updated: '✅ 配置已更新!',
1265
+ config_init_title: '🔧 CDN 配置初始化向导',
1266
+ config_init_desc: '要使用 CDN 图片上传功能,需要配置以下信息:',
1267
+ config_init_example: '示例配置:',
1268
+ config_init_hint: '💡 请使用以下命令配置各项参数:',
1269
+ config_init_or: ' 或一次性配置所有参数:',
1270
+ // 选项描述(单独的 key,用于帮助信息拼接)
1271
+ config_opt_init: '初始化配置(交互式)',
1272
+ config_opt_show: '显示当前配置',
1273
+ config_opt_key: '设置 AccessKey ID',
1274
+ config_opt_secret: '设置 AccessKey Secret',
1275
+ config_opt_domain: '设置 CDN 加速域名',
1276
+ config_opt_bucket: '设置 OSS Bucket 名称',
1277
+ config_opt_region: '设置 OSS 区域',
1278
+ config_opt_path: '设置上传目录前缀',
1279
+
1280
+ // 上传
1281
+ upload_usage: '用法: yidaconnector cdn-upload <图片路径> [选项]',
1282
+ upload_examples: `
1283
+ 示例:
1284
+ yida cdn-upload ./image.png
1285
+ yida cdn-upload ./images/*.png --domain cdn.example.com
1286
+ yida cdn-upload ./photo.jpg --path products/`,
1287
+ upload_options: `
1288
+ 选项:
1289
+ --domain <域名> CDN 加速域名(可选)
1290
+ --path <路径> 上传目录前缀(可选)
1291
+ --compress 启用图片压缩(默认启用)
1292
+ --no-compress 禁用图片压缩`,
1293
+ // 选项描述(单独的 key)
1294
+ upload_opt_domain: 'CDN 加速域名(可选)',
1295
+ upload_opt_path: '上传目录前缀(可选)',
1296
+ upload_opt_compress: '启用图片压缩(默认启用)',
1297
+ upload_opt_no_compress: '禁用图片压缩',
1298
+ upload_no_files: '❌ 请指定要上传的图片文件',
1299
+ config_incomplete: '❌ CDN 配置不完整',
1300
+ missing_fields: ' 缺少字段: {0}',
1301
+ run_config_init: ' 请先运行: yidaconnector cdn-config --init',
1302
+ no_config: '❌ 未找到 CDN 配置',
1303
+ oss_sdk_required: '❌ 缺少 ali-oss SDK',
1304
+ run_npm_install: ' 请运行: npm install {0}',
1305
+ no_images_found: '❌ 未找到支持的图片文件',
1306
+ uploading_images: '📤 正在上传 {0} 个图片...',
1307
+ uploading_file: ' 上传: {0}',
1308
+ upload_success: ' ✅ {0}',
1309
+ upload_failed: ' ❌ {0} 上传失败: {1}',
1310
+ upload_summary: '\n📊 上传汇总',
1311
+ upload_success_count: ' 成功: {0} 个',
1312
+ upload_fail_count: ' 失败: {0} 个',
1313
+ cdn_urls: '\n🔗 CDN URL 列表:',
1314
+ upload_error: '❌ 上传失败: {0}',
1315
+
1316
+ // 刷新
1317
+ refresh_usage: '用法: yidaconnector cdn-refresh [选项]',
1318
+ refresh_examples: `
1319
+ 示例:
1320
+ yida cdn-refresh --urls "https://cdn.example.com/image.png"
1321
+ yida cdn-refresh --paths "/yida-images/"
1322
+ yida cdn-refresh --file urls.txt`,
1323
+ refresh_options: `
1324
+ 选项:
1325
+ --urls <URL列表> 刷新的 URL 列表(逗号分隔)
1326
+ --paths <路径列表> 刷新的目录路径列表(逗号分隔)
1327
+ --file <文件> 从文件读取 URL 列表(每行一个)`,
1328
+ // 选项描述(单独的 key)
1329
+ refresh_opt_urls: '刷新的 URL 列表(逗号分隔)',
1330
+ refresh_opt_paths: '刷新的目录路径列表(逗号分隔)',
1331
+ refresh_opt_file: '从文件读取 URL 列表(每行一个)',
1332
+ refresh_no_targets: '❌ 请指定要刷新的 URL 或目录',
1333
+ cdn_sdk_required: '❌ 缺少阿里云 CDN SDK',
1334
+ querying_quota: '📊 查询刷新配额...',
1335
+ quota_info: ' URL 刷新: {0}/天, 剩余 {1} | 目录刷新: {2}/天, 剩余 {3}',
1336
+ quota_query_failed: ' ⚠️ 查询配额失败: {0}',
1337
+ refreshing_urls: '🔄 正在刷新 {0} 个 URL...',
1338
+ refreshing_paths: '🔄 正在刷新 {0} 个目录...',
1339
+ refresh_task_id: ' ✅ 任务 ID: {0}',
1340
+ refresh_urls_failed: ' ❌ URL 刷新失败: {0}',
1341
+ refresh_paths_failed: ' ❌ 目录刷新失败: {0}',
1342
+ refresh_summary: '\n📊 刷新汇总',
1343
+ url_refresh_success: ' ✅ URL 刷新成功,任务 ID: {0}',
1344
+ path_refresh_success: ' ✅ 目录刷新成功,任务 ID: {0}',
1345
+ refresh_error: '❌ 刷新失败: {0}',
1346
+ file_not_found: '❌ 文件不存在: {0}',
1347
+ },
1348
+
1349
+ // ── src/flash-note/flash-to-prd.ts ──────────────
1350
+ flashNote: {
1351
+ toPrd: {
1352
+ title: '📋 钉钉闪记转 PRD',
1353
+ help_usage: '用法:yidaconnector flash-to-prd --file <闪记文件路径> [--name <项目名>]',
1354
+ help_usage2: ' yidaconnector flash-to-prd --name <项目名> (从标准输入读取)',
1355
+ help_args_title: '参数:',
1356
+ help_arg_file: ' --file, -f <路径> 闪记文本文件路径(支持 .txt / .md)',
1357
+ help_arg_name: ' --name, -n <名称> 项目名称(可选,默认从闪记内容中自动提取)',
1358
+ help_arg_max_tokens: ' --max-tokens <数量> AI 最大输出 token 数(默认 8000)',
1359
+ help_examples_title: '示例:',
1360
+ help_example1: ' yidaconnector flash-to-prd --file ./meeting-notes.txt --name "设备巡检系统"',
1361
+ help_example2: ' cat meeting.txt | yidaconnector flash-to-prd --name "设备巡检系统"',
1362
+ step_read: '[Step 1] 读取闪记内容...',
1363
+ file_not_found: '文件不存在:{0}',
1364
+ no_input: '未提供闪记内容。请使用 --file 指定文件,或通过管道传入内容。',
1365
+ stdin_empty: '标准输入内容为空',
1366
+ read_success: '✅ 读取成功,原文 {0} 字',
1367
+ step_load_module: '[Step 2] 加载 Prompt 构建模块...',
1368
+ module_loaded_builtin: '✅ 已加载内置 Prompt 模块',
1369
+ module_loaded_local: '✅ 已加载本地 Prompt 模块:{0}',
1370
+ module_not_found: '❌ 未找到 build-flash-note-prompt.js 模块',
1371
+ module_path_tried: ' 尝试路径 {0}:{1}',
1372
+ step_preprocess: '[Step 3] 预处理 + 会议识别...',
1373
+ preprocess_result: ' 预处理:{0} 字 → {1} 字',
1374
+ meeting_meta: ' 会议元信息:{0} 项{1}',
1375
+ a1_sections: ' A1 摘要段落:{0} 段{1}',
1376
+ speakers: ' 发言人识别:{0} 位{1}',
1377
+ speakers_with_role: '(含角色标注 {0} 位)',
1378
+ step_login: '[Step 4] 检查登录态...',
1379
+ no_login: ' 未检测到登录态,触发登录...',
1380
+ login_ready: '✅ 登录态就绪({0})',
1381
+ step_ai: '[Step 5] 调用 AI 生成 PRD...',
1382
+ single_segment: ' 单段模式,Prompt 长度:{0} 字',
1383
+ multi_segment: ' 多段模式,共 {0} 段',
1384
+ extracting_segment: ' 提取第 {0}/{1} 段({2} 字)...',
1385
+ merging_segments: ' 合并分段结果...',
1386
+ ai_success: '✅ PRD 生成成功',
1387
+ ai_error: 'AI 接口调用失败:{0}',
1388
+ done: '✅ 闪记转 PRD 完成',
1389
+ done_project: ' 项目名称:{0}',
1390
+ done_file: ' 输出文件:{0}',
1391
+ done_size: ' 文件大小:{0} 字',
1392
+ done_meeting: ' 会议识别:元信息 {0} 项,A1 摘要 {1} 段,发言人 {2} 位',
1393
+ },
1394
+ },
1395
+
1396
+ // ── lib/process/preview-process.js ─────────────────
1397
+ preview_process: {
1398
+ usage: '用法: yidaconnector process preview <appType> <processInstanceId> [--output <path>]',
1399
+ example: '示例: yidaconnector process preview APP_XXX proc-inst-id-xxx',
1400
+ no_login: '❌ 无法获取有效登录态,请先运行 yidaconnector login',
1401
+ fetch_instance_failed: '获取流程实例详情失败',
1402
+ fetch_records_warning: '获取审批记录失败,将仅展示基础流程图',
1403
+ fetching: '正在获取流程实例 {0} ...',
1404
+ data_fetched: '流程数据获取成功',
1405
+ nodes_count: '解析到 {0} 个流程节点',
1406
+ output_success: '流程预览已生成: {0}',
1407
+ browser_opened: '已在浏览器中打开',
1408
+ browser_hint: '请在浏览器中打开: {0}',
1409
+ node_submit: '发起提交',
1410
+ node_end: '流程结束',
1411
+ node_approval: '审批节点',
1412
+ },
1413
+
1414
+ // ── db-index ────────────────────────────────────────────
1415
+ db_index: {
1416
+ usage: '用法: yidaconnector db-index [选项]',
1417
+ commands: '命令:',
1418
+ cmd_form: '检测指定表单的索引情况',
1419
+ cmd_form_suggest: '获取索引建议',
1420
+ cmd_app_list: '查看所有表单的索引概览',
1421
+ examples: '示例:',
1422
+ checking_login: '检查登录态... ({0})',
1423
+ querying_corp_config: '查询企业专属配置...',
1424
+ querying_db_config: '查询专属数据库配置...',
1425
+ triggering_check: '触发数据库配置检查...',
1426
+ no_exclusive_config: '未找到专属数据库配置',
1427
+ corp_config_title: '企业专属配置',
1428
+ force_exclusive_db: '强制专属数据库',
1429
+ force_physical_column: '强制物理列',
1430
+ analyzing_form: '分析表单 {0} 的索引...',
1431
+ listing_forms: '列出应用 {0} 的所有表单索引...',
1432
+ missing_args: '缺少必要参数',
1433
+ error: '执行失败: {0}',
1434
+ report_title: '表单「{0}」索引分析报告',
1435
+ existing_indexes: '已有索引',
1436
+ no_existing_indexes: '暂无已有索引',
1437
+ suggested_indexes: '建议创建索引',
1438
+ no_suggestions: '暂无索引建议',
1439
+ reason: '原因',
1440
+ field_used_in_filter: '该字段常用于筛选查询',
1441
+ forms_overview: '表单索引概览',
1442
+ feature_coming_soon: '该功能即将推出',
1443
+ },
1444
+
1445
+ // ── db-seq-fix ────────────────────────────────────────────
1446
+ db_seq_fix: {
1447
+ usage: '用法: yidaconnector db-seq-fix [选项]',
1448
+ commands: '命令:',
1449
+ cmd_check: '检查所有 Sequence 状态(默认)',
1450
+ cmd_fix: '自动修复有问题的 Sequence',
1451
+ cmd_dry_run: '预览修复 SQL,不实际执行',
1452
+ examples: '示例:',
1453
+ example_check: '检查所有 Sequence 状态',
1454
+ example_fix: '自动修复有问题的 Sequence',
1455
+ example_dry_run: '预览修复 SQL',
1456
+ checking_login: '检查登录态... ({0})',
1457
+ querying_db_config: '查询专属数据库配置...',
1458
+ no_db_config: '未找到专属数据库配置',
1459
+ checking_sequences: '检查所有 Sequence 状态...',
1460
+ fixing_sequences: '正在修复 {0} 个 Sequence...',
1461
+ fixing: '修复',
1462
+ fix_done: '修复完成',
1463
+ error: '执行失败: {0}',
1464
+ report_title: 'Sequence 状态检测报告',
1465
+ need_fix: '需要修复 ({0} 个)',
1466
+ ok: '状态正常 ({0} 个)',
1467
+ errors: '检查失败 ({0} 个)',
1468
+ sequence: 'Sequence',
1469
+ max_id: '最大 ID',
1470
+ current_seq: '当前 Sequence 值',
1471
+ suggested: '建议起始值',
1472
+ fix_sql: '修复 SQL',
1473
+ summary_need_fix: '发现 {0} 个 Sequence 需要修复',
1474
+ run_fix_hint: '运行 yidaconnector db-seq-fix --fix 进行修复',
1475
+ summary_ok: '所有 Sequence 状态正常',
1476
+ },
1477
+ aggregate_table: {
1478
+ usage: '用法: yidaconnector aggregate-table <list|create-empty|inspect|preview|save|publish|status> <appType> ...',
1479
+ commands_title: '子命令:',
1480
+ cmd_list: 'list <appType> [--keyword <text>] [--json] 列出应用中的聚合表',
1481
+ cmd_create_empty: 'create-empty <appType> "<名称>" [--open|--no-open] 创建空白聚合表并返回设计器 URL',
1482
+ cmd_inspect: 'inspect <appType> <formUuid> [--json] 读取聚合表设计配置',
1483
+ cmd_preview: 'preview <appType> <formUuid> <design.json> [--json] 预览配置结果,不保存',
1484
+ cmd_save: 'save <appType> <formUuid> <design.json> [--json] 保存聚合表草稿',
1485
+ cmd_publish: 'publish <appType> <formUuid> <design.json> [--json] 发布聚合表配置',
1486
+ cmd_status: 'status <appType> <formUuid> [--json] 查询聚合表计算状态',
1487
+ examples_title: '示例:',
1488
+ example_list: 'yidaconnector aggregate-table list APP_XXX',
1489
+ example_create_empty: 'yidaconnector aggregate-table create-empty APP_XXX "客户合同聚合表" --open',
1490
+ example_inspect: 'yidaconnector aggregate-table inspect APP_XXX FORM_XXX --json',
1491
+ example_preview: 'yidaconnector aggregate-table preview APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
1492
+ example_save: 'yidaconnector aggregate-table save APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
1493
+ example_publish: 'yidaconnector aggregate-table publish APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
1494
+ example_status: 'yidaconnector aggregate-table status APP_XXX FORM_XXX',
1495
+ list_usage: '用法: yidaconnector aggregate-table list <appType> [--keyword <text>] [--json]',
1496
+ create_empty_usage: '用法: yidaconnector aggregate-table create-empty <appType> "<名称>" [--locale zh_CN|en_US|ja_JP] [--open|--no-open]',
1497
+ inspect_usage: '用法: yidaconnector aggregate-table inspect <appType> <formUuid> [--json]',
1498
+ preview_usage: '用法: yidaconnector aggregate-table preview <appType> <formUuid> <design.json> [--json]',
1499
+ save_usage: '用法: yidaconnector aggregate-table save <appType> <formUuid> <design.json> [--json]',
1500
+ publish_usage: '用法: yidaconnector aggregate-table publish <appType> <formUuid> <design.json> [--json]',
1501
+ status_usage: '用法: yidaconnector aggregate-table status <appType> <formUuid> [--json]',
1502
+ no_login: '未找到登录态,请先执行 yidaconnector login',
1503
+ unsupported_locale: '不支持的语言: {0}',
1504
+ unknown_subcommand: '未知的 aggregate-table 子命令: {0}',
1505
+ design_required: '缺少聚合表设计配置 JSON 或文件路径',
1506
+ invalid_json: '聚合表设计配置不是合法 JSON: {0}',
1507
+ design_object_required: '聚合表设计配置必须是 JSON 对象',
1508
+ check_feature: '检查聚合表能力',
1509
+ feature_disabled: '当前应用或组织未启用聚合表能力,或已达到版本额度上限',
1510
+ create_empty: '创建空白聚合表',
1511
+ inspect: '读取聚合表配置',
1512
+ preview: '预览聚合表配置',
1513
+ save: '保存聚合表草稿',
1514
+ publish: '发布聚合表配置',
1515
+ status: '查询聚合表构建状态',
1516
+ publish_requires_source: '发布聚合表至少需要 1 个数据源,请先配置 relationForms',
1517
+ list_success: '聚合表列表',
1518
+ create_empty_success: '聚合表创建成功',
1519
+ inspect_success: '聚合表配置读取成功',
1520
+ preview_success: '聚合表预览成功',
1521
+ save_success: '聚合表草稿保存成功',
1522
+ publish_success: '聚合表发布成功',
1523
+ status_success: '聚合表状态查询成功',
1524
+ },
1525
+ ai_form_setting: {
1526
+ usage: '用法: yidaconnector ai-form-setting <get|fields|models|enable|disable|save> <appType> ...',
1527
+ commands_title: '子命令:',
1528
+ cmd_get: 'get <appType> <formUuid> [--raw] [--json] 查询 AI 审批提示配置',
1529
+ cmd_fields: 'fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] 查询可插入字段',
1530
+ cmd_models: 'models <appType> [--type TEXT|IMAGE|ATTACHMENT] 查询可用模型',
1531
+ cmd_enable: 'enable <appType> <formUuid> [--json] 开启 AI 审批提示',
1532
+ cmd_disable: 'disable <appType> <formUuid> [--json] 关闭 AI 审批提示',
1533
+ cmd_save: 'save <appType> <formUuid> <config.json> [--enable] 保存提示词和模型配置',
1534
+ examples_title: '示例:',
1535
+ example_get: 'yidaconnector ai-form-setting get APP_XXX FORM_XXX --json',
1536
+ example_fields: 'yidaconnector ai-form-setting fields APP_XXX FORM_XXX --type ATTACHMENT',
1537
+ example_models: 'yidaconnector ai-form-setting models APP_XXX --type IMAGE',
1538
+ example_enable: 'yidaconnector ai-form-setting enable APP_XXX FORM_XXX',
1539
+ example_save: 'yidaconnector ai-form-setting save APP_XXX FORM_XXX .cache/yidaconnector/ai-form-setting/config.json --enable',
1540
+ enable_disable_conflict: '--enable 和 --disable 不能同时使用',
1541
+ invalid_type: '无效的提示词类型: {0},有效值: {1}',
1542
+ invalid_status: '无效的 AI 审批提示状态: {0}',
1543
+ config_required: '缺少 AI 审批提示配置 JSON 或文件路径',
1544
+ invalid_json: 'AI 审批提示配置不是合法 JSON: {0}',
1545
+ invalid_variable: '第 {0} 个变量必须是对象',
1546
+ variable_required: '第 {0} 个变量必须包含 varName 和 fieldId',
1547
+ prompt_required: '提示词 {0} 缺少 prompt/content',
1548
+ variables_array_required: 'variables 必须是数组',
1549
+ invalid_item: '第 {0} 个提示词配置必须是对象',
1550
+ model_required: '提示词 {0} 缺少 modelId',
1551
+ invalid_config_part: '{0} 必须是 JSON 对象或合法 JSON 字符串',
1552
+ config_object_required: 'AI 审批提示配置必须是 JSON 对象或数组',
1553
+ items_array_required: 'AI 审批提示配置必须包含 items 数组',
1554
+ too_many_items: 'AI 审批提示最多支持 {0} 条',
1555
+ duplicate_item_id: '重复的 itemId: {0}',
1556
+ no_login: '未找到登录态,请先执行 yidaconnector login',
1557
+ get_usage: '用法: yidaconnector ai-form-setting get <appType> <formUuid> [--raw] [--json]',
1558
+ fields_usage: '用法: yidaconnector ai-form-setting fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
1559
+ models_usage: '用法: yidaconnector ai-form-setting models <appType> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
1560
+ status_usage: '用法: yidaconnector ai-form-setting <enable|disable> <appType> <formUuid> [--json]',
1561
+ save_usage: '用法: yidaconnector ai-form-setting save <appType> <formUuid> <config.json> [--enable|--disable] [--json]',
1562
+ get_action: '查询 AI 审批提示配置',
1563
+ fields_action: '查询 AI 审批提示字段',
1564
+ models_action: '查询 AI 审批提示模型',
1565
+ status_action: '更新 AI 审批提示状态',
1566
+ save_action: '保存 AI 审批提示配置',
1567
+ get_success: 'AI 审批提示配置',
1568
+ fields_success: 'AI 审批提示字段',
1569
+ models_success: 'AI 审批提示模型',
1570
+ save_success: 'AI 审批提示配置保存成功',
1571
+ enabled: 'AI 审批提示已开启',
1572
+ disabled: 'AI 审批提示已关闭',
1573
+ unknown_subcommand: '未知的 ai-form-setting 子命令: {0}',
1574
+ },
1575
+ codex_login: {
1576
+ title: ' yidaconnector login {0} - {1} 登录模式',
1577
+ not_codex: '当前环境未检测为 Codex / Qoder / 悟空,仅返回内置浏览器登录 handoff。',
1578
+ no_playwright: '{0} 登录模式不需要安装 Playwright 或额外 Chromium。',
1579
+ using_browser: '{0} 内置浏览器仅适合无需登录的页面预览;宜搭登录 Cookie 请使用 yidaconnector login --browser。',
1580
+ browser_handoff_hint: '{0} 内置浏览器不支持认证 Cookie 导出;如需 CLI Cookie,请使用 yidaconnector login --browser。',
1581
+ handoff_message: '{0} 内置浏览器不能导出宜搭登录 Cookie;如需 CLI Cookie,请运行 fallback_command。',
1582
+ cache_available: '已存在可用的 CLI Cookie 缓存,无需重新打开浏览器登录。',
1583
+ },
1584
+ };