# 项目状态

## 更新记录

- 2026-07-16: 创建 Supabase/Permission 独立 facade。
- 2026-07-16: 完成 core 复用迁移、幂等键提取、结构化错误和文档收尾。
- 2026-07-16: 完成 Base44 访问状态、访问申请和安全 Session exchange 适配。
- 2026-07-16: 提取通用 Base44 用户解析到 core，集中固定路径与请求体约束，并完成 AI 快速开发文档整理。
- 2026-07-16: 经用户确认将待发布版本调整为 `1.1.0`，并把 core 最低依赖调整为 `^1.1.0`。
- 2026-07-16: Core `1.1.0` 发布后，完成 registry lockfile 刷新和非 Junction 依赖验证。

## 项目定位

- 当前版本：`1.1.0`（尚未发布）
- 项目类型：`node_facade_xx` 应用组合封装库
- npm 包名：`node_facade_base44_supabase`
- 上游服务：`go_qoder_file /ts/dbbase/*`
- 需求对照：`react_ts_role/src/api/authApi.ts`、`domainApi.ts`
- 基础依赖：`node_lib_base44_core@^1.1.0`、`jose@5.10.0`

本项目不是 Supabase JS SDK 包；它通过 Base44 后台函数调用 Go 的受控 Auth、CRUD 和 Permission 领域接口。

## 模块列表

- `supabase_proxy / supabase_function_handler / supabase_client`：代理、逐用户 Token Handler 和客户端组合。
- `facade_request / facade_error`：顶层元数据、领域 envelope 和结构化错误。
- `auth_service`：登录、会话、邀请、注册、密码重置和 Base44 Exchange。
- `base44_assertion`：官方 Base44 用户字段归一化、RS256 配置校验和短时 assertion 签发。
- `base44_request`：三个固定 Base44 路径的页面输入白名单、受保护字段检查和最终 Body 构造。
- `crud_service`：受控 `select/insert/update/upsert`。
- `platform_service / admin_service`：平台 App 和 App 内管理领域。
- `idempotency_key`：平台与管理写请求的统一幂等键。
- `service_paths / paging / messages`：集中路径常量与分类、分页和固定错误文本。

## 已完成能力

- Base44 后台函数安全 Handler。
- 复用 core `ResolveBase44User` 完成一次可信用户解析，支持同步或异步 Base44 Client Factory。
- Go Access Token 与幂等键元数据剥离。
- `/ts/dbbase/supabase` 受控 CRUD。
- 登录、会话、Base44 Exchange。
- Base44 访问状态、访问申请和当前用户安全 exchange。
- 每次调用唯一 JTI、配置为 45 秒且最多 60 秒的 RS256 assertion。
- 三个固定路径服务端 Body 重建、保护字段隔离和 `Cache-Control: no-store`。
- 创建访问申请的显式/自动幂等键以及 `RetryAllowedAt` 错误白名单。
- 邀请、注册、密码重置公共流程。
- 平台 App 管理。
- 用户、员工、角色、动态 Permission、审计。
- 分页聚合帮助函数。
- Go 错误 `code/status/request_id` 到 `SupabaseFacadeError` 的传递。
- 路径白名单、单元测试、npm 发布脚本和 AI 开发文档。

## 目录结构

```text
node_facade_base44_supabase/
├─ src/                 # Go Supabase/Auth/Permission 场景组合
├─ test/                # mock 上游与安全边界测试
├─ examples/            # Base44 Handler/Client 组合示例
├─ docs/api/            # 公共 API
├─ docs/fun/            # 流程、安全和 AI 开发指南
├─ docs/logs/           # 节点记录
├─ index.js
├─ install.bat
├─ run-test.bat
└─ publish-npm.bat
```

## 明确不支持

- 前端直连 Supabase。
- Supabase Secret / `service_role` Key。
- `/ts/xdata`。
- 任意 RPC、PostgREST URL 或任意外部路径代理。
- 通用 CRUD hard delete。

## 验证状态

2026-07-16 Base44 访问申请适配首轮本地验证通过：

```bat
install.bat                  # 本地 core 与依赖安装通过，0 个安全漏洞
run-test.bat                 # 语法检查和 assertion/Handler/客户端/代理测试通过
node examples/basic_usage.js # 通过
npm pack --dry-run --json    # 通过，29 个发布文件
```

本地 mock 已覆盖 assertion Header/Claims/签名/时效/JTI、官方用户字段、配置失败关闭、三个最终 Go Body、保护字段、Token/幂等键剥离、恢复时间错误白名单、CRUD、分页和原有接口回归。

2026-07-16 Core `1.1.0` 发布后，Facade 使用 `npm ci` 从 registry 全新安装依赖并确认 `ResolveBase44User` 存在；`npm run check`、`npm test`、示例、`npm ls --all`、`npm audit --omit=dev` 和 `npm pack --dry-run --json` 全部通过，0 个已知漏洞，发布包 29 个文件。

## 待完成能力

- Base44 Web、真实 Base44 Function 和 `go_qoder_file` 三个用户端接口的端到端联调。
- 使用真实 Go 验证 application_available、pending_review、审批后 exchange、disabled、JTI replay、冷却和限流场景。
- 使用真实平台管理员验证跨 App、动态 Permission 和审计分页。
- 用户再次确认后发布 facade `1.1.0`。
- 推送 Gitee 后完成固定 ref 云端依赖验证。
- facade 发布后，在真实 Base44 Function 中安装并验证 `1.1.0`。
- core 新增公开能力时必须先发布 core，再提升 facade 的最低依赖版本并重新生成 lockfile。

## 已知问题

- Go 迁移、RPC、邮件投递和平台管理员 bootstrap 未完成时，对应接口会由 Go 拒绝。
- 通用 CRUD 的真实表、列和操作符范围取决于 Go 当前白名单。
- 本包不替代数据库 RLS；RLS 仍需在 Supabase 项目中独立配置和验证。
- Base44 Function 必须配置与 Go 公钥、issuer、audience、provider app mapping 对应的 Secret，否则三个新接口失败关闭。
- Core `1.1.0` 已从 npm registry 安装验证，Facade lockfile 已包含对应 tarball 的 `resolved/integrity`；当前不再依赖本地 Junction。
