# @faiber/faiber-social 中文文档

规范地址：https://npmcn.com/package/%40faiber/faiber-social/

版本：2\.8\.0
npm 元数据更新时间：2026-11-14T09:45:07.824Z
中文译文更新时间：2026-11-14T08:59:26.774Z
软件包许可：未声明

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

原始 npm 页面：https://www.npmjs.com/package/%40faiber/faiber-social
原文对照：https://npmcn.com/package/%40faiber/faiber-social/?lang=original

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

- 包体积（解压后）：579 kB，40 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-07-22T17:09:33.211Z
- 最新版本发布：2026-11-14T09:45:07.635Z
- 近 30 天下载量：3891（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：61（近 12 个月 61 个）

## 中文简介

社会分类、反馈、文章、线性评论、类似评论、反应、报告、温和度以及遗留模块社会数据的迁移.

## 安装

```sh
npm install @faiber/faiber-social
```

也可以使用：`pnpm add @faiber/faiber-social`、`yarn add @faiber/faiber-social`、`bun add @faiber/faiber-social`

## README

# @faiber/faiber-社会

社会分类、反馈、文章、线性评论、类似评论、反应、报告、温和度以及遗留模块社会数据的迁移.

## 安装

```bash
npm install @faiber/faiber-social
```

## 配置

```ts
import { FaiberClient, MemoryTokenProvider } from "@faiber/sdk-core";
import { SocialApi } from "@faiber/faiber-social";

const tokens = new MemoryTokenProvider();
const client = new FaiberClient("social", {
  domains: { social: process.env.FAIBER_SOCIAL_URL! },
  tokenProvider: tokens,
  axios: { timeout: 15_000, withCredentials: true },
});
const api = new SocialApi(client);

const categories = await api.categories();
const feed = await api.feed({ category_id: categories.data.data[0]?.id, page: 1, limit: 20 });
```

## 完全能力

这个软件包暴露了112个从社会互动服务中搭载的操作. 通用工作流程有简洁的方法 `api`;每个已注册后端路由在 `api.operations`。生成的操作输入、查询、响应、路径、动词和许可合同从 `operations.types`。 。 。 .

| 区域 | 业务 | HTTP 方法 |
| --- | --- | --- |
| `api` | 页:1 | `DELETE`, (中文(简体) ), `GET`, (中文(简体) ), `PATCH`, (中文(简体) ), `POST`, (中文(简体) ), `PUT` |
| `admin` | 页:1 | `DELETE`, (中文(简体) ), `GET`, (中文(简体) ), `PATCH`, (中文(简体) ), `POST` |
| `discovery` | 页:1 | `DELETE`, (中文(简体) ), `GET`, (中文(简体) ), `POST`, (中文(简体) ), `PUT` |
| `main` | 1个 | `GET` |

社会拥有社区类别、职位和关于这些职位和评论的互动。 模块继续拥有产品、服务和其他模块资源的一般评论和反应.

## 认证和授权

使用一个 `TokenProvider` 以转发已签名用户的 Bearer 令牌,或启用 `withCredentials` 用于安全的 Http 只有饼干会话。 每个行动的JSDoc都包含从服务路线卫士复制的许可要求. SDK不嵌入 API 密钥,证书,本地主机 URL,沙盒主机,或生产主机.

## 投入、询问、答复和运输

所有方法都返回完整的Axios响应,包括状态,头,以及请求ID. 请求机构和查询对象被命名为导出接口. 社会标志使用平面 `page` 财务报告和审定财务报表 `limit` 键,不是嵌入式相接键。 经认证的列表默认为第1页并限定为第30页,夹住页为至少1页并限定为1–100. 标准 Axios 请求选项、信头、超时、适配器、拦截器和 `AbortSignal` 取消被支持为最后参数.

## 错误和取消

```ts
try {
  await api.client.get("/health", undefined, { signal: AbortSignal.timeout(5_000) });
} catch (error) {
  // Axios errors retain response.status and the service error body.
}
```

使用 `@faiber/faiber-ts-sdk` 当一个应用程序需要多个具有一个配置的Faiber服务时.

## 运营商行政管理

生成的 `api.operations.admin*` 方法覆盖挂载 `/api/v1/admin/social` 路由器 导出 `SocialAdmin*` 模型描述SQL的预测,记录,请求正体和平面. 所有电话都一样 `FaiberClient`; 使用当前项目授权的证书。 被转发的演员/组织头属于可信赖的服务基础设施,不得从不信任的浏览器接受.

```ts
const page = await api.operations.adminPostsGet({
  q: "event", status: "pending", page: 1, limit: 30,
});
const post = await api.operations.adminPostDetailGet(page.data.data[0].id);
const reports = await api.operations.adminReportsGet({ status: "open" });
```

| 行政领域 | 所需服务许可 |
| --- | --- |
| 概览、类别/政策 | `social:panel:view` |
| 员额、评论、媒体、行动者 | `social:content:read` |
| 类别 突变 | `social:categories:manage` |
| 政策制定/编辑/出版草案 | `social:capabilities:manage` |
| 调和队列 | `social:moderation:review` |
| 报告 | `social:reports:manage` |
| 索赔/决定 | `social:claims:manage` |
| 丰饶 | `social:funding:review` |
| 准确显示位置 | `social:location:reveal` |
| 限制 | `social:actors:restrict` |
| 分析 | `social:analytics:read` |
| 审计 | `social:audit:read` |
| 综合活动/回顾 | `social:integrations:manage` |
| 配置- 存在标记 | `social:settings:manage` |

页面答复中包含 `data` 阵列和 `meta: {total,page,limit}`。页面默认为1,限制为30;限制为1–100。 设置支持文本、类别和适度状态过滤器。 其他共享列表仅支持 `status` 字段:媒体将其解释为内容类型,审计解释为行动。 演员 `q` 是一个 UUID; 无效的值目前被忽略, 并且字符总计描述当前页面 。 未配置的类别/政策/修改终点不接受列表过滤.

创建类别,起草政策和限制回报201. 分类归档返回204。 出版草稿将取消先前公布的政策;编辑/出版非草稿的回文409。 运营商的决定需要经过认证的用户. 准确位置的答复包括: `Cache-Control: no-store` 60秒后过期;在浏览器缓存中从未持续。 行政赏金金额是JSON数字,而公共能力预测则使用十进制字符串.

重放只接受失败/已死字母事件,需要一个理由,并返回一个待收的收件,而不是证明另一个服务应用了效果. 经审查的匹配服务修复将重新设置和审计结合起来。 索赔决定驳回409个终端状态的修复。 这些被修复的行为需要协调服务版本;单独安装SDK并不能升级服务运行时间.

所有方法都接受请求取消和超时选项,并保留Axios的完整响应. Handle400验证,401缺失演员,403缺失许可,404缺失范围化记录,409存在周期冲突和运输/服务器出错,而没有将失败的请求作为旧服务卷回其作文的证据.

## 公众发现和服务器侧社会图

`operations.discoveryFeedGet(query)`, (中文(简体) ), `discoveryPostDetailGet(id)` 财务报告和审定财务报表 `discoveryCommentsGet(id)` 返回服务运行时间配置的组织/类别。 私人、经编辑、被删除、被封锁和过期的故事记录不包括在内。 公共饲料接受文本、作者和主题过滤器; `subject_refs` 是逗号分隔的 UUID 列表(最多100个解析条目)。 限制夹口为1-100,限制页为1-1000。 feed 响应是数组 `{status:"success",data}` 没有总数。 评论为最古老的第一,上限为100.

`discoveryMediaGet(id)` 返回二进制字节,而不是 JSON,然后检查父的能见度。 尊重他们的 `private, no-cache` 头曰. 丢失/未公布的记录返回404;存储对象失败作为服务器错误传播.

跟踪/封锁、通知偏好和工人路线 **仅限服务器** 运行时间 `BFF_SERVICE_KEY` 和一个经过验证的演员UUID. 将证书保存在可信任的构成服务器的记忆配置中. 永远不要将其放入浏览器捆绑或接受来自模型输出或不信任请求的演员/许可证头. 图形目标使用导出 `SocialFollowTargetKind` (单位:千美元)`user` 或者说 `place`) (中文(简体) ). 图和首选读取返回 `{data}`而不是公众社会的成功信封。 跟踪/屏蔽突变返回204;被屏蔽的关系阻止了用户跟踪并隐藏了公共作者的内容.

工人还需要精确的 `social:integrations:write` 上下文. `discoveryOutboxGet()` 返回最古老的50份未交付通知,而不获得租约。 下游效应 `discoveryAckPut(id)`:承认交付标记,不是下游商业效应的证据. `discoveryPlaceEventPost({id,place_id,status})` 使用事件 UUID 来进行交易性重复压制并队列只选择设置后继者 。 通知偏好支持 `follow`, (中文(简体) ), `comment`, (中文(简体) ), `place`,以及 `quest`,默认启用.

这些行动需要协调的服务形象,包括发现迁移5-9。 每个项目都保留单独的运行时间,配置和数据边界. SDK曝光服务器工作流程;它不提供证书,授予权限,或移动项目数据.

## 出版物、索赔和地点工作流程

使用一个 UUID `request_key` 打开 `createPost` 尝试尝试出版。 第一个完成的出版返回201;一个相同的完成的再试返回200. 更改指纹或未完成的请求返回 409 。 在不确定的运输结果之后再使用同样的密钥. 目前的指纹包括了核心内容和主题类型/参考;改变其他能力并不确立一个不同的请求. 能力主张由发行人签署,并受当前组织、所有人和资源的约束。 具有已公布的能力政策的一个类别需要一个能力对象,即使不需要任何科. 政策控制的领域和资源主张可能拒绝出版400个,403个或409个.

```ts
const publication = await api.createPost({
  request_key: crypto.randomUUID(),
  body: "Who can help document this community project?",
});
const claims = await api.operations.apiMyPostClaimsGet(publication.data.data.id, {
  page: 1, limit: 20,
});
```

不同的注册参与者可以打电话 `api.operations.apiCreateClaimPost(postId, {message, evidence})` 当类别政策允许索赔时。 索赔的设定返回确认,而索赔清单包括信息、证据、时间戳和 `mutual_contact_consent`。详细添加无效 `resolution`. 选择仅限于职位作者;撤回仅限于申请人在提交状态。 双方均可获得联系同意并返回 `mutual_consent`;不披露联系方式。 运营商批准解决了作者选择的诉求. 索赔状态冲突 返回 409.

`feedLocation()` 返回时 `data: null` 当未设定时; `setFeedLocation` 返回非无效偏好。 纬度/经度使用它们的正常地理范围和范围必须大于零并最多为500公里. 经认证的种子应用了已保存的位置排名;公共发现种子使用其单独的投影和过滤. 精确导航访问返回坐标,寿命为60秒 `no-store` 页眉;仅保留当前互动所需的页眉.

`operations.apiGetMediaGet(id)` 财务报告和审定财务报表 `discoveryMediaGet(id)` 请求矩阵缓冲并保留内容/缓存头。 上传接受1字节至12个米B之间的JPEG,PNG或WebP Blobs. 在创建/更新帖子时, 在每个媒体阵列条目中提供返回的上传媒体 UUID 。 服务器取取第一个多段字段; 不要将元数据放在文件前.

社会实体的答复包括所要求的无效数据库字段,例如: `deleted_at`、类别/标题/父母标识符和温和信息。 员额包括: `lifecycle_status`;报告包括组织和解决领域。 适度行动的结果包括: `action` 财务报告和审定财务报表 `status`;其以往状况见审计记录。 分类标签/描述,元数据,存储的介质,发行人快照和索赔证据仍为JSON,因为后端有意存储应用程序定义的JSON值.

视图需要至少1,000毫秒( 低于该阈值400秒); 自作者和重复的每日视图返回 `counted: false`共享一能键是每个组织/用户在员额之间独有的,因此对不同的份额使用一新键。 资助活动的结果是歧视: `duplicate: true` 省略状态; `duplicate: false` 包括申请供资情况。 需要匹配数量/单位/代码.

用户跟踪并被公布的注释插入器可以通过数据库触发器对通知进行排序,但需选择退出。 以下位置不排队通知 。 重试已存在的后继边缘不会生成另一个插入通知 .

包合同描述了所支持的服务来源. 原地融合证据和部署兼容性是单独的核查要求;这种SDK并不断言每次上架行动都是针对所部署的服务进行的.

### 获得资助的运动和私人承认

竞选工作使用社会职位和权利主张。 公开 运动发现没有 披露私人参与者身份或证据。 开始任务队列时, 已获得资金 保留; 验证审查排队, 以一等资产结算。 待答复 无法确认是否已经支付报酬。 再次读取任务到 观察和解。 Dox运动是私人活动,没有消费权.

稳定使用 `request_id` 重试时的值。 不同内容的再利用ID 返回冲突。 使用 `FormData`; 证据下载 要求参与者、竞选主持人或经授权的操作员访问。 这些APIs 需要部署运动支持和配置服务整合。 财务 特性被禁用,直到服务操作员提供资金和启用.

```ts
const campaigns = await social.campaigns.campaigns({ view: 'public' }, { signal: controller.signal });
console.log(campaigns.status, campaigns.data.data.items);
```

## 社区概况和对话

`api.community` 揭露基于同意的个人化, 排名公开发现, 兴趣,屏蔽,交谈和做礼物。 相同的输入方法是 备查 `CommunityApi`他们继承了你的荣誉证书, 请求选项、中止信号和全部 Axios 响应。 公众浏览和 信息需要公众简介;礼物和助理问题需要相互 利息 此类行动不允许他人从事任何工作或笔记.

```ts
const me = await api.community.self({ signal });
const people = await api.community.people({ q: "design", page: 1 }, { signal });
await api.community.interest(people.data.data.items[0].user_id, true, { signal });
```

在设备上保留问卷草稿直到完成 。 提交 `analyze()` 与 所有答案和稳定 `request_id`; 重试时重用. `publish()` 单独 需要明确的同意和返回的版本。 简介可以保持隐私 经过分析. `gift()` 接受一个目录 ID , 绝不是呼叫者提供的价格. 使用服务器返回 `remaining_submissions` 竞选限制.

身份/许可出错使用401/403、无法访问的配置文件404和 stale 版本,相互冲突的重试,限制或缺失的配置 409. 不要推断 一个部署的服务支持这些端点 从SDK版本. 社区服务及其人工智能收费结构必须先推出 生产用途。 任务还需要其社区转发功能.

### 社区信息行动

`CommunityApi.send(peerId, { request_id, body, reply_to })` 可以在同一个对话中引用一个消息. `editMessage` 财务报告和审定财务报表 `deleteMessage` 需要发送者的身份,一个稳定 `request_id` 和当前消息 `version`删除保留了一块墓碑,并清除了尸体和反应. `reactToMessage(peerId, messageId, { emoji: '❤️', enabled: true })` 设置呼叫者的反应;重复请求不能重复。 所有方法都接受Axios选项,包括: `signal`,然后返回 Axios 的全部响应.

这两种情况必须保持公开和不受限制。 社会要求 `social:community:messages:edit`, (中文(简体) ), `:delete`,或 `:react`; 任务使用其录取许可,并向Social转发明确的行动. 访问失败返回403/404, stale 版本返回409. 在重试相冲突的编辑前刷新; 从不默默地覆盖新的内容 .

## 常见问题

### @faiber/faiber-social 是什么？

社会分类、反馈、文章、线性评论、类似评论、反应、报告、温和度以及遗留模块社会数据的迁移\.

### 如何安装 @faiber/faiber-social？

在项目目录运行 npm install @faiber/faiber-social，或使用 pnpm add / yarn add / bun add。

### @faiber/faiber-social 支持 TypeScript 吗？

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

### @faiber/faiber-social 支持 ESM 还是 CommonJS？

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

### @faiber/faiber-social 可以商用吗？

@faiber/faiber-social 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @faiber/faiber-social 的下载量有多少？

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

### @faiber/faiber-social 还在维护吗？

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

