make-app-actions
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesemake-app-actions
make-app-actions
Treat record operations, permission behavior, row-level precheck, single
edit/delete, and desktop/tablet selection and batch edit as one integrated Make
record-list capability. Desktop/tablet writable lists use CanvasTable selection
and the standard action bar. Phone lists use cards and reuse only the headless
single-record action model; the standard phone experience has no record
selection or batch operations.
This Skill owns the consumer-side action workflow. The package owns reusable
selection/action models and standard UI; the host owns principal state, Service
requests, query context, field controls, business feedback, and list refresh.
将记录操作、权限行为、行级预检、单条编辑/删除以及桌面端/平板端的选择与批量编辑视为一项集成的Make记录列表能力。桌面端/平板端可写列表使用CanvasTable选择功能和标准操作栏。手机端列表使用卡片,仅复用headless单记录操作模型;标准手机端体验不包含记录选择或批量操作。
本Skill负责消费端操作工作流。本包拥有可复用的选择/操作模型与标准UI;宿主方负责主体状态、Service请求、查询上下文、字段控件、业务反馈和列表刷新。
Workflow
工作流
- Inspect the host presentation mode, package manager, Node/React/UI-library compatibility, installed CanvasTable version and docs, normalized runtime schema, principal permission model, records query state, Service routes, edit/detail surfaces, and related tests.
- Install ; desktop/tablet CanvasTable integration additionally requires
@qfei-design/make-app-actions@^0.3.1. A phone-only headless action task does not add a table dependency. Read each relevant installed@qfei-design/canvas-table@^1.3.1first and verify its resolved version satisfies the required range; then readpackage.json, parsepackage.ai.json, read every declared file in order, and use public exports only. Readpackage.ai.json.readOrderbefore changing package integration.references/package-integration.md - For desktop/tablet, use the published CanvasTable 1.3.1 contract for the public selection snapshot,
,
clearSelection, andsetRowColorsAPIs required by the package adapter. Its public docs must also guarantee that business row colors remain visible above selection and hover backgrounds. If the cleanup API or precedence guarantee is missing, report a CanvasTable upgrade blocker. UseclearRowColorsfor CanvasTable mechanics; do not deep-import table internals or patch the rendering order with host CSS.canvas-table-integration - On desktop/tablet, enable multiple selection and normalize every public Canvas selection event
with . Preserve
resolveCanvasSelectedRecordSnapshot; never infer select-all from selected and total counts. Treat CanvasTable instance replacement and same-queryselectionIntentchanges with the lifecycle intotalCount; never replay an action-owned selection into a replacement instance. Limit one supported Shift range gesture to at most 200 records through the installed CanvasTable public contract; if that contract cannot enforce the limit, report a capability blocker instead of emulating private selection state in the host. CanvasTable 1.3.1references/selection-and-operation-snapshot.mddoes not support Shift range selection; do not emulate Shift ranges in the host unless the installed grouped-table public contract explicitly adds that capability.GroupTableComponent - Build single edit, single delete, and desktop/tablet multiple batch-edit actions from the
current cached principal snapshot. Keep ,
data.record.update, anddata.record.deleteindependent.data.record.bulkUpdate - On desktop/tablet, validate the resolved selection and package batch limit when an action is clicked. On phone, resolve only the clicked/current record; no selection or batch limit applies. Perform the applicable package local row validation, then freeze one immutable operation snapshot before any asynchronous precheck starts.
- Before opening single edit or batch-edit UI, send that complete frozen target
to one host Service precheck. Do not call Make from UI and do not split a
denied multi-record request into diagnostic requests. For explicit selection,
map authoritative from the documented HTTP 200 business denial to exact whole-row error-red feedback. Select-all denial has no row IDs and remains toast-only.
noPermissionRecordIds - For batch edit, filter fields by runtime read/update permissions and package
capability. Ant Design hosts render package with host field controls. Other React hosts render package
AntdRecordBatchEditModal, inject their design-system shell/select/mode controls, and provide Make field controls throughRecordBatchEditModal; never mix in AntD or copy the modal. The host must use its installed design system's public overlay API to keep injected popups outside clipping ancestors and above the owning dialog while preserving focus, Escape, and outside-click behavior. Reuse the frozen operation snapshot on submit.renderValueControl - Send one host Service batch request. Service sends one Make
request; do not loop single-record updates and do not use
/data/v1/fieldas the Make default path.runRecordBatchMutation - Invalidate stale prechecks and submissions on selection, object, access, or query-context changes. Clear selection when keyword, filter, sort, group, or object context changes. A successful applied-query handoff clears selection; draft edits and failed saves/queries do not redefine the action target.
- For phone cards and detail task pages, read : use the package root headless core for the clicked/current record, never mount CanvasTable or the selection action bar, and do not expose record multi-select or batch actions. Card actions and detail actions are separate surfaces over the same one-record lifecycle; neither replaces the other.
references/mobile-card-actions.md - On desktop/tablet, remove edit/delete commands from detail surfaces when these actions are owned by the selection bar. Keep detail open as a read/display action.
- Add the tests in before reporting the workflow complete.
references/testing-and-pitfalls.md
- 检查宿主呈现模式、包管理器、Node/React/UI库兼容性、已安装的CanvasTable版本与文档、标准化的运行时schema、主体权限模型、记录查询状态、Service路由、编辑/详情界面以及相关测试。
- 安装;桌面端/平板端的CanvasTable集成还需要
@qfei-design/make-app-actions@^0.3.1。仅针对手机端的headless操作任务无需添加表格依赖。请先读取每个相关的已安装@qfei-design/canvas-table@^1.3.1,验证其解析后的版本满足要求的版本范围;然后读取package.json,解析package.ai.json,按顺序读取所有声明的文件,且仅使用公共导出。修改包集成逻辑前请先阅读package.ai.json.readOrder。references/package-integration.md - 对于桌面端/平板端,使用已发布的CanvasTable 1.3.1契约来实现包适配器所需的公共选择快照、、
clearSelection和setRowColorsAPI。其公共文档还必须保证业务行颜色在选择背景和悬停背景之上仍可见。如果缺少清理API或优先级保证,请上报CanvasTable升级阻塞问题。使用clearRowColors处理CanvasTable相关机制;不要深度导入表格内部实现,也不要通过宿主CSS修补渲染顺序。canvas-table-integration - 在桌面端/平板端,启用多选功能,并通过标准化所有公共Canvas选择事件。保留
resolveCanvasSelectedRecordSnapshot;绝不要通过选中数量和总数量推断全选状态。按照selectionIntent中的生命周期处理CanvasTable实例替换和同查询下的references/selection-and-operation-snapshot.md变化;绝不要将操作所属的选择重放至替换后的实例。通过已安装的CanvasTable公共契约,将支持的单次Shift范围选择手势限制为最多200条记录;如果该契约无法强制执行此限制,请上报能力阻塞问题,而不要在宿主中模拟私有选择状态。CanvasTable 1.3.1的totalCount不支持Shift范围选择;除非已安装的分组表格公共契约明确添加了该能力,否则不要在宿主中模拟Shift范围选择。GroupTableComponent - 基于当前缓存的主体快照构建单条编辑、单条删除以及桌面端/平板端的多条批量编辑操作。保持、
data.record.update和data.record.delete相互独立。data.record.bulkUpdate - 在桌面端/平板端,点击操作时验证解析后的选择和包的批量限制。在手机端,仅解析点击的/当前的记录;不涉及选择或批量限制。执行相应的包本地行验证,然后在任何异步预检开始前冻结一个不可变的操作快照。
- 在打开单条编辑或批量编辑UI之前,将完整的冻结目标发送至宿主Service预检。不要从UI调用Make,也不要将被拒绝的多记录请求拆分为诊断请求。对于显式选择,将文档中定义的HTTP 200业务拒绝返回的权威映射为准确的整行错误红反馈。全选拒绝没有行ID,仅显示toast提示。
noPermissionRecordIds - 对于批量编辑,根据运行时读取/更新权限和包能力过滤字段。使用Ant Design的宿主渲染包的,并传入宿主字段控件。其他React宿主渲染包的
AntdRecordBatchEditModal,注入其设计系统的外壳/选择器/模式控件,并通过RecordBatchEditModal提供Make字段控件;绝不要混入AntD或复制模态框代码。宿主必须使用其已安装的设计系统的公共弹层API,确保注入的弹出层位于裁剪祖先元素之外,且在所属对话框之上,同时保留焦点、Escape键和点击外部关闭的行为。提交时复用冻结的操作快照。renderValueControl - 发送一次宿主Service批量请求。Service发送一次Make 请求;不要循环执行单记录更新,也不要将
/data/v1/field用作Make默认路径。runRecordBatchMutation - 当选择、对象、权限或查询上下文发生变化时,使过期的预检和提交失效。当关键词、过滤、排序、分组或对象上下文变化时,清除选择。成功的查询应用切换会清除选择;草稿编辑和失败的保存/查询不会重新定义操作目标。
- 对于手机卡片和详情任务页,请阅读:使用包根目录的headless核心处理点击的/当前的记录,绝不要挂载CanvasTable或选择操作栏,也不要暴露记录多选或批量操作。卡片操作和详情操作是同一单记录生命周期下的独立界面,二者互不替代。
references/mobile-card-actions.md - 在桌面端/平板端,当编辑/删除操作由选择栏负责时,从详情界面移除这些命令。将详情页保留为读取/展示操作。
- 在上报工作流完成前,请添加中列出的测试。
references/testing-and-pitfalls.md
Topic reference map
主题参考对照表
| Task / topic | Read |
|---|---|
| Package installation, UI-library compatibility, public imports, host/package boundary | |
| Independent operation permissions, cached principal, action visibility, denial UI | |
| Canvas selection intent, 200 limits, query identity, immutable operation snapshot | |
| UI-Service precheck and bulk routes, Make payloads, errors, call-count invariants | |
| Single action behavior, batch modal fields, submit lifecycle, stale selection safety | |
| Phone card and detail single edit/delete, no record selection or batch operations | |
| TDD matrix, integration checks, races, readiness blockers | |
| Canvas selection events, clearSelection, row colors, Shift selection | Use |
| Principal IAM endpoint, permission resource matching, field access | Use |
| Service layering, adapters, validation, logs, request context | Use |
| Toolbar/table placement, Drawer layout, field controls | Use |
| Global filter expression and applied filter state | Use |
| Applied sort state | Use |
Group path and | Use |
| 任务/主题 | 阅读文档 |
|---|---|
| 包安装、UI库兼容性、公共导出、宿主/包边界 | |
| 独立操作权限、缓存主体、操作可见性、拒绝UI | |
| Canvas选择意图、200条限制、查询标识、不可变操作快照 | |
| UI-Service预检与批量路由、Make payload、错误、调用次数不变量 | |
| 单操作行为、批量模态框字段、提交生命周期、过期选择安全 | |
| 手机卡片与详情单条编辑/删除、无记录选择或批量操作 | |
| TDD矩阵、集成检查、竞态、就绪阻塞问题 | |
| Canvas选择事件、clearSelection、行颜色、Shift选择 | 使用 |
| 主体IAM端点、权限资源匹配、字段访问 | 使用 |
| Service分层、适配器、验证、日志、请求上下文 | 使用 |
| 工具栏/表格布局、Drawer布局、字段控件 | 使用 |
| 全局过滤表达式和已应用过滤状态 | 使用 |
| 已应用排序状态 | 使用 |
分组路径与 | 使用 |
Non-negotiable invariants
不可违背的约束规则
- The installed is the authoritative package-version source. For this Skill, resolve
package.jsonbefore reading@qfei-design/make-app-actions@^0.3.1; its publishedpackage.ai.jsonmanifest has stale0.3.1version and install fields that must not downgrade the integration.0.3.0 - On desktop/tablet, resolve for the published row-color precedence and
@qfei-design/canvas-table@^1.3.1contract. Do not acceptclearRowColorsfor a writable CanvasTable record-action list and do not emulate the missing behavior in host code. A phone-only headless single-record action integration does not require CanvasTable.1.3.0 - Desktop/tablet Make CanvasTable record lists get selectable rows and the standard action bar by default. A strictly read-only list may opt out explicitly only when read-only is an object/product capability, not merely the current user's lack of write permissions; a user with no actions still gets scheme two.
- On desktop/tablet, exactly one selected record shows edit/delete according to their independent
permissions. Two or more selected records show batch edit according only to
and available batch-editable fields.
data.record.bulkUpdate - On desktop/tablet, when no selected action is available, keep scheme two: show the selected count,
lock icon, , and close control.
暂无可用的操作 - Phone record lists use cards, not CanvasTable. They do not expose record multi-select, select-all, Shift selection, the selection action bar, batch edit, or any other batch operation. This does not change multi-select form fields.
- A phone card resolves only the clicked record through the package headless core. It may show independent single edit/delete actions, but must not derive its target from an old desktop selection snapshot. Unmounting the desktop CanvasTable clears action selection; returning starts the new instance empty.
- Use the current cached principal permissions for action clicks and submissions. Do not refetch principal per operation.
- Treat package local row checks as immediate feedback, not final authorization. The row precheck and final write endpoint remain authoritative.
- Freeze target mode, IDs or exclusions, selected count, object/entity identity,
, and
filterbefore precheck. Precheck and mutation must use the same snapshot. Do not invent an undocumentedgroupFilter/opaque token or replace the target with one; only use such a token when the installed host Service contract explicitly defines and verifies it.snapshotToken - Keep and
filterseparate and unchanged. They are accepted only for select-all targets and are combined by backend semantics, not by UI or Service string rewriting.groupFilter - Explicit selection and exclusion lists each allow at most 200 IDs. An explicit selection over 200 is blocked without opening the modal and keeps selection so the user can deselect rows.
- One supported Shift range-selection gesture selects at most 200 records. Enforce this through the installed CanvasTable public contract; do not add host-owned keyboard/range-selection internals when that capability is unavailable.
- An explicit precheck HTTP 200 business denial with authoritative
blocks the action, shows the canonical denial toast, and marks only those exact rows with the host error-red row style. That semantic color must remain visible while a denied row is selected or hovered. Clear the action-owned command color through
noPermissionRecordIds; do not useclearRowColorsas cleanup. A select-all 403 returns no row IDs, shows the same toast, and never invents rows to highlight.setRowColors(rowKeys, undefined) - One action produces at most one Make permission-precheck request and one final Make mutation request. Never use per-ID diagnostics or per-record update loops.
- Selection/query races must not open stale UI, apply stale feedback, clear a newer selection, or submit a target different from the prechecked target.
- CanvasTable instance replacement clears action-owned selection exactly once.
Same-query total growth re-normalizes the current public snapshot; total shrink
clears through the installed public contract.
clearSelection() - Use runtime schema and field permissions for batch fields. Never downgrade an unsupported complex field to a plain input.
- The shared batch modal does not include automation-flow controls.
- Do not introduce Ant Design into an Arco, shadcn/ui, or other non-AntD host.
Use the package generic with host component injection; the host must not copy package modal state or validation behavior.
RecordBatchEditModal
- 已安装的是包版本的权威来源。对于本Skill,在读取
package.json之前先解析package.ai.json;其发布的@qfei-design/make-app-actions@^0.3.1清单中包含过时的0.3.1版本和安装字段,不得因此降级集成版本。0.3.0 - 在桌面端/平板端,解析以获取已发布的行颜色优先级和
@qfei-design/canvas-table@^1.3.1契约。对于可写的CanvasTable记录操作列表,不得接受clearRowColors版本,也不要在宿主代码中模拟缺失的行为。仅针对手机端的headless单记录操作集成不需要CanvasTable。1.3.0 - 桌面端/平板端的Make CanvasTable记录列表默认提供可选行和标准操作栏。严格只读的列表仅当只读是对象/产品能力时才可显式退出,而不仅仅是当前用户缺少写权限;没有操作权限的用户仍会使用方案二。
- 在桌面端/平板端,仅选中一条记录时,根据各自的独立权限显示编辑/删除按钮。选中两条或更多记录时,仅根据和可用的批量可编辑字段显示批量编辑。
data.record.bulkUpdate - 在桌面端/平板端,当没有可用的选中操作时,保持方案二:显示选中数量、锁定图标、和关闭控件。
暂无可用的操作 - 手机端记录列表使用卡片,而非CanvasTable。它们不暴露记录多选、全选、Shift选择、选择操作栏、批量编辑或任何其他批量操作。这不会影响多选表单字段。
- 手机卡片通过包的headless核心仅解析点击的记录。它可以显示独立的单条编辑/删除操作,但不得从旧的桌面端选择快照派生其目标。卸载桌面端CanvasTable会清除操作选择;返回时新实例初始化为空。
- 操作点击和提交时使用当前缓存的主体权限。不要每次操作都重新获取主体信息。
- 将包本地行检查视为即时反馈,而非最终授权。行预检和最终写入端点仍为权威来源。
- 在预检前冻结目标模式、ID或排除列表、选中数量、对象/实体标识、和
filter。预检和变更必须使用同一份快照。不要虚构未文档化的groupFilter/不透明令牌,也不要用其替换目标;仅当已安装的宿主Service契约明确定义并验证该令牌时才可使用。snapshotToken - 保持和
filter分离且不变。它们仅适用于全选目标,且由后端语义组合,而非通过UI或Service字符串重写组合。groupFilter - 显式选择和排除列表各自最多允许200个ID。超过200条的显式选择会在打开模态框前被阻止,并保留选择状态以便用户取消选择行。
- 支持的单次Shift范围选择手势最多选择200条记录。通过已安装的CanvasTable公共契约强制执行此限制;当该能力不可用时,不要添加宿主自有键盘/范围选择内部逻辑。
- 带有权威的显式预检HTTP 200业务拒绝会阻止操作,显示标准拒绝toast,并仅使用宿主错误红行样式标记这些确切的行。当被拒绝的行被选中或悬停时,该语义颜色必须保持可见。通过
noPermissionRecordIds清除操作所属的命令颜色;不要使用clearRowColors作为清理方式。全选403错误不返回行ID,显示相同的toast,且绝不要虚构要高亮的行。setRowColors(rowKeys, undefined) - 一个操作最多产生一次Make权限预检请求和一次最终Make变更请求。绝不要使用按ID诊断或按记录更新循环。
- 选择/查询竞态不得打开过期UI、应用过期反馈、清除更新的选择,或提交与预检目标不同的目标。
- CanvasTable实例替换仅清除一次操作所属的选择。同查询下的总数增长会重新标准化当前公共快照;总数减少通过已安装的公共契约清除。
clearSelection() - 批量字段使用运行时schema和字段权限。绝不要将不支持的复杂字段降级为普通输入框。
- 共享批量模态框不包含自动化流程控件。
- 不要在Arco、shadcn/ui或其他非AntD宿主中引入Ant Design。使用包的通用并注入宿主组件;宿主不得复制包模态框的状态或验证行为。
RecordBatchEditModal
Handoffs
职责边界
- With : it owns public CanvasTable selection/highlight mechanics; this Skill owns how those snapshots drive action state and writes.
canvas-table-integration - With : it owns principal loading and permission matching; this Skill consumes the cached result and owns independent action semantics.
make-app-permission - With : this Skill defines action request contracts and timing; Service owns strict parsers, Make adapters, login-context forwarding, logs, and tests.
make-app-service - With : it owns the surrounding list, chosen component library, Drawer, task-route and card-action visuals; this Skill owns package action state, phone single-record action lifecycle, the desktop/tablet standard bottom action-bar placement, supported modal adapters, and action lifecycle.
makeui - With filter/sort/group Skills: consume their latest successfully applied query
context. Any successfully applied query change clears selection and invalidates
pending action work; draft edits and failed saves/queries preserve the current
selection. composition stays with
groupFilter.make-app-group
- 与的协作:它负责公共CanvasTable选择/高亮机制;本Skill负责这些快照如何驱动操作状态和写入。
canvas-table-integration - 与的协作:它负责主体加载和权限匹配;本Skill消费缓存结果,并负责独立的操作语义。
make-app-permission - 与的协作:本Skill定义操作请求契约和时机;Service负责严格的解析器、Make适配器、登录上下文转发、日志和测试。
make-app-service - 与的协作:它负责周边列表、所选组件库、Drawer、任务路由和卡片操作视觉效果;本Skill负责包操作状态、手机端单记录操作生命周期、桌面端/平板端标准底部操作栏位置、支持的模态框适配器以及操作生命周期。
makeui - 与过滤/排序/分组Skill的协作:消费其最新的成功应用的查询上下文。任何成功应用的查询变更都会清除选择并使待处理的操作工作失效;草稿编辑和失败的保存/查询会保留当前选择。组合由
groupFilter负责。make-app-group