@qfei-design/make-app-approval 0.0.0-stage → 0.1.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.
Files changed (41) hide show
  1. package/PUBLIC_API.md +129 -0
  2. package/README.md +65 -2
  3. package/capabilities.json +76 -0
  4. package/dist/detail/approval-task-detail.d.ts +2 -0
  5. package/dist/detail/diagnostics.d.ts +2 -0
  6. package/dist/detail/field-value.d.ts +2 -0
  7. package/dist/detail/index.d.ts +3 -0
  8. package/dist/detail/task-policy.d.ts +18 -0
  9. package/dist/detail/types.d.ts +111 -0
  10. package/dist/detail.cjs +1 -0
  11. package/dist/detail.mjs +500 -0
  12. package/dist/index.cjs +1 -0
  13. package/dist/index.d.ts +21 -0
  14. package/dist/index.mjs +30 -0
  15. package/dist/list/approval-table.d.ts +14 -0
  16. package/dist/list/diagnostics.d.ts +3 -0
  17. package/dist/list/index.d.ts +3 -0
  18. package/dist/list/my-approvals-page.d.ts +2 -0
  19. package/dist/list/page-contract.d.ts +3 -0
  20. package/dist/list/status-label.d.ts +1 -0
  21. package/dist/list/types.d.ts +71 -0
  22. package/dist/list/ui-components.d.ts +44 -0
  23. package/dist/list/use-approval-page.d.ts +12 -0
  24. package/dist/list/virtual-page-loader.d.ts +26 -0
  25. package/dist/list.cjs +1 -0
  26. package/dist/list.mjs +381 -0
  27. package/dist/react/index.d.ts +7 -0
  28. package/dist/react.cjs +1 -0
  29. package/dist/react.mjs +17 -0
  30. package/dist/styles.css +94 -0
  31. package/dist/styles.css.d.ts +1 -0
  32. package/dist/withdrawal.d.ts +14 -0
  33. package/docs/host-integration.md +217 -0
  34. package/docs/implementation-plan.md +61 -0
  35. package/docs/publishing.md +108 -0
  36. package/examples/antd-components.tsx +38 -0
  37. package/examples/detail-integration.tsx +80 -0
  38. package/examples/host-integration.tsx +36 -0
  39. package/package.ai.json +85 -0
  40. package/package.json +117 -4
  41. package/recipes.json +114 -0
@@ -0,0 +1,85 @@
1
+ {
2
+ "packageName": "@qfei-design/make-app-approval",
3
+ "minimumRuntimeVersion": "0.1.0",
4
+ "published": false,
5
+ "readOrder": [
6
+ "package.ai.json",
7
+ "README.md",
8
+ "PUBLIC_API.md",
9
+ "docs/host-integration.md",
10
+ "recipes.json",
11
+ "capabilities.json",
12
+ "docs/implementation-plan.md",
13
+ "examples/host-integration.tsx",
14
+ "examples/antd-components.tsx",
15
+ "examples/detail-integration.tsx"
16
+ ],
17
+ "runtime": {
18
+ "coreIsDomFree": true,
19
+ "ssrSupported": true,
20
+ "clientOnly": false,
21
+ "entries": {
22
+ "core": "Node / browser",
23
+ "react": "SSR-safe status component",
24
+ "list": "browser mount; CanvasTable dynamically imported",
25
+ "detail": "host container and field renderers; no Canvas dependency"
26
+ }
27
+ },
28
+ "imports": {
29
+ "core": "@qfei-design/make-app-approval",
30
+ "react": "@qfei-design/make-app-approval/react",
31
+ "list": "@qfei-design/make-app-approval/list",
32
+ "detail": "@qfei-design/make-app-approval/detail",
33
+ "styles": "@qfei-design/make-app-approval/styles.css"
34
+ },
35
+ "primaryExports": [
36
+ "getApprovalStatusDisplay",
37
+ "hasApprovalDefinition",
38
+ "isApprovalSystemField",
39
+ "getRecordApprovalWriteRestriction",
40
+ "ApprovalStatus",
41
+ "MyApprovalsPage",
42
+ "ApprovalTaskDetail",
43
+ "getApprovalWithdrawalCommentError"
44
+ ],
45
+ "pendingCapabilities": [
46
+ "approval-history",
47
+ "mobile-approval-pages",
48
+ "live-bpm-integration"
49
+ ],
50
+ "hostResponsibilities": [
51
+ "导航、路由、登录、应用/身份/环境上下文及 scopeKey",
52
+ "必传 components:Input / Select / DatePicker / Button / Tabs,适配组件库事件并继承宿主主题",
53
+ "提供 provider.loadPage,复用 UI -> App Service 请求层并透传 AbortSignal",
54
+ "将最终后端接口转换成 ApprovalListQuery / ApprovalPage;不在前端归类或拼接分页",
55
+ "提供 onOpenApproval;办理成功更新 refreshKey 并刷新关联业务页面",
56
+ "安装 CanvasTable,导入 CSS,提供后端支持的 statusOptions",
57
+ "业务字段控件与普通编辑入口守卫由宿主接线,后端最终授权"
58
+ ],
59
+ "rules": [
60
+ "本项目是独立 npm 包,不是完整 Make App",
61
+ "只使用公开入口,CSS 在宿主入口导入一次",
62
+ "页签归类、筛选和分页由后端完成,不在包内判断本人已办是否结束",
63
+ "普通入口禁编不等同于任务节点操作授权",
64
+ "不保存 Token,不直接调用 Make 后端,不复制宿主私有组件",
65
+ "当前版本尚未发布,先构建打包文件进行宿主验证",
66
+ "MyApprovalsPage 已实现,只从 /list 使用;详情与节点授权动作从 /detail 使用;历史/移动仍未实现",
67
+ "CanvasTable 是可选 peer:列表 UI 必须安装,纯 Service 无需安装",
68
+ "宿主接入前先读 docs/host-integration.md 和可类型检查示例",
69
+ "scopeKey 变化隔离身份和应用;refreshKey 变化刷新数据;只改变回调不自动重查",
70
+ "真实 BPM 接口未联调,demo 中的模拟查询不得复制到生产",
71
+ "列表使用 CanvasTable virtualOptions + data:load 滚动加载,不显示翻页控件",
72
+ "provider 的 page 从 1 开始,Canvas 的 page 从 0 开始,由包转换;pageSize 是每批条数",
73
+ "首批接口返回 total 后启用虚拟模式,按原请求身份原子提交行与总数;失败和取消均释放 pending",
74
+ "滚动请求合并 120ms,最多并发 2 页,缓存约 300 行,宿主无需实现这些机制",
75
+ "基础控件由宿主注入,包固定查询/重置/校验/刷新等逻辑,不使用原生 HTML 控件兜底",
76
+ "适配组件类型保持稳定;事件回传值,日期为 YYYY-MM-DD,清空为空字符串,Tabs 仅渲染一份活动内容",
77
+ "Antd/dayjs 仅用于演示与适配示例,不是库运行时或 peer 依赖;其他组件库实现相同合同",
78
+ "包 CSS 只控制布局和表格/状态区域,不覆盖宿主基础控件样式",
79
+ "任务详情只按 fieldPermission 和 actions 展示/提交;宿主提供完整字段元数据和字段渲染器,禁止普通 IAM 截断审批字段或通过普通 CRUD 办理任务",
80
+ "同意/拒绝/退回统一只校验可编辑且必填字段;validateFields 不得补入只读、隐藏或非必填字段",
81
+ "renderLayout 由宿主摆放 title/actions/content;actions 在关闭 X 左侧,意见在 content 内随正文滚动,footer 兼容保留且始终为空;history 只为可选内容槽,真实流程表接口仍待提供",
82
+ "审批意见退回/拒绝必填,同意选填;SUBMIT 沿用 commentPolicy。必填字段名称后显示红色星号,意见标识随动作切换",
83
+ "CANCELLED 已由后端确认为撤回业务状态;撤回意见 trim 后必填且最多 1024 字。包提供类型、校验与状态,宿主提供入口、意见控件、请求和刷新;不猜测流程发起人或停用后的流程 key。"
84
+ ]
85
+ }
package/package.json CHANGED
@@ -1,6 +1,119 @@
1
1
  {
2
2
  "name": "@qfei-design/make-app-approval",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "Make App 审批公共组件与普通记录编辑限制。",
5
+ "license": "UNLICENSED",
6
+ "type": "module",
7
+ "sideEffects": [
8
+ "**/*.css"
9
+ ],
10
+ "main": "./dist/index.cjs",
11
+ "module": "./dist/index.mjs",
12
+ "types": "./dist/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.mjs",
17
+ "require": "./dist/index.cjs"
18
+ },
19
+ "./react": {
20
+ "types": "./dist/react/index.d.ts",
21
+ "import": "./dist/react.mjs",
22
+ "require": "./dist/react.cjs"
23
+ },
24
+ "./list": {
25
+ "types": "./dist/list/index.d.ts",
26
+ "import": "./dist/list.mjs",
27
+ "require": "./dist/list.cjs"
28
+ },
29
+ "./detail": {
30
+ "types": "./dist/detail/index.d.ts",
31
+ "import": "./dist/detail.mjs",
32
+ "require": "./dist/detail.cjs"
33
+ },
34
+ "./styles.css": {
35
+ "types": "./dist/styles.css.d.ts",
36
+ "default": "./dist/styles.css"
37
+ }
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "README.md",
42
+ "PUBLIC_API.md",
43
+ "package.ai.json",
44
+ "recipes.json",
45
+ "capabilities.json",
46
+ "docs/implementation-plan.md",
47
+ "docs/host-integration.md",
48
+ "docs/publishing.md",
49
+ "examples/host-integration.tsx",
50
+ "examples/antd-components.tsx",
51
+ "examples/detail-integration.tsx"
52
+ ],
53
+ "scripts": {
54
+ "test": "vitest run",
55
+ "typecheck": "tsc -p tsconfig.json --noEmit",
56
+ "build": "vite build && tsc -p tsconfig.build.json && node scripts/copy-styles.mjs && node scripts/smoke-dist.mjs",
57
+ "verify": "pnpm run ci:check && pnpm test && pnpm typecheck && pnpm build",
58
+ "dev": "vite --config vite.demo.config.ts",
59
+ "build:demo": "vite build --config vite.demo.config.ts",
60
+ "ci:init": "qfei-release ci-init",
61
+ "ci:check": "qfei-release ci-check",
62
+ "release:init": "qfei-release release-init",
63
+ "release:check": "qfei-release release-check",
64
+ "publish:alpha": "qfei-release publish --channel alpha",
65
+ "publish:beta": "qfei-release publish --channel beta",
66
+ "publish:latest": "qfei-release publish-latest",
67
+ "sprint:init": "qfei-release sprint-init"
68
+ },
69
+ "qfeiRelease": {
70
+ "masterBranch": "master",
71
+ "ciMode": "mr-verify-manual-prerelease",
72
+ "packageManager": "pnpm",
73
+ "verifyScripts": [
74
+ "test",
75
+ "typecheck",
76
+ "build"
77
+ ],
78
+ "latestPublishTargets": [
79
+ "internal",
80
+ "npmjs"
81
+ ],
82
+ "prereleasePublishTargets": [
83
+ "internal"
84
+ ],
85
+ "npmjs": {
86
+ "registry": "https://registry.npmjs.org/",
87
+ "access": "public",
88
+ "tokenEnv": "NPMJS_TOKEN"
89
+ }
90
+ },
91
+ "peerDependencies": {
92
+ "@qfei-design/canvas-table": "^1.3.1",
93
+ "react": "^18.2.0 || ^19.0.0"
94
+ },
95
+ "peerDependenciesMeta": {
96
+ "@qfei-design/canvas-table": {
97
+ "optional": true
98
+ }
99
+ },
100
+ "devDependencies": {
101
+ "@qfei-design/canvas-table": "1.3.1",
102
+ "@qfei/component-release-tools": "^0.5.2",
103
+ "@types/node": "^22.10.0",
104
+ "@types/react": "^19.0.0",
105
+ "@types/react-dom": "^19.0.0",
106
+ "antd": "6.3.2",
107
+ "dayjs": "1.11.20",
108
+ "jsdom": "29.1.1",
109
+ "react": "^19.0.0",
110
+ "react-dom": "^19.0.0",
111
+ "typescript": "^5.6.0",
112
+ "vite": "^7.0.0",
113
+ "vitest": "^4.1.5"
114
+ },
115
+ "engines": {
116
+ "node": ">=22.12.0"
117
+ },
118
+ "packageManager": "pnpm@10.20.0"
119
+ }
package/recipes.json ADDED
@@ -0,0 +1,114 @@
1
+ {
2
+ "packageName": "@qfei-design/make-app-approval",
3
+ "recipes": [
4
+ {
5
+ "id": "my-approvals-list",
6
+ "summary": "包统一审批列表功能与 CanvasTable,宿主提供基础组件、数据和详情回调",
7
+ "use": [
8
+ "@qfei-design/make-app-approval/list",
9
+ "@qfei-design/make-app-approval/styles.css"
10
+ ],
11
+ "hostProvides": [
12
+ "CanvasTable ^1.3.1",
13
+ "components: ApprovalUIComponents(Input、Select、DatePicker、Button、Tabs)",
14
+ "scopeKey",
15
+ "provider.loadPage(query, { signal }) -> { rows, total }",
16
+ "onOpenApproval(row)",
17
+ "办理成功后变化的 refreshKey",
18
+ "后端支持的 statusOptions"
19
+ ],
20
+ "packageProvides": [
21
+ "页签与筛选的固定功能、布局、CanvasTable 五列及序号/详情入口",
22
+ "虚拟滚动、分批加载、刷新、加载/空/失败重试、结构校验",
23
+ "请求身份、取消、旧响应隔离、合并调度、有限并发和有界缓存",
24
+ "容器/表格主题变量、安全诊断日志、键盘文字入口,不覆盖宿主控件样式"
25
+ ],
26
+ "examplePath": "examples/host-integration.tsx",
27
+ "readNext": [
28
+ "docs/host-integration.md",
29
+ "PUBLIC_API.md",
30
+ "examples/antd-components.tsx"
31
+ ]
32
+ },
33
+ {
34
+ "id": "approval-status",
35
+ "summary": "按平台原始状态码统一展示",
36
+ "use": [
37
+ "@qfei-design/make-app-approval/react",
38
+ "@qfei-design/make-app-approval/styles.css"
39
+ ],
40
+ "hostProvides": [
41
+ "原始业务流程状态;绑定记录状态缺失时显式传 UNKNOWN"
42
+ ]
43
+ },
44
+ {
45
+ "id": "ordinary-record-edit-guard",
46
+ "summary": "普通业务页面统一禁编",
47
+ "use": [
48
+ "@qfei-design/make-app-approval"
49
+ ],
50
+ "hostProvides": [
51
+ "后端记录元数据和有效审批标识",
52
+ "原操作/字段/行级权限",
53
+ "保存前最新状态检查与后端最终写入授权"
54
+ ]
55
+ },
56
+ {
57
+ "id": "packed-app-integration",
58
+ "summary": "独立项目打包后由应用消费",
59
+ "use": [
60
+ "corepack pnpm run verify",
61
+ "corepack pnpm pack"
62
+ ],
63
+ "hostProvides": [
64
+ "App 仓库内 apps/vendor 打包文件",
65
+ "UI 与 Service 使用同一版本;正式发布后换为版本依赖"
66
+ ]
67
+ },
68
+ {
69
+ "id": "approval-task-detail",
70
+ "summary": "按当前任务节点配置展示字段与办理动作",
71
+ "use": [
72
+ "@qfei-design/make-app-approval/detail",
73
+ "@qfei-design/make-app-approval/styles.css"
74
+ ],
75
+ "hostProvides": [
76
+ "scopeKey、processInstanceId、taskId 和宿主详情容器",
77
+ "provider.loadDetail 补齐完整字段元数据并保留任务授权;submitAction 走任务接口",
78
+ "Button、Select、TextArea 和 renderField;validateFields 仅校验包提供的可编辑必填字段",
79
+ "onActionSuccess 刷新列表和业务详情;后端执行最终授权",
80
+ "renderLayout 将 actions 放在关闭 X 左侧,意见已包含于 content,不设固定底栏;history 可选,真实历史仍待接口"
81
+ ],
82
+ "packageProvides": [
83
+ "可见/只读/可编辑字段策略与提交字段白名单",
84
+ "配置动作按钮、审批意见和退回节点校验、确认操作",
85
+ "提交前重读权限、防重复提交、错误恢复、身份与任务隔离",
86
+ "统一三种动作的可编辑必填校验、申请信息布局、正文内滚动意见与标题/动作/正文布局槽",
87
+ "必填字段红色星号;审批意见退回/拒绝必填,同意选填"
88
+ ],
89
+ "examplePath": "examples/detail-integration.tsx"
90
+ },
91
+ {
92
+ "id": "applicant-withdrawal",
93
+ "summary": "申请人撤回由宿主业务详情发起,复用包的意见校验和状态展示",
94
+ "use": [
95
+ "@qfei-design/make-app-approval"
96
+ ],
97
+ "hostProvides": [
98
+ "已确认的发起人身份、业务记录和原流程 bpmKey",
99
+ "宿主意见输入框及确认按钮,提交 trim 后的 comment",
100
+ "UI → Service → Workflow 请求,后端最终校验",
101
+ "成功后刷新详情和列表,不自行清除异步同步中的锁,不自动重发"
102
+ ],
103
+ "packageProvides": [
104
+ "CANCELLED → 已撤回",
105
+ "getApprovalWithdrawalCommentError 检查 trim 后必填和 1024 字上限",
106
+ "ApprovalWithdrawalInput / ApprovalWithdrawalResult 类型"
107
+ ],
108
+ "readNext": [
109
+ "PUBLIC_API.md",
110
+ "docs/host-integration.md"
111
+ ]
112
+ }
113
+ ]
114
+ }