# node_facade_base44_wix 使用说明

## 更新记录

- 2026-07-16: 创建代理、客户端、命令 API 和发布说明。
- 2026-07-16: 统一 core 客户端装配并补充 AI 扩展流程。

## 安装

```bat
npm install node_facade_base44_wix
```

npm 会自动安装 `node_lib_base44_core`。

## Base44 通用代理

```ts
import { createClientFromRequest } from 'npm:@base44/sdk';
import NodeFacadeBase44Wix from 'npm:node_facade_base44_wix@1.0.0';

const Proxy = NodeFacadeBase44Wix.CreateWixProxy({
  ApiBaseUrl: Deno.env.get('WIX_SERVER_API_BASE'),
  CreateBase44ClientFromRequest: createClientFromRequest,
  RequireAuth: true,
});

Deno.serve((RequestValue) => Proxy.Handle(RequestValue));
```

请求示例：

```json
{
  "Path": "/hzhx/wix_server",
  "Method": "POST",
  "Body": {
    "QJson": {
      "Fun": "QueryTask",
      "Data": {
        "TaskName": "task-1"
      }
    }
  }
}
```

## 业务 Function 服务客户端

```ts
const Client = NodeFacadeBase44Wix.CreateWixClient({
  ApiBaseUrl: Deno.env.get('WIX_SERVER_API_BASE'),
  RequireAuth: false,
});

const Result = await Client.WixDeviceApi.QuerySoracomTraffic({
  Mac: '54B56C04DC87',
  HoursValue: 24,
});
```

如果 `node_wix_server` 需要额外鉴权：

```ts
const Client = NodeFacadeBase44Wix.CreateWixClient({
  ApiBaseUrl: Deno.env.get('WIX_SERVER_API_BASE'),
  StaticHeaders: {
    Authorization: `Bearer ${Deno.env.get('WIX_SERVER_TOKEN')}`,
  },
  RequireAuth: false,
});
```

## 通用 QJson 调用

```js
const Result = await Client.WixDeviceApi.Request(
  'ProjectMediaToCos',
  { ProjectId: 'demo' },
  { RequestId: 'request-1' },
);
```

生成的请求体：

```json
{
  "QJson": {
    "RequestId": "request-1",
    "Fun": "ProjectMediaToCos",
    "Data": {
      "ProjectId": "demo"
    }
  }
}
```

新增 QJson 命令前先阅读 [AI 快速开发指南](fun/ai_development.md)。固定命令进入命令目录；需要特殊参数兼容时才新增显式适配方法。

## 本地依赖和测试

`install.bat` 检测到相邻 `node_lib_base44_core` 时，会安装本地 core；否则从 npm registry 安装。

```bat
install.bat
run-test.bat
```

## 发布

1. 先发布 `node_lib_base44_core@1.0.0`。
2. 确认 npm registry 已能查询该版本。
3. 配置 `NPM_TOKEN`。
4. 执行：

```bat
publish-npm.bat
```

双击脚本时，`NPM_TOKEN` 必须存在于当前进程或 Windows 用户环境变量中；脚本会静默读取用户级变量，并在失败或完成后暂停。自动化调用可设置 `PUBLISH_NO_PAUSE=1`；只做预检可设置 `PUBLISH_PREFLIGHT_ONLY=1`。

首次发布后的 registry 验证会每 5 秒重试，最多 6 次。已经显示 `npm publish succeeded` 时，即使验证暂时超时也不要重复发布相同版本。
