api-user-relation — 关系图契约
包名: @aalis/api-user-relation
源码: packages/api-user-relation/src/index.ts
实现: @aalis/plugin-user-relation
概述
本包定义 userRelation 描述符(服务名 user-relation)与查询接口 UserRelationService,不含实现。接口只收消费方实际用到的方法;关系图的完整实现类 RelationService(抽取、整理、工具、指令与 WebUI 页面背后的全部方法)仍由 @aalis/plugin-user-relation 导出,不属于契约。
服务接口
ts
interface UserRelationService {
getCommunityPeers(
personId: string,
limit?: number,
): Promise<{
personId: string;
communityId: string | null;
communitySize: number;
peers: Array<{ id: string; displayName: string; pagerank: number; communityId: string }>;
}>;
}personId形如<platform>:<userId>。- 返回与此人同社群的成员,按 PageRank 降序取前
limit位;limit默认 5,取值收在 1–20。 - 此人不在图中或没有社群标签时,
peers为空、communitySize为 0;有标签时communitySize含本人。
获取方式
ts
import { userRelation } from '@aalis/api-user-relation';
import { definePlugin, optional } from '@aalis/core';
export default definePlugin({
name: '@acme/plugin-example-relation',
uses: { userRelation: optional(userRelation) },
apply({ userRelation }) {
// 服务缺席时 present 为 false,访问 use 的成员会抛错
if (!userRelation.present) return;
void userRelation.use.getCommunityPeers('<platform>:<userId>', 5);
},
});业务句柄 userRelation.use 是活的,选择、缺席与固定同一家的规则见 选择层与业务层。
消费方
| 插件 | 用途 | 服务缺席时 |
|---|---|---|
| plugin-user-profile | 主发言者档案附一行「同社群活跃成员」 | 不附这一行,档案照常注入 |