@pactor-app/skills 1.34.0 → 1.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/pactor-dsl/SKILL.md +28 -1
- package/pactor-dsl/references/dsl-authoring.md +174 -36
- package/pactor-prd/SKILL.md +20 -21
- package/pactor-prd/references/acceptance-checklist.md +1 -1
- package/pactor-prd/references/component-mapping.md +1 -1
- package/pactor-prd/references/data-api.md +37 -0
- package/pactor-prd/references/incremental-wireframe-delta.md +8 -9
- package/pactor-prd/references/page-inventory-and-files.md +2 -2
- package/pactor-prd/references/page-templates.md +59 -12
- package/pactor-prd/references/project-structure.md +1 -1
- package/pactor-prd/template/README.md +4 -4
- package/pactor-prd/template/app/api/d/[...parts]/route.ts +80 -0
- package/pactor-prd/template/app/layout.tsx +1 -3
- package/pactor-prd/template/next.config.js +2 -2
- package/pactor-prd/template/pnpm-lock.yaml +97 -97
- package/pactor-prd/template/src/pactor/App.tsx +3 -2
- package/pactor-prd/template/src/pactor/actions.ts +5 -431
- package/pactor-prd/template/src/pactor/components/index.ts +1 -4
- package/pactor-prd/template/src/pactor/config.ts +12 -4
- package/pactor-prd/template/src/server/yaml/common/dashboard.yaml +1 -1
- package/pactor-prd/template/src/server/yaml/common/login.yaml +46 -75
- package/pactor-prd/template/src/server/yaml/models/data-list.yaml +4 -4
- package/pactor-prd/template/src/server/yaml/provider/provider-detail.yaml +2 -2
- package/pactor-prd/template/src/server/yaml/provider/provider-edit.yaml +1 -1
- package/pactor-prd/template/src/server/yaml/provider/provider-list.yaml +1 -1
- package/pactor-prd/template/src/server/yaml/route/route-detail.yaml +1 -1
- package/pactor-prd/template/src/server/yaml/route/route-edit.yaml +1 -1
- package/pactor-prd/template/src/server/yaml/route/route-list.yaml +1 -1
- package/pactor-prd/template/src/server/yaml/sitemap.yaml +2 -6
- package/pactor-prd/references/mock-data-routes.md +0 -66
- package/pactor-prd/template/app/api/data/[...parts]/route.ts +0 -160
- package/pactor-prd/template/app/login.css +0 -122
- package/pactor-prd/template/src/pactor/components/chip-filter.tsx +0 -89
- package/pactor-prd/template/src/pactor/components/chip-node.tsx +0 -46
- package/pactor-prd/template/src/pactor/mocks/audit-mock.ts +0 -403
- package/pactor-prd/template/src/pactor/mocks/call-logs-mock.ts +0 -875
- package/pactor-prd/template/src/pactor/mocks/client-debug-mock.ts +0 -188
- package/pactor-prd/template/src/pactor/mocks/client-templates-mock.ts +0 -497
- package/pactor-prd/template/src/pactor/mocks/clients-mock.ts +0 -483
- package/pactor-prd/template/src/pactor/mocks/costs-mock.ts +0 -406
- package/pactor-prd/template/src/pactor/mocks/dashboard-mock.ts +0 -192
- package/pactor-prd/template/src/pactor/mocks/data-list-mock.ts +0 -84
- package/pactor-prd/template/src/pactor/mocks/model-debug-mock.ts +0 -144
- package/pactor-prd/template/src/pactor/mocks/models-mock.ts +0 -799
- package/pactor-prd/template/src/pactor/mocks/ops-usage-mock.ts +0 -806
- package/pactor-prd/template/src/pactor/mocks/providers-mock.ts +0 -424
- package/pactor-prd/template/src/pactor/mocks/routes-mock.ts +0 -604
- package/pactor-prd/template/src/pactor/services.ts +0 -200
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# 页面 YAML 模板
|
|
2
2
|
|
|
3
|
-
常用页面模板。占位符:`{{kebab-id}}` 页面 id、`{{页面标题}}`、`{{模块名}}`、`{{resource}}` 数据接口名(单段,见
|
|
3
|
+
常用页面模板。占位符:`{{kebab-id}}` 页面 id、`{{页面标题}}`、`{{模块名}}`、`{{resource}}` 数据接口名(单段,见 data-api.md)、`{{实体名}}` 业务实体中文名。DSL 语法细节以 `pactor-dsl` skill 与 packages/ui 当前导出为准。
|
|
4
4
|
|
|
5
5
|
**数据列表页(搜索 + 表格 + 新建/编辑)默认套用「数据列表标准模型」**;仅当新建/编辑是独立路由表单页时才用轻量变体。
|
|
6
6
|
|
|
7
7
|
## 数据列表标准模型(搜索 Form + 表格 + 抽屉新建/编辑)
|
|
8
8
|
|
|
9
|
-
从成熟实现提取的完整闭环:搜索过滤、新建/编辑共用抽屉表单(分区 + 条件显隐 + 预填)、操作列 link 按钮。**完整可拷贝的骨架文件:`template/src/server/yaml/models/data-list.yaml`**(已注册进模板 sitemap 的可运行示例,菜单「页面骨架 /
|
|
9
|
+
从成熟实现提取的完整闭环:搜索过滤、新建/编辑共用抽屉表单(分区 + 条件显隐 + 预填)、操作列 link 按钮。**完整可拷贝的骨架文件:`template/src/server/yaml/models/data-list.yaml`**(已注册进模板 sitemap 的可运行示例,菜单「页面骨架 / 数据列表」直接预览;复制后替换页面信息、字段、接口名与文案即可)。结构照抄,字段按线框图替换:
|
|
10
10
|
|
|
11
11
|
```yaml
|
|
12
12
|
dsl: "1.0"
|
|
@@ -27,7 +27,7 @@ dataSources:
|
|
|
27
27
|
autoLoad: true
|
|
28
28
|
request:
|
|
29
29
|
method: GET
|
|
30
|
-
url: /api/
|
|
30
|
+
url: /api/d/{{resource}}
|
|
31
31
|
params:
|
|
32
32
|
keyword: ${state.keyword}
|
|
33
33
|
status: ${state.status}
|
|
@@ -36,7 +36,7 @@ dataSources:
|
|
|
36
36
|
autoLoad: false
|
|
37
37
|
request:
|
|
38
38
|
method: GET
|
|
39
|
-
url: /api/
|
|
39
|
+
url: /api/d/{{resource}}/${state.editingId}
|
|
40
40
|
body:
|
|
41
41
|
type: Page
|
|
42
42
|
children:
|
|
@@ -99,7 +99,7 @@ body:
|
|
|
99
99
|
- action: request
|
|
100
100
|
params:
|
|
101
101
|
method: POST
|
|
102
|
-
url: /api/
|
|
102
|
+
url: /api/d/ops/{{resource}}-save
|
|
103
103
|
body:
|
|
104
104
|
id: ${state.editingId}
|
|
105
105
|
name: ${event.name}
|
|
@@ -332,11 +332,58 @@ body:
|
|
|
332
332
|
- **新建/编辑共用同一抽屉**:YAML 锚点 `&entityDrawer` 在「新建」按钮的 `overlay.open` 中定义(必须先出现),表格行内 `*entityDrawer` 引用;`title` 用 `${state.editingId == '' ? ... }` 三元切换;唯一区别是编辑以 `initialValues: ${data.editing}` 预填
|
|
333
333
|
- **抽屉宽度 720**(`overlay.open type: drawer` 的 `width` 生效);抽屉内分区**不用 Card**:`Text(strong) 标题 → Separator → 字段组`,多个分区重复此结构
|
|
334
334
|
- **搜索栏按钮对齐**:查询/重置放进 `Field`,其 `label` 用不间断空格 U+00A0(直接敲 `" "` 普通空格可能被压缩),与左侧控件基线对齐
|
|
335
|
-
- **Form 不能嵌套**(渲染原生 `<form>`,submit 冒泡):抽屉内只用一个 Form;主从多值(如字典项)的子项编辑在**同一 Form** 内做「子 Table + 行下展开表单」,`onSubmit` 用 `if` 动作按 state 分流提交目标(子项保存走独立 ops 接口 + `reload editing
|
|
335
|
+
- **Form 不能嵌套**(渲染原生 `<form>`,submit 冒泡):抽屉内只用一个 Form;主从多值(如字典项)的子项编辑在**同一 Form** 内做「子 Table + 行下展开表单」,`onSubmit` 用 `if` 动作按 state 分流提交目标(子项保存走独立 ops 接口 + `reload editing`);表达式不支持数组方法/箭头函数,子项草稿必须走服务端接口不能前端拼
|
|
336
336
|
- **编辑预填链路**:`setState(editingId + 显隐镜像)` → `reload editing` → `overlay.open`;镜像值取自行数据(`${row.type}`),不要等 editing 接口
|
|
337
337
|
- **overlay.open 阻塞到关闭**,关闭后 `reload list`;新建按钮同理(先重置 state 再 reload editing 清空)
|
|
338
338
|
- **条件显隐**:`onValuesChange` 把字段值镜像到 state(`"${event.x != null ? event.x : state.x}"` 保持其他字段变化时原值),再用 `when` 控制显隐;编辑时关键字段 `disabled: ${state.editingId != ''}`
|
|
339
|
-
- 空 `editingId`
|
|
339
|
+
- 空 `editingId` 时后端 detail 接口须返回空对象而非 404(转发层本身对 404 也回退空对象,但真实后端仍建议遵守该约定)
|
|
340
|
+
|
|
341
|
+
## 登录页(Login 业务组件)
|
|
342
|
+
|
|
343
|
+
登录页一律用 DSL `type: Login` 业务组件,禁止手写 Card+Form+自定义 CSS。**样板即模板工程的 `template/src/server/yaml/common/login.yaml`**(可直接运行预览),核心结构:
|
|
344
|
+
|
|
345
|
+
```yaml
|
|
346
|
+
body:
|
|
347
|
+
type: Login
|
|
348
|
+
props:
|
|
349
|
+
layout: split # split(默认) / centered / brand-card / overlap / backdrop
|
|
350
|
+
authVariant: card # 认证区容器:plain 裸表单 / card 常规卡片 / float 大悬浮卡片
|
|
351
|
+
brand: # 品牌区(文案取自 PRD;illustration 缺省内置插画,传 "" 隐藏)
|
|
352
|
+
name: {{产品名}}
|
|
353
|
+
title: {{品牌主标题}}
|
|
354
|
+
description: {{品牌说明}}
|
|
355
|
+
title: 登录
|
|
356
|
+
subtitle: {{副标题}}
|
|
357
|
+
submitText: 登 录
|
|
358
|
+
# registerLink / forgotLink / footer 按需添加(href 跳转或 onRegisterClick/onForgotClick 事件)
|
|
359
|
+
events:
|
|
360
|
+
onSubmit: # values 经 ${event.username} / ${event.password} 读取
|
|
361
|
+
- id: loginResult
|
|
362
|
+
action: request
|
|
363
|
+
params:
|
|
364
|
+
method: POST
|
|
365
|
+
url: {{登录接口地址}}
|
|
366
|
+
body: { username: ${event.username}, password: ${event.password} }
|
|
367
|
+
- action: if
|
|
368
|
+
params:
|
|
369
|
+
condition: ${actions.loginResult == null || actions.loginResult.token == null}
|
|
370
|
+
then:
|
|
371
|
+
- action: message
|
|
372
|
+
params: { messageType: error, text: 用户名或密码错误 }
|
|
373
|
+
- action: if
|
|
374
|
+
params:
|
|
375
|
+
condition: ${actions.loginResult != null && actions.loginResult.token != null}
|
|
376
|
+
then:
|
|
377
|
+
- action: app.reload
|
|
378
|
+
params: { to: / }
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
要点:
|
|
382
|
+
|
|
383
|
+
- **布局是产品决策**:原型未明确布局时必须向用户提问(5 种 `layout` + `brandSide`/`brandRatio`/`authVariant` 等修饰),用户不答默认 `split` + `card`;原型可判定则不提问
|
|
384
|
+
- 页面布局(sitemap `layouts`)用纯 PageOutlet 外壳(模板为 `login` 布局),组件自带整页渐变、背景装饰与品牌面板,不要再套自定义背景容器
|
|
385
|
+
- 可配置项权威定义见 `openspec/specs/ui-login-component` 与组件源码(`packages/ui/src/components/business/Login/`);未配置的可选元素不渲染
|
|
386
|
+
- 校验失败由组件内部 Form rules 就地提示;登录失败/成功分支在 DSL 动作链用 `if` + `message` 实现
|
|
340
387
|
|
|
341
388
|
## 列表页(轻量变体:新建/编辑跳独立表单页)
|
|
342
389
|
|
|
@@ -357,7 +404,7 @@ dataSources:
|
|
|
357
404
|
autoLoad: true
|
|
358
405
|
request:
|
|
359
406
|
method: GET
|
|
360
|
-
url: /api/
|
|
407
|
+
url: /api/d/{{resource}}
|
|
361
408
|
params:
|
|
362
409
|
keyword: ${state.keyword}
|
|
363
410
|
status: ${state.status}
|
|
@@ -460,7 +507,7 @@ dataSources:
|
|
|
460
507
|
autoLoad: true
|
|
461
508
|
request:
|
|
462
509
|
method: GET
|
|
463
|
-
url: /api/
|
|
510
|
+
url: /api/d/{{resource}}/${route.params.code} # 路径参数经 route 注入
|
|
464
511
|
body:
|
|
465
512
|
type: Page
|
|
466
513
|
children:
|
|
@@ -504,7 +551,7 @@ dataSources:
|
|
|
504
551
|
autoLoad: true
|
|
505
552
|
request:
|
|
506
553
|
method: GET
|
|
507
|
-
url: /api/
|
|
554
|
+
url: /api/d/{{resource}}/${route.params.code}
|
|
508
555
|
body:
|
|
509
556
|
type: Page
|
|
510
557
|
children:
|
|
@@ -533,9 +580,9 @@ body:
|
|
|
533
580
|
onSubmit:
|
|
534
581
|
- action: setState
|
|
535
582
|
params: { submitting: true }
|
|
536
|
-
- action: http.post #
|
|
583
|
+
- action: http.post # 指向 /api/d/{{resource}}(无后端时转发层返回 { ok: true })
|
|
537
584
|
params:
|
|
538
|
-
url: /api/
|
|
585
|
+
url: /api/d/{{resource}}
|
|
539
586
|
body: ${event}
|
|
540
587
|
- action: message
|
|
541
588
|
params: { messageType: success, text: 保存成功 }
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
│ │ ├── sitemap/route.ts ✅ 返回 sitemap 入口数据(由 src/server/sitemap.ts 组装)
|
|
11
11
|
│ │ ├── public/pages/[id]/route.ts ➕ 懒加载页面端点,返回单页 envelope(id/resourceType/version/dslVersion/schema/updatedAt)
|
|
12
12
|
│ │ ├── auth/ · users/ ✅ 模板自带(演示账号,按需保留)
|
|
13
|
-
│ │ └──
|
|
13
|
+
│ │ └── d/[...parts]/route.ts ➕ 数据统一入口(纯转发 → $NEXT_PUBLIC_API_BASE_URL;无后端返回空数据,见 data-api.md)
|
|
14
14
|
│ ├── globals.css ✅ 全局样式(皮肤导入处)
|
|
15
15
|
│ ├── layout.tsx ✅ 根布局(自定义页面 CSS 在这里挂载)
|
|
16
16
|
│ └── theme.css ✅ 主题令牌(样式移植的主战场)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# pactor-prd 模板工程
|
|
2
2
|
|
|
3
|
-
可运行的参考实现:Next.js + pactor,页面全部 YAML DSL 描述(`src/server/yaml/`),数据一律 http
|
|
3
|
+
可运行的参考实现:Next.js + pactor,页面全部 YAML DSL 描述(`src/server/yaml/`),数据一律 http 数据源,经纯转发层(`app/api/d/[...parts]`)转发到 `NEXT_PUBLIC_API_BASE_URL`;没有服务层接口时返回空数据,页面按空态渲染。
|
|
4
4
|
|
|
5
5
|
## 包含内容
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
- **两个参考模块**:
|
|
9
9
|
- `yaml/provider/`(供应商:卡片式列表 / 详情 / 新增 / 编辑)
|
|
10
10
|
- `yaml/route/`(路由:卡片式列表 / 单页纵向详情 / 单页表单新增 / 编辑)
|
|
11
|
-
- **完整接线**:`src/pactor/`(SitemapApp 接线、pageEndpoint、皮肤加载、自定义组件与动作)、`src/server/`(yaml 递归加载 + 会话裁剪)、`app/api/`(sitemap / public/pages /
|
|
11
|
+
- **完整接线**:`src/pactor/`(SitemapApp 接线、pageEndpoint、皮肤加载、自定义组件与动作)、`src/server/`(yaml 递归加载 + 会话裁剪)、`app/api/`(sitemap / public/pages / d 转发层 / auth / users)
|
|
12
12
|
- **三套皮肤**:`public/skins/`(深浅色俱全),侧栏换肤入口
|
|
13
13
|
|
|
14
14
|
## 使用方式
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
1. `package.json` 的 name 改为新工程名
|
|
19
19
|
2. `src/server/yaml/sitemap.yaml`:app 名称、pages、menus 按 PRD 页面清单重写(保留 layouts)
|
|
20
20
|
3. 保留 `common/` 公共页面按需调整;参考模块目录可保留作样板,新模块照其结构新增
|
|
21
|
-
4.
|
|
22
|
-
5. `pnpm install && pnpm dev`(端口 9011
|
|
21
|
+
4. 数据接口:dataSources 的 url 直接写最终接口路径(`/api/d/...`,路径即契约);接真实后端时改 `next.config.js` 的 `API_BASE_URLS` 即可,页面 yaml 不动
|
|
22
|
+
5. `pnpm install && pnpm dev`(端口 9011)验证(无后端时数据区为空态)
|
|
23
23
|
|
|
24
24
|
## 演示账号
|
|
25
25
|
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { cookies } from "next/headers";
|
|
2
|
+
|
|
3
|
+
import { serverBaseUrl } from "@/pactor/config";
|
|
4
|
+
import { findUserBySession, SESSION_COOKIE } from "@/server/accounts";
|
|
5
|
+
import { corsHeaders, corsPreflight } from "@/server/cors";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 页面数据接口统一入口(纯转发):页面 DSL 的 http 数据源(如
|
|
9
|
+
* /api/d/providers)即服务端接口路径,本路由按相同路径、方法、查询与
|
|
10
|
+
* 请求体原样转发到 $serverBaseUrl/api/d/<parts>(src/pactor/config.ts),
|
|
11
|
+
* 并携带会话 cookie;匿名一律 401,不转发。
|
|
12
|
+
*
|
|
13
|
+
* 没有服务层接口时返回空数据(不报错):上游不可达(连接失败)、接口
|
|
14
|
+
* 不存在(404)或返回非 JSON(如命中前端兜底的 HTML)时,GET 返回 {}、
|
|
15
|
+
* POST 返回 { ok: true },页面按空态渲染;接真实后端只需把
|
|
16
|
+
* next.config.js 的 API_BASE_URLS 换成真实地址,页面 yaml 与本路由零改动。
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** 无服务层接口时的空数据(GET → 空对象,POST → 成功占位) */
|
|
20
|
+
function emptyData(request: Request): Response {
|
|
21
|
+
const isGet = request.method === "GET" || request.method === "HEAD";
|
|
22
|
+
return Response.json(isGet ? {} : { ok: true }, {
|
|
23
|
+
headers: { "cache-control": "no-store", ...corsHeaders(request) },
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** 原样转发:同路径、同方法、同查询、同请求体,携带会话 cookie */
|
|
28
|
+
async function forward(request: Request, parts: string[]): Promise<Response> {
|
|
29
|
+
const url = new URL(request.url);
|
|
30
|
+
const target = `${serverBaseUrl}/api/d/${parts.join("/")}${url.search}`;
|
|
31
|
+
const headers = new Headers();
|
|
32
|
+
const cookie = request.headers.get("cookie");
|
|
33
|
+
if (cookie) headers.set("cookie", cookie);
|
|
34
|
+
const contentType = request.headers.get("content-type");
|
|
35
|
+
if (contentType) headers.set("content-type", contentType);
|
|
36
|
+
const init: RequestInit = { method: request.method, headers };
|
|
37
|
+
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
38
|
+
init.body = await request.text();
|
|
39
|
+
}
|
|
40
|
+
let upstream: globalThis.Response;
|
|
41
|
+
try {
|
|
42
|
+
upstream = await fetch(target, init);
|
|
43
|
+
} catch {
|
|
44
|
+
return emptyData(request); // 上游不可达 → 空数据
|
|
45
|
+
}
|
|
46
|
+
const upstreamType = upstream.headers.get("content-type") ?? "";
|
|
47
|
+
if (upstream.status === 404 || !upstreamType.includes("json")) {
|
|
48
|
+
return emptyData(request); // 接口不存在 / 命中前端兜底 HTML → 空数据
|
|
49
|
+
}
|
|
50
|
+
const body = await upstream.arrayBuffer();
|
|
51
|
+
const resHeaders: Record<string, string> = {
|
|
52
|
+
"cache-control": "no-store",
|
|
53
|
+
"content-type": upstreamType,
|
|
54
|
+
...corsHeaders(request),
|
|
55
|
+
};
|
|
56
|
+
return new Response(body, { status: upstream.status, headers: resHeaders });
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function handle(
|
|
60
|
+
request: Request,
|
|
61
|
+
context: RouteContext<"/api/d/[...parts]">,
|
|
62
|
+
) {
|
|
63
|
+
const store = await cookies();
|
|
64
|
+
const user = findUserBySession(store.get(SESSION_COOKIE)?.value);
|
|
65
|
+
if (!user) {
|
|
66
|
+
return Response.json(
|
|
67
|
+
{ error: "未登录" },
|
|
68
|
+
{ status: 401, headers: corsHeaders(request) },
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const { parts } = await context.params;
|
|
73
|
+
return forward(request, parts);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export const GET = handle;
|
|
77
|
+
export const POST = handle;
|
|
78
|
+
|
|
79
|
+
/** 预检(跨源带凭据 / 自定义头时) */
|
|
80
|
+
export const OPTIONS = corsPreflight;
|
|
@@ -3,12 +3,10 @@ import { Geist, Geist_Mono } from "next/font/google";
|
|
|
3
3
|
import { PactorApp } from "@/pactor/App";
|
|
4
4
|
// 顺序约定:globals(本项目 tailwind 工具类 + 皮肤无关的外壳规则)→
|
|
5
5
|
// ui 预建样式(同层冲突时 ui 胜出,保证其内部 base/响应式变体排序生效,
|
|
6
|
-
// 如 Sidebar 的 hidden md:block
|
|
7
|
-
// 经 data-slot 钩子压过组件默认样式)。主题令牌由 public/skins/<skin>.css
|
|
6
|
+
// 如 Sidebar 的 hidden md:block)。主题令牌由 public/skins/<skin>.css
|
|
8
7
|
// 经下方内联脚本在首屏注入(link 后加载者胜出)。
|
|
9
8
|
import "./globals.css";
|
|
10
9
|
import "@pactor-app/ui/styles.css";
|
|
11
|
-
import "./login.css";
|
|
12
10
|
|
|
13
11
|
export const metadata: Metadata = {
|
|
14
12
|
title: "Pactor Console",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* - 构建环境可设 NEXT_PUBLIC_API_BASE_URL 显式覆盖(域名不符合约定时)。
|
|
10
10
|
*/
|
|
11
11
|
const API_BASE_URLS = {
|
|
12
|
-
/**
|
|
13
|
-
development: 'http://localhost:9011',
|
|
12
|
+
/** 本地开发:无服务层接口(转发命中前端兜底 → 返回空数据);接本地后端时改为其地址 */
|
|
13
|
+
development: 'http://localhost:9011/backend',
|
|
14
14
|
/** 测试环境:替换为实际测试环境 API 域名 */
|
|
15
15
|
test: 'https://api-test.example.com',
|
|
16
16
|
/** 生产环境:替换为实际生产 API 域名 */
|
|
@@ -9,14 +9,14 @@ importers:
|
|
|
9
9
|
.:
|
|
10
10
|
dependencies:
|
|
11
11
|
'@pactor-app/core':
|
|
12
|
-
specifier: ^1.
|
|
13
|
-
version: 1.
|
|
12
|
+
specifier: ^1.34.0
|
|
13
|
+
version: 1.34.0
|
|
14
14
|
'@pactor-app/runtime':
|
|
15
|
-
specifier: ^1.
|
|
16
|
-
version: 1.
|
|
15
|
+
specifier: ^1.34.0
|
|
16
|
+
version: 1.34.0(react@19.2.8)
|
|
17
17
|
'@pactor-app/ui':
|
|
18
|
-
specifier: ^1.
|
|
19
|
-
version: 1.
|
|
18
|
+
specifier: ^1.34.0
|
|
19
|
+
version: 1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
20
20
|
lucide-react:
|
|
21
21
|
specifier: 1.45.0
|
|
22
22
|
version: 1.45.0(react@19.2.8)
|
|
@@ -24,8 +24,8 @@ importers:
|
|
|
24
24
|
specifier: 16.3.5
|
|
25
25
|
version: 16.3.5(@babel/core@7.29.7)(@types/node@20.19.43)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
|
26
26
|
pactor-app:
|
|
27
|
-
specifier: ^1.
|
|
28
|
-
version: 1.
|
|
27
|
+
specifier: ^1.34.0
|
|
28
|
+
version: 1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)(vite@8.3.1(@types/node@20.19.43)(jiti@2.7.0)(yaml@2.9.1))
|
|
29
29
|
react:
|
|
30
30
|
specifier: 19.2.8
|
|
31
31
|
version: 19.2.8
|
|
@@ -501,73 +501,73 @@ packages:
|
|
|
501
501
|
'@oxc-project/types@0.151.0':
|
|
502
502
|
resolution: {integrity: sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==}
|
|
503
503
|
|
|
504
|
-
'@pactor-app/app@1.
|
|
505
|
-
resolution: {integrity: sha512
|
|
504
|
+
'@pactor-app/app@1.34.0':
|
|
505
|
+
resolution: {integrity: sha512-R2AqfNx1HnwF1pHPGHsGJpaHUlbCPfqUflsFaw7dkqDjTc5TuyWzl7MRHaZD1oFbIPaX+qy0fNDp9oob8E029Q==}
|
|
506
506
|
engines: {node: '>=18'}
|
|
507
507
|
peerDependencies:
|
|
508
508
|
react: '>=18'
|
|
509
509
|
react-dom: '>=18'
|
|
510
510
|
react-router-dom: '>=6'
|
|
511
511
|
|
|
512
|
-
'@pactor-app/chat@1.
|
|
513
|
-
resolution: {integrity: sha512-
|
|
512
|
+
'@pactor-app/chat@1.34.0':
|
|
513
|
+
resolution: {integrity: sha512-0I7enCfIbU7C0wuOQ/rUDmFKHYcVnbOjoy7Y22nn0pz8DAmqesFU5GFZc2cCf8Mt2ZKgSDB1J5TQI/bN2Qsafw==}
|
|
514
514
|
engines: {node: '>=18'}
|
|
515
515
|
peerDependencies:
|
|
516
516
|
react: '>=18'
|
|
517
517
|
|
|
518
|
-
'@pactor-app/cli@1.
|
|
519
|
-
resolution: {integrity: sha512-
|
|
518
|
+
'@pactor-app/cli@1.34.0':
|
|
519
|
+
resolution: {integrity: sha512-IZC8jlGbozZ2IKEkwo7JzKfIW0OEVkoklSZptwKaG3SuHLKw3Iw7eFNeLwvBvswciPFoDajYQS+36/YoqC7o8Q==}
|
|
520
520
|
engines: {node: '>=18'}
|
|
521
521
|
hasBin: true
|
|
522
522
|
|
|
523
|
-
'@pactor-app/core@1.
|
|
524
|
-
resolution: {integrity: sha512-
|
|
523
|
+
'@pactor-app/core@1.34.0':
|
|
524
|
+
resolution: {integrity: sha512-ldHZIghOq3f9MIUc6764U+RdmhXp2HKUMpnjz90OfZ4I1YOgj8F3g2jZjw699kARSmLUgLj0PVonqjIUsm6k9A==}
|
|
525
525
|
engines: {node: '>=18'}
|
|
526
526
|
|
|
527
|
-
'@pactor-app/expression@1.
|
|
528
|
-
resolution: {integrity: sha512-
|
|
527
|
+
'@pactor-app/expression@1.34.0':
|
|
528
|
+
resolution: {integrity: sha512-Na7rYU3PZGvQOe83OMeFcneWkLP6IkhfheB6miGvX+1L6iTh1VyuFi1fbgtsyUScSllrPA8JJYpXGMCGX+zVCg==}
|
|
529
529
|
engines: {node: '>=18'}
|
|
530
530
|
|
|
531
|
-
'@pactor-app/markdown@1.
|
|
532
|
-
resolution: {integrity: sha512-
|
|
531
|
+
'@pactor-app/markdown@1.34.0':
|
|
532
|
+
resolution: {integrity: sha512-dU2Z0uvj62/0S16H3J3AQld6DFzN+wV5uVkvYcFeqHN8KiUsP7ppdov9cSGVxo/3Zhk4HbReSBpihEOKyeLzgg==}
|
|
533
533
|
engines: {node: '>=18'}
|
|
534
534
|
peerDependencies:
|
|
535
535
|
react: '>=18'
|
|
536
536
|
|
|
537
|
-
'@pactor-app/permission@1.
|
|
538
|
-
resolution: {integrity: sha512-
|
|
537
|
+
'@pactor-app/permission@1.34.0':
|
|
538
|
+
resolution: {integrity: sha512-Bf4A7BTrtArg9gEnDG25xmzvDC95ffotIhZmRSt6unDj5hu1iaFJbT+TBWqERJ2/TmpIDhx4ipeSN+SOK0jvRQ==}
|
|
539
539
|
engines: {node: '>=18'}
|
|
540
540
|
|
|
541
|
-
'@pactor-app/resource@1.
|
|
542
|
-
resolution: {integrity: sha512-
|
|
541
|
+
'@pactor-app/resource@1.34.0':
|
|
542
|
+
resolution: {integrity: sha512-VNxjZqynNrETgcj2Q9z5PlHlayZXKyXmBhH1iM6ZzzoFy2cn1uoAYURCYtxS7onMotilsSt54CtthybaZHPOyw==}
|
|
543
543
|
engines: {node: '>=18'}
|
|
544
544
|
|
|
545
|
-
'@pactor-app/router@1.
|
|
546
|
-
resolution: {integrity: sha512
|
|
545
|
+
'@pactor-app/router@1.34.0':
|
|
546
|
+
resolution: {integrity: sha512-+0jWfZOKIZv2DUQrtES5zuQxRqRleJpNqKqo288hBLA2SP4k/Qj/GG8Yq4yy4wv9XIbjz6cxtu+Bi0g4iBmK4g==}
|
|
547
547
|
engines: {node: '>=18'}
|
|
548
548
|
peerDependencies:
|
|
549
549
|
react: '>=18'
|
|
550
550
|
react-router-dom: '>=6'
|
|
551
551
|
|
|
552
|
-
'@pactor-app/runtime@1.
|
|
553
|
-
resolution: {integrity: sha512-
|
|
552
|
+
'@pactor-app/runtime@1.34.0':
|
|
553
|
+
resolution: {integrity: sha512-lHia4xqPvKfl4/K/aklc8abfIIW1fBDnGB5L94/p21QAkZoZwO6Bs70l3zuWuc1vYL/eyQgXrmAJERCdhiNUXg==}
|
|
554
554
|
engines: {node: '>=18'}
|
|
555
555
|
peerDependencies:
|
|
556
556
|
react: '>=18'
|
|
557
557
|
|
|
558
|
-
'@pactor-app/schema@1.
|
|
559
|
-
resolution: {integrity: sha512-
|
|
558
|
+
'@pactor-app/schema@1.34.0':
|
|
559
|
+
resolution: {integrity: sha512-2EZCgAvct7CbefmYVJHJtL6LCBoehePUPVoY1vStKQkJxzOUSESH3FCKcss8eNC0aJfa0nueu+Hnpjrgee9rEw==}
|
|
560
560
|
engines: {node: '>=18'}
|
|
561
561
|
|
|
562
|
-
'@pactor-app/ui@1.
|
|
563
|
-
resolution: {integrity: sha512-
|
|
562
|
+
'@pactor-app/ui@1.34.0':
|
|
563
|
+
resolution: {integrity: sha512-JDg1STA/Q37o89UmWAoZ4QgiAAisJtr9cpeFZ+WJaH+WSqBtOZr89e3urCQduebCjLr1Z+F44tHy4b1uL0/SYw==}
|
|
564
564
|
engines: {node: '>=18'}
|
|
565
565
|
peerDependencies:
|
|
566
566
|
react: '>=18'
|
|
567
567
|
react-dom: '>=18'
|
|
568
568
|
|
|
569
|
-
'@pactor-app/vite-plugin@1.
|
|
570
|
-
resolution: {integrity: sha512-
|
|
569
|
+
'@pactor-app/vite-plugin@1.34.0':
|
|
570
|
+
resolution: {integrity: sha512-C7lZ3VemtSyRhOqmihpoGZkJnzCJ/WBiyJ5X1mcI7PYVgyh0iqaV+L7vu9V58itKuVYLo1d6XdNSVT6bUYE+Rg==}
|
|
571
571
|
engines: {node: '>=18'}
|
|
572
572
|
peerDependencies:
|
|
573
573
|
vite: '>=5'
|
|
@@ -2529,8 +2529,8 @@ packages:
|
|
|
2529
2529
|
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
|
|
2530
2530
|
engines: {node: '>=6'}
|
|
2531
2531
|
|
|
2532
|
-
pactor-app@1.
|
|
2533
|
-
resolution: {integrity: sha512-
|
|
2532
|
+
pactor-app@1.34.0:
|
|
2533
|
+
resolution: {integrity: sha512-wSJPXxRipLUbUvu+4CZJeeU6jTB1mSihSWlHMxOg8d+qvYj1W6PCydYxu9SkGPHGC2gNWMAmHA172VYZ1gHwnQ==}
|
|
2534
2534
|
engines: {node: '>=18'}
|
|
2535
2535
|
peerDependencies:
|
|
2536
2536
|
react: '>=18'
|
|
@@ -3613,16 +3613,16 @@ snapshots:
|
|
|
3613
3613
|
|
|
3614
3614
|
'@oxc-project/types@0.151.0': {}
|
|
3615
3615
|
|
|
3616
|
-
'@pactor-app/app@1.
|
|
3616
|
+
'@pactor-app/app@1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)':
|
|
3617
3617
|
dependencies:
|
|
3618
|
-
'@pactor-app/core': 1.
|
|
3619
|
-
'@pactor-app/expression': 1.
|
|
3620
|
-
'@pactor-app/permission': 1.
|
|
3621
|
-
'@pactor-app/resource': 1.
|
|
3622
|
-
'@pactor-app/router': 1.
|
|
3623
|
-
'@pactor-app/runtime': 1.
|
|
3624
|
-
'@pactor-app/schema': 1.
|
|
3625
|
-
'@pactor-app/ui': 1.
|
|
3618
|
+
'@pactor-app/core': 1.34.0
|
|
3619
|
+
'@pactor-app/expression': 1.34.0
|
|
3620
|
+
'@pactor-app/permission': 1.34.0
|
|
3621
|
+
'@pactor-app/resource': 1.34.0
|
|
3622
|
+
'@pactor-app/router': 1.34.0(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
3623
|
+
'@pactor-app/runtime': 1.34.0(react@19.2.8)
|
|
3624
|
+
'@pactor-app/schema': 1.34.0
|
|
3625
|
+
'@pactor-app/ui': 1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
3626
3626
|
react: 19.2.8
|
|
3627
3627
|
react-dom: 19.2.8(react@19.2.8)
|
|
3628
3628
|
react-router-dom: 7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
|
@@ -3632,13 +3632,13 @@ snapshots:
|
|
|
3632
3632
|
- '@types/react-dom'
|
|
3633
3633
|
- supports-color
|
|
3634
3634
|
|
|
3635
|
-
'@pactor-app/chat@1.
|
|
3635
|
+
'@pactor-app/chat@1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)':
|
|
3636
3636
|
dependencies:
|
|
3637
|
-
'@pactor-app/core': 1.
|
|
3638
|
-
'@pactor-app/markdown': 1.
|
|
3639
|
-
'@pactor-app/permission': 1.
|
|
3640
|
-
'@pactor-app/runtime': 1.
|
|
3641
|
-
'@pactor-app/ui': 1.
|
|
3637
|
+
'@pactor-app/core': 1.34.0
|
|
3638
|
+
'@pactor-app/markdown': 1.34.0(@types/react@19.3.0)(react@19.2.8)
|
|
3639
|
+
'@pactor-app/permission': 1.34.0
|
|
3640
|
+
'@pactor-app/runtime': 1.34.0(react@19.2.8)
|
|
3641
|
+
'@pactor-app/ui': 1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
3642
3642
|
react: 19.2.8
|
|
3643
3643
|
transitivePeerDependencies:
|
|
3644
3644
|
- '@date-fns/tz'
|
|
@@ -3648,22 +3648,22 @@ snapshots:
|
|
|
3648
3648
|
- react-router-dom
|
|
3649
3649
|
- supports-color
|
|
3650
3650
|
|
|
3651
|
-
'@pactor-app/cli@1.
|
|
3651
|
+
'@pactor-app/cli@1.34.0':
|
|
3652
3652
|
dependencies:
|
|
3653
|
-
'@pactor-app/core': 1.
|
|
3654
|
-
'@pactor-app/expression': 1.
|
|
3655
|
-
'@pactor-app/schema': 1.
|
|
3653
|
+
'@pactor-app/core': 1.34.0
|
|
3654
|
+
'@pactor-app/expression': 1.34.0
|
|
3655
|
+
'@pactor-app/schema': 1.34.0
|
|
3656
3656
|
yaml: 2.9.1
|
|
3657
3657
|
|
|
3658
|
-
'@pactor-app/core@1.
|
|
3658
|
+
'@pactor-app/core@1.34.0': {}
|
|
3659
3659
|
|
|
3660
|
-
'@pactor-app/expression@1.
|
|
3660
|
+
'@pactor-app/expression@1.34.0':
|
|
3661
3661
|
dependencies:
|
|
3662
|
-
'@pactor-app/core': 1.
|
|
3662
|
+
'@pactor-app/core': 1.34.0
|
|
3663
3663
|
|
|
3664
|
-
'@pactor-app/markdown@1.
|
|
3664
|
+
'@pactor-app/markdown@1.34.0(@types/react@19.3.0)(react@19.2.8)':
|
|
3665
3665
|
dependencies:
|
|
3666
|
-
'@pactor-app/core': 1.
|
|
3666
|
+
'@pactor-app/core': 1.34.0
|
|
3667
3667
|
katex: 0.18.9
|
|
3668
3668
|
react: 19.2.8
|
|
3669
3669
|
react-markdown: 10.1.0(@types/react@19.3.0)(react@19.2.8)
|
|
@@ -3675,41 +3675,41 @@ snapshots:
|
|
|
3675
3675
|
- '@types/react'
|
|
3676
3676
|
- supports-color
|
|
3677
3677
|
|
|
3678
|
-
'@pactor-app/permission@1.
|
|
3678
|
+
'@pactor-app/permission@1.34.0':
|
|
3679
3679
|
dependencies:
|
|
3680
|
-
'@pactor-app/core': 1.
|
|
3680
|
+
'@pactor-app/core': 1.34.0
|
|
3681
3681
|
|
|
3682
|
-
'@pactor-app/resource@1.
|
|
3682
|
+
'@pactor-app/resource@1.34.0':
|
|
3683
3683
|
dependencies:
|
|
3684
|
-
'@pactor-app/core': 1.
|
|
3684
|
+
'@pactor-app/core': 1.34.0
|
|
3685
3685
|
|
|
3686
|
-
'@pactor-app/router@1.
|
|
3686
|
+
'@pactor-app/router@1.34.0(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)':
|
|
3687
3687
|
dependencies:
|
|
3688
|
-
'@pactor-app/core': 1.
|
|
3689
|
-
'@pactor-app/permission': 1.
|
|
3688
|
+
'@pactor-app/core': 1.34.0
|
|
3689
|
+
'@pactor-app/permission': 1.34.0
|
|
3690
3690
|
react: 19.2.8
|
|
3691
3691
|
react-router-dom: 7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
|
3692
3692
|
|
|
3693
|
-
'@pactor-app/runtime@1.
|
|
3693
|
+
'@pactor-app/runtime@1.34.0(react@19.2.8)':
|
|
3694
3694
|
dependencies:
|
|
3695
|
-
'@pactor-app/core': 1.
|
|
3696
|
-
'@pactor-app/expression': 1.
|
|
3697
|
-
'@pactor-app/schema': 1.
|
|
3695
|
+
'@pactor-app/core': 1.34.0
|
|
3696
|
+
'@pactor-app/expression': 1.34.0
|
|
3697
|
+
'@pactor-app/schema': 1.34.0
|
|
3698
3698
|
react: 19.2.8
|
|
3699
3699
|
|
|
3700
|
-
'@pactor-app/schema@1.
|
|
3700
|
+
'@pactor-app/schema@1.34.0':
|
|
3701
3701
|
dependencies:
|
|
3702
|
-
'@pactor-app/core': 1.
|
|
3702
|
+
'@pactor-app/core': 1.34.0
|
|
3703
3703
|
ajv: 8.20.0
|
|
3704
3704
|
|
|
3705
|
-
'@pactor-app/ui@1.
|
|
3705
|
+
'@pactor-app/ui@1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)':
|
|
3706
3706
|
dependencies:
|
|
3707
3707
|
'@base-ui/react': 1.8.0(@date-fns/tz@1.5.0)(@types/react@19.3.0)(date-fns@4.4.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
|
3708
|
-
'@pactor-app/core': 1.
|
|
3709
|
-
'@pactor-app/markdown': 1.
|
|
3710
|
-
'@pactor-app/permission': 1.
|
|
3711
|
-
'@pactor-app/router': 1.
|
|
3712
|
-
'@pactor-app/runtime': 1.
|
|
3708
|
+
'@pactor-app/core': 1.34.0
|
|
3709
|
+
'@pactor-app/markdown': 1.34.0(@types/react@19.3.0)(react@19.2.8)
|
|
3710
|
+
'@pactor-app/permission': 1.34.0
|
|
3711
|
+
'@pactor-app/router': 1.34.0(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
3712
|
+
'@pactor-app/runtime': 1.34.0(react@19.2.8)
|
|
3713
3713
|
class-variance-authority: 0.7.1
|
|
3714
3714
|
clsx: 2.1.1
|
|
3715
3715
|
cmdk: 1.1.1(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
|
@@ -3734,10 +3734,10 @@ snapshots:
|
|
|
3734
3734
|
- react-router-dom
|
|
3735
3735
|
- supports-color
|
|
3736
3736
|
|
|
3737
|
-
'@pactor-app/vite-plugin@1.
|
|
3737
|
+
'@pactor-app/vite-plugin@1.34.0(vite@8.3.1(@types/node@20.19.43)(jiti@2.7.0)(yaml@2.9.1))':
|
|
3738
3738
|
dependencies:
|
|
3739
|
-
'@pactor-app/core': 1.
|
|
3740
|
-
'@pactor-app/schema': 1.
|
|
3739
|
+
'@pactor-app/core': 1.34.0
|
|
3740
|
+
'@pactor-app/schema': 1.34.0
|
|
3741
3741
|
vite: 8.3.1(@types/node@20.19.43)(jiti@2.7.0)(yaml@2.9.1)
|
|
3742
3742
|
yaml: 2.9.1
|
|
3743
3743
|
|
|
@@ -5996,21 +5996,21 @@ snapshots:
|
|
|
5996
5996
|
|
|
5997
5997
|
p-try@2.2.0: {}
|
|
5998
5998
|
|
|
5999
|
-
pactor-app@1.
|
|
6000
|
-
dependencies:
|
|
6001
|
-
'@pactor-app/app': 1.
|
|
6002
|
-
'@pactor-app/chat': 1.
|
|
6003
|
-
'@pactor-app/cli': 1.
|
|
6004
|
-
'@pactor-app/core': 1.
|
|
6005
|
-
'@pactor-app/expression': 1.
|
|
6006
|
-
'@pactor-app/markdown': 1.
|
|
6007
|
-
'@pactor-app/permission': 1.
|
|
6008
|
-
'@pactor-app/resource': 1.
|
|
6009
|
-
'@pactor-app/router': 1.
|
|
6010
|
-
'@pactor-app/runtime': 1.
|
|
6011
|
-
'@pactor-app/schema': 1.
|
|
6012
|
-
'@pactor-app/ui': 1.
|
|
6013
|
-
'@pactor-app/vite-plugin': 1.
|
|
5999
|
+
pactor-app@1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)(vite@8.3.1(@types/node@20.19.43)(jiti@2.7.0)(yaml@2.9.1)):
|
|
6000
|
+
dependencies:
|
|
6001
|
+
'@pactor-app/app': 1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
6002
|
+
'@pactor-app/chat': 1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
6003
|
+
'@pactor-app/cli': 1.34.0
|
|
6004
|
+
'@pactor-app/core': 1.34.0
|
|
6005
|
+
'@pactor-app/expression': 1.34.0
|
|
6006
|
+
'@pactor-app/markdown': 1.34.0(@types/react@19.3.0)(react@19.2.8)
|
|
6007
|
+
'@pactor-app/permission': 1.34.0
|
|
6008
|
+
'@pactor-app/resource': 1.34.0
|
|
6009
|
+
'@pactor-app/router': 1.34.0(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
6010
|
+
'@pactor-app/runtime': 1.34.0(react@19.2.8)
|
|
6011
|
+
'@pactor-app/schema': 1.34.0
|
|
6012
|
+
'@pactor-app/ui': 1.34.0(@date-fns/tz@1.5.0)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react-router-dom@7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)
|
|
6013
|
+
'@pactor-app/vite-plugin': 1.34.0(vite@8.3.1(@types/node@20.19.43)(jiti@2.7.0)(yaml@2.9.1))
|
|
6014
6014
|
react: 19.2.8
|
|
6015
6015
|
react-dom: 19.2.8(react@19.2.8)
|
|
6016
6016
|
react-router-dom: 7.18.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
|
@@ -15,8 +15,9 @@ import { pactorComponents } from "./components";
|
|
|
15
15
|
* @pactor-app/app 内置;此处只提供:sitemap 源、宿主路由
|
|
16
16
|
* (pathname / navigate)、HTTP 钩子,以及页面 DSL 依赖的运行时支撑层——
|
|
17
17
|
* 自定义组件(components/)与调试台自定义动作(actions.ts)。
|
|
18
|
-
* 页面数据全部走 http 数据源(/api/
|
|
19
|
-
|
|
18
|
+
* 页面数据全部走 http 数据源(/api/d/*),经转发层
|
|
19
|
+
*(app/api/d/[...parts]/route.ts)原样转发到 serverBaseUrl(见 config.ts);
|
|
20
|
+
* 没有服务层接口时转发层返回空数据,页面按空态渲染。
|
|
20
21
|
*
|
|
21
22
|
* 登录 / 登出是普通 HTTP 调用,由 DSL 中的内置 request 动作直接表达
|
|
22
23
|
*(见 src/server/yaml/ 的登录页 / 布局 DSL),无需客户端注册服务。
|