This repository has been archived on 2026-09-13. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
BPOS-TMP-REPO/apps/api/package.json
T
xcsandClaude Fable 5 8556432dba feat(org): 成员目录 —— Keycloak 读写面穿透、治理台成员/组织/权限三页、姓在前 personName、Staff.kind
后端:`KeycloakDirectory` 端口(users / groups / roles 读写;写直接穿透 Keycloak —— 这里建的人立刻能登录、
删的人立刻消失,停用与收权之后 logout 踢掉会话)、`keycloak-directory.ts` + `keycloak-admin-http.ts` 适配器、
org-directory 契约与 /api/gov 路由、`sync-roster` CLI(ops 路由够不着时整册照过来),
容器按 provisioning 服务账号有无决定注不注入(没配就如实说不可用)。
`personName` 姓在前:汉字直拼「柴浩」、否则留一个空格「Admin Amy」,token 与名册同步两条路同一把尺;
`staffKindOf` 按 Keycloak 固定前缀 service-account- 认服务账号,员工那一屏不摆它(`Staff.kind` 不落库,按账号名现判)。
前端:员工那一屏重做成成员 / 组织 / 权限三页签(member-page 下钻),页签栏右端一句话说清这一格管什么。
契约变更:contracts org.ts / api/http.ts / api/org-directory.ts;api-report 已刷新;org CONTRACT.md 与 ADR-012 同步。
2026-08-26 做的,一直留在工作树没入库。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0167qWjeyBwvfdGovd7FWbCu
2026-08-27 11:44:36 +08:00

42 lines
1.0 KiB
JSON

{
"name": "@app/api",
"version": "0.0.0",
"private": true,
"type": "module",
"exports": {
".": "./src/app/main.ts"
},
"scripts": {
"dev": "tsup --watch --onSuccess \"node dist/main.js\"",
"build": "tsup",
"start": "node dist/main.js",
"seed": "node dist/seed.js",
"migrate": "node dist/migrate.js",
"reset-runs": "node dist/reset-runs.js",
"install-activities": "node dist/install-activities.js",
"sync-roster": "node dist/sync-roster.js"
},
"dependencies": {
"@ai-sdk/openai-compatible": "^3.0.14",
"@hono/node-server": "^2.0.12",
"@mastra/core": "^1.53.0",
"@mastra/observability": "^1.16.2",
"ai": "^7.0.37",
"ajv": "^8.20.0",
"ajv-formats": "^3.0.1",
"drizzle-orm": "^0.45.2",
"hono": "^4.12.32",
"imapflow": "^1.7.6",
"jose": "^5.10.0",
"nodemailer": "^8.0.11",
"pg": "^8.22.0",
"pg-boss": "^12.26.3",
"postal-mime": "^3.0.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@types/nodemailer": "^8.0.1",
"@types/pg": "^8.20.0"
}
}