# @alma-harness/postgres-execution 中文文档

规范地址：https://npmcn.com/package/%40alma-harness/postgres-execution/

版本：0\.41\.0
npm 元数据更新时间：2026-11-04T12:58:17.257Z
中文译文更新时间：2026-11-06T22:24:55.700Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40alma-harness/postgres-execution
原文对照：https://npmcn.com/package/%40alma-harness/postgres-execution/?lang=original
项目主页：https://github.com/FabioFernandesCarneiro/alma#readme
源码仓库：https://github.com/FabioFernandesCarneiro/alma

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：295 kB，6 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22
- 运行依赖：0 个
- peer 依赖：pg \>=8，@alma-harness/core ^0\.41\.0，@alma-harness/postgres ^0\.41\.0，@alma-harness/execution ^0\.41\.0
- 首次发布：2026-09-08T21:18:45.980Z
- 最新版本发布：2026-11-04T12:58:16.995Z
- 近 30 天下载量：2259（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：47（近 12 个月 47 个）

## 中文简介

PostgreSQL运营线路为阿尔马.

## 安装

```sh
npm install @alma-harness/postgres-execution
```

也可以使用：`pnpm add @alma-harness/postgres-execution`、`yarn add @alma-harness/postgres-execution`、`bun add @alma-harness/postgres-execution`

## README

# @alma-harness/postgres-excution (英语)

PostgreSQL操作线程(指:持久-操作线程). 这个添加剂 软件包取决于匹配 `core`, (中文(简体) ), `execution` 财务报告和审定财务报表 `postgres` 释放; 它 重用共享范围交易,角色和语句超时帮助.

`migrateOperationTreeStore(pool)` 安装当前执行形状帮助器,并 `alma_operation_roots`编号 :`alma_operation_calls`。 。 。 . `PostgresOperationTreeStore(pool, ScopedStoreOptions?)` 执行中性 `OperationTreeStore` 从被执行. 默认交易 SET LOCAL ROLE alma 应用并绑定 org/ uid 带有30s 超时. 一个明确的无效角色保留了现有的主机选择退出角色切换. 移徙需要与邮资相同的特权移徙联系;运行时间 连接通过 GrantRole 使用有限的登录成员. 迁移升级a 数据库最后由前两个小版本中的一个迁移,并重运行 它们不会改变什么(规格:升级-窗口).

索赔根一次;只有第一个索赔人得到不透明的栅栏。 储备稳定 主/正/去/去/取出分档后再发出. 根/子范围,会话, 政策、上限、敏感性和最后期限必须商定。 父母联系在 树根。 SQL 锁定序列化正则; 触发验证根录入和更新 从解剖学上来说,会员人数是多少。 损失的确认按范围解决 或平等保留重放, 从来没有一个新的根执行权限.

INSERT 独有性失败允许在回滚和连接后读取 释放。 只有一个完全相同的正常化的具有约束力的回报 `existing`,没有 栅栏;关闭或过期的赢家没有重新获得权力。 读取失败, 其他 SQL 错误和COMMIT 不确定性仍然是错误。 映射出的错误保留 原始 PostgreSQL 图像 `cause` 非数字的可信诊断; 不序列化 导致客户端输出或常规日志( spec: option- tree- claim- read back) .

过期的根无法保留, 甚至在之前 `reconcileExpired(scope)` 标记为 调和。 被捆绑的扫荡会跳过被锁起的根. `close` 停止录取; 它并不意味着会计核算或完成交付. `listCalls` 原文为:, 默认50/max100,每个根最多有512个成员. 读书人永远不回篱笆 符号 。 元数据是免内容并保留;不存在删除或收购API.

统治下的谈话和继位者在退位前就对这些保留具有约束力. 线性本身不产生可计费成本行.

**范围围栏** (规格:范围-围栏). 树、会话和批次迁移增加 邮包的栅栏触发器 `alma_operation_roots`, (中文(简体) ), `alma_operation_admissions` 财务报告和审定财务报表 `alma_batch_submissions`新的栅栏式瞄准镜 根、 接受或提交被拒绝 `ScopeFencedError`,由任意 编剧. 围栏还授权释放不确定的承认其 范围 : `releaseFenced(scope, { limit })` 作为应用程序发布 作用,以栅栏的行动id作为它们的解析度(谱系:范围-时代). A 类 没有栅栏的瞄准镜立即释放 `releaseFailed(scope, rootKey)`, (中文(简体) ), 作为任何角色 `failedReleaseId(rootKey)` (规格:倒转-释放) 运算符 `resolve`;或者,一旦不确定的录取期限为15个 过几分钟数据库钟,任何人通过 `releaseExpired(scope, { limit })` 与从它的密钥中衍生的id( spec: 过期- turn- release). 这个 触发重算从密钥中导出 id;和 a 记录事件录入: `releaseExpiredEvents(scope, sessionId)` 释放, 作为应用角色,在 `conversation-event-v1:` 名称空间 在数据库时钟上超过最后期限, 没有操作根, 标记 一个活跃的不确定的先( spec: 栅栏- event- appended). 入院的触发器检查了所有情况 并检查了 `alma_operation_roots` 在事件密钥下拒绝任何根, 因此无法写入 以这种方式释放出一个转弯( 规格: 对话- 事件) 。 重运行 `migrateOperationSessionStore`,则 再次验证目录 .

## 基础财务会计

`migrateOperationAccountingStore` 构成行系和受管成本迁移. `PostgresOperationAccountingStore` 以登记方式读取实际受管制收据 调用身份并只写 `alma_operation_financial_calls` 财务报告和审定财务报表 `alma_operation_warnings`根锁将会计科目和总额序列化; SQL 核实金融协会和准确的决定元数据,并插入 在解剖学上警告证据。 源成本行/计数从未增加.

源结算和汇总是单独的交易. 损失合计 确认重放存储的收件; 缺失的集合可以修复 包括关闭/期满后。 保留的范围 源控行; 普通成本保留已经保留了这些行. 简要清点不能证明完成或外部交付。 命令外根数 原始会话/天金额; 根警告是不可改变的证据, 不是通知发送框(规格:root-financial-recepts).

`migrateOperationSessionStore(pool)` 安装可扩展的会话锁行和不可移动 入会. `PostgresOperationSessionStore` (a) 将索赔进行连锁处理; a 部分独特指数只允许每个范围会议有一个未完成的录取. 最后期限标志着不确定性,但不允许接管。 完成需要原始内容 过期前的栅栏;其回放保持稳定。 运算符解析器有单独的 收件后无法作为所有者完成重放 .

正常操作假设 `alma_app`; 明确 `resolve` 假设 配置 `operatorRole` (默认) `alma_retention`需要加入 FORCE RLS仍在活动. 仅将成员资格授予受信任的和解者 主持人。 迁移接受匹配 `role`编号 :`operatorRole`。不要引用决议 从跑者、扫荡者或超时处理器;跑者自己释放的是 `releaseFailed`,在应用角色下。 在创建根前承认; 崩溃 在这些交易之间,会话一直持续到到期发行。 部署 将读者和角色在收养前相匹配; 录取本身不包括自动保留。 参见受管会-会议-接纳谱.

摘要可能没有父目录(序文摘要). 拓宽的母公司FK和 低水平检查仍然存在.

通过录入输入和 无效的根 `request` 栏。 新的 SQL 检查验证已关闭的受限元数据; root UPDATE 触发器保护原始绑定字段,同时允许现有 状况/计算变化。 无描述符的根仍然有效 。 没有捏造 修改,内容行或收费被创建( spec: conversation-root-binding).

## 批量提交文件的所有权

`migrateBatchSubmissionStore` 添加 `alma_batch_submissions` 财务报告和审定财务报表 `alma_batch_items`· ; `PostgresBatchSubmissionStore` 执行执行包的中性合同. 父插入通过 SQL 触发器在 同一个交易。 行动范围/呼叫/定居的独特性和不可改变的JSON 约束防止重新参与。 FORCE RLS 覆盖 org 和 uid; 使用普通 有限登录 alma app 成员和语句超时设置 。 运行时间 无法删除赠款或所有权重设 API.

SQL 守护者拒绝过期的新发送、倒转和接受 a 先前的发送标记。 时钟在行锁后被采样. 迟到的手柄留下 (b) 接收不是批量完成、会计或 允许再次提交。 范围从不暴露原始的围栏标志. SQL的准入与现有的有栅栏的商店一样,仍然是可信赖的东道主能力.

`not_submitted` (规格:批次未提交) `prepared`永远 带有发送标记,接受或手柄,没有UPDATE离开. 这个 已版本 `alma_batch_transition_v2()` 拥有触发器。 没有栅栏,只允许两个过渡,只有储存的最后期限 通过 `clock_timestamp()` 行锁后 : `prepared` 改为 `not_submitted` 财务报告和审定财务报表 `dispatching` 改为 `reconciliation_required`。 。 。 . `reconcileExpired` 跳过另一行 交易持有.

一项索赔INSERT独有性失败在交易清理后被读回一次, 在新的范围交易中。 只有一个完全一样的 普通的表 返回时 `existing`;没有取回围栏,而INSERT再也没有再试. 缺少或更改的绑定仍然有冲突;不相关的错误和丢失的COMMIT 识别无法启用此路径( scpect- claim- read back) . Mapped 批量冲突/状态错误保留了无法假定的 SQL 错误 `cause`,包括PostgreSQL提供的任何约束/细节. 这些诊断 仅供信任的检查使用:它们可能包含范围识别符。 别 将原因序列化为客户端响应或自动登录全部错误.

在构建适配器前安装添加剂迁移. 重运行 目前的移徙保留人口记录。 投入 正常化封顶显示在 2 MiB; SQL 额外将 JSONB 文本限制在 4 MiB 因为它的数值/白空间编码不同。 所有递归元数据形状 关闭;内容必须使用单独的结果存储。 没有自动保留, 包括供应商的准入、收集、结算或例行整合.

`migrateBatchUsageStore` 组成批次和管理住区迁移和 添加 `alma_batch_usage`。 。 。 . `PostgresBatchUsageStore` 使用正常范围限制 登录和超时选项。 SQL 将观测结果绑入接受的手柄/成员, 核查封闭的证据,并只允许与现有 匹配管理成本。 FK保护观测和源 收到保留;应用不会收到删除赠款. 读者验证已保存完毕 定价和收款的一致性,在腐败元数据上失败.

接收领养先将观察锁上,然后将其合并的收据读入 新的 SQL 声明: 必须在相互竞争的收养之前进行发言 不将新关联与旧关联数据相混合 。 丢失附件、结算和 收养确认重新显示同样的身份。 适配器不会增加 支付或援引提供者。 在新阅读器前安装添加剂迁移; 人口密集的反复升级保存记录。 参见执行的批量使用日记 合同; 内容、有效电子格式、收集完成和交付仍然分开. SQL协会警卫也计算出被冻结的批发价格,包括最高价格 适用的快带、缓存回落/一小时费率和供应商搜索费. 对等测试将其金额与核心定价进行比较;匹配的身份/使用收据 金额不同,不能使观察无法读取或解决.

`migrateBatchAccountingStore` 添加 `alma_batch_financial_items` 财务报告和审定财务报表 `alma_batch_warnings` 在批量使用迁移之前. `PostgresBatchAccountingStore` 使用相同的有限范围连接选项. 批次行锁将会计科目和包括的总数序列化 警告插入以解剖方式进行。 独有的范围项目密钥防止了两种观察 从贡献两次。 SQL 检查通过的意见、来源量、, 确定明确的立场和确切的决定/警告。 应用补助金为SELECT/INSERT 仅;范围为FKs的保护源观测. 支持流行升级回放. 适配器从不写货币计数器或成本行,也不批准执行 或频道传输权限.

依赖于 Alma 对象的 SQL 验证器和触发器将其引用器路径钉入 `pg_catalog, installation_schema, pg_temp`重新运行 当前在备份前的迁移;旧的启动 SQL 可以替换函数设置 . 这保留了pg restore期间的CHECK评价,并可以防止呼叫者路径阴影.

嵌入式工具选择 `execution.controls.toolChoice` 仍然是每个不可更改的呼叫或批发项目的一部分。 运行两个 `migrateOperationTreeStore` 财务报告和审定财务报表 `migrateBatchSubmissionStore` 在撰写选择之前。 重新运行两种迁移,无论是哪种顺序,都保留现有记录和限制身份. 更改的选择会与原调用槽或批量显示相冲突,不授权再发送.

## 会话标签

`migrateSessionLabelStore(pool)` 添加 `alma_session_labels`· ; `PostgresSessionLabelStore` 执行核心 `SessionLabelStore` 标准范围 选项(规格:会话-标签)。 CHECK 验证标签形状和 可用/已过期状态; 触发会冻结行身份和创建, 只允许 `available` → `erased` 并制作墓碑 空出一行的线 会话标识是范围封条 . `alma_app` 获得SELECT/INSERT/UPDATE,永不减值. 每篇作文都要用一副全镜咨询锁,所以放出并去除序列. 插入触发器采用相同的锁, 拒绝密封范围内的标签, 并拒绝外跑 `read committed`因为一个更古老的快照 将错过一个密封 等待.

## 常见问题

### @alma-harness/postgres-execution 是什么？

PostgreSQL运营线路为阿尔马\.

### 如何安装 @alma-harness/postgres-execution？

在项目目录运行 npm install @alma-harness/postgres-execution，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：pg（\>=8）、@alma-harness/core（^0\.41\.0）、@alma-harness/postgres（^0\.41\.0）、@alma-harness/execution（^0\.41\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @alma-harness/postgres-execution 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @alma-harness/postgres-execution 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @alma-harness/postgres-execution 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @alma-harness/postgres-execution 可以商用吗？

@alma-harness/postgres-execution 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @alma-harness/postgres-execution 的下载量有多少？

根据 npm 官方下载统计，@alma-harness/postgres-execution 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,259 次，日均约 75 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @alma-harness/postgres-execution 还在维护吗？

最新版本 0\.41\.0 发布于 2026/11/04（3 天前）；至今共发布 47 个版本，其中过去 12 个月发布了 47 个；首次发布于 2026/09/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

