openxiangda 1.0.261 → 1.0.263
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/README.md +1 -1
- package/lib/delivery-v2-package.js +17 -0
- package/openxiangda-skills/SKILL.md +2 -1
- package/openxiangda-skills/references/connector-resources.md +1 -1
- package/openxiangda-skills/references/openxiangda-api.md +9 -1
- package/openxiangda-skills/references/pages/page-sdk.md +3 -2
- package/openxiangda-skills/references/permissions-settings.md +8 -0
- package/openxiangda-skills/references/resource-manifest-cheatsheet.md +5 -2
- package/openxiangda-skills/references/school-contact-relations.md +40 -2
- package/openxiangda-skills/skills/openxiangda-page/SKILL.md +1 -1
- package/package.json +1 -1
- package/packages/sdk/dist/runtime/index.cjs +34 -34
- package/packages/sdk/dist/runtime/react.cjs +46 -46
- package/packages/sdk/dist/runtime/react.d.mts +13 -0
- package/packages/sdk/dist/runtime/react.d.ts +13 -0
- package/templates/openxiangda-react-spa/AGENTS.md +1 -1
- package/templates/sy-lowcode-app-workspace/AGENTS.md +1 -1
|
@@ -115,6 +115,8 @@ interface AppFunctionOperatorInfo {
|
|
|
115
115
|
email?: string | null;
|
|
116
116
|
tenantId?: string;
|
|
117
117
|
roleCodes?: string[];
|
|
118
|
+
/** Platform identity codes maintained by organization sync. */
|
|
119
|
+
platformRoleCodes?: string[];
|
|
118
120
|
currentRoleCode?: string | null;
|
|
119
121
|
currentRoleName?: string | null;
|
|
120
122
|
hasFullAccess?: boolean;
|
|
@@ -126,10 +128,13 @@ interface AppFunctionOperatorInfo {
|
|
|
126
128
|
interface PagePermissionInfo {
|
|
127
129
|
canView: boolean;
|
|
128
130
|
hasFullAccess: boolean;
|
|
131
|
+
/** Platform identity codes are additive to app role codes. */
|
|
132
|
+
platformRoleCodes?: string[];
|
|
129
133
|
[key: string]: unknown;
|
|
130
134
|
}
|
|
131
135
|
interface AppFunctionPermissionContext {
|
|
132
136
|
roleCodes?: string[];
|
|
137
|
+
platformRoleCodes?: string[];
|
|
133
138
|
currentRoleCode?: string | null;
|
|
134
139
|
currentRoleName?: string | null;
|
|
135
140
|
hasFullAccess?: boolean;
|
|
@@ -1142,6 +1147,7 @@ interface FormPermissionGroup {
|
|
|
1142
1147
|
name: string;
|
|
1143
1148
|
type: "submit" | "view";
|
|
1144
1149
|
roles: string[];
|
|
1150
|
+
platformRoleCodes?: string[];
|
|
1145
1151
|
dataScope?: "all" | "self";
|
|
1146
1152
|
operations?: string[];
|
|
1147
1153
|
actions?: string[];
|
|
@@ -1168,6 +1174,7 @@ interface CreateFormPermissionGroupDto {
|
|
|
1168
1174
|
name: string;
|
|
1169
1175
|
type: "submit" | "view";
|
|
1170
1176
|
roles: string[];
|
|
1177
|
+
platformRoleCodes?: string[];
|
|
1171
1178
|
dataScope?: "all" | "self";
|
|
1172
1179
|
operations?: string[];
|
|
1173
1180
|
actions?: string[];
|
|
@@ -1181,6 +1188,7 @@ interface UpdateFormPermissionGroupDto {
|
|
|
1181
1188
|
name?: string;
|
|
1182
1189
|
type?: "submit" | "view";
|
|
1183
1190
|
roles?: string[];
|
|
1191
|
+
platformRoleCodes?: string[];
|
|
1184
1192
|
dataScope?: "all" | "self";
|
|
1185
1193
|
operations?: string[];
|
|
1186
1194
|
fieldPermissions?: FieldPermissionDto[];
|
|
@@ -1200,6 +1208,7 @@ interface PagePermissionGroup {
|
|
|
1200
1208
|
appType: string;
|
|
1201
1209
|
name: string;
|
|
1202
1210
|
roles: string[];
|
|
1211
|
+
platformRoleCodes?: string[];
|
|
1203
1212
|
menuFormUuids: string[];
|
|
1204
1213
|
createdAt?: string;
|
|
1205
1214
|
updatedAt?: string;
|
|
@@ -1208,12 +1217,14 @@ interface CreatePagePermissionGroupDto {
|
|
|
1208
1217
|
appType: string;
|
|
1209
1218
|
name: string;
|
|
1210
1219
|
roles: string[];
|
|
1220
|
+
platformRoleCodes?: string[];
|
|
1211
1221
|
menuFormUuids: string[];
|
|
1212
1222
|
}
|
|
1213
1223
|
interface UpdatePagePermissionGroupDto {
|
|
1214
1224
|
appType?: string;
|
|
1215
1225
|
name?: string;
|
|
1216
1226
|
roles?: string[];
|
|
1227
|
+
platformRoleCodes?: string[];
|
|
1217
1228
|
menuFormUuids?: string[];
|
|
1218
1229
|
}
|
|
1219
1230
|
interface QueryPagePermissionGroupDto {
|
|
@@ -1226,6 +1237,7 @@ interface UserMenuPermissionsResponse {
|
|
|
1226
1237
|
appType: string;
|
|
1227
1238
|
menuFormUuids: string[];
|
|
1228
1239
|
hasFullAccess: boolean;
|
|
1240
|
+
platformRoleCodes?: string[];
|
|
1229
1241
|
}
|
|
1230
1242
|
type NotificationChannel = "inapp" | "email" | "dingding" | "wechat" | "thirdparty_todo";
|
|
1231
1243
|
interface SendNotificationByTypeParams {
|
|
@@ -2687,6 +2699,7 @@ interface RuntimePagePermissions {
|
|
|
2687
2699
|
appType: string;
|
|
2688
2700
|
hasFullAccess: boolean;
|
|
2689
2701
|
roleCodes: string[];
|
|
2702
|
+
platformRoleCodes?: string[];
|
|
2690
2703
|
roleSource?: string;
|
|
2691
2704
|
menuFormUuids: string[];
|
|
2692
2705
|
menuCodes: string[];
|
|
@@ -115,6 +115,8 @@ interface AppFunctionOperatorInfo {
|
|
|
115
115
|
email?: string | null;
|
|
116
116
|
tenantId?: string;
|
|
117
117
|
roleCodes?: string[];
|
|
118
|
+
/** Platform identity codes maintained by organization sync. */
|
|
119
|
+
platformRoleCodes?: string[];
|
|
118
120
|
currentRoleCode?: string | null;
|
|
119
121
|
currentRoleName?: string | null;
|
|
120
122
|
hasFullAccess?: boolean;
|
|
@@ -126,10 +128,13 @@ interface AppFunctionOperatorInfo {
|
|
|
126
128
|
interface PagePermissionInfo {
|
|
127
129
|
canView: boolean;
|
|
128
130
|
hasFullAccess: boolean;
|
|
131
|
+
/** Platform identity codes are additive to app role codes. */
|
|
132
|
+
platformRoleCodes?: string[];
|
|
129
133
|
[key: string]: unknown;
|
|
130
134
|
}
|
|
131
135
|
interface AppFunctionPermissionContext {
|
|
132
136
|
roleCodes?: string[];
|
|
137
|
+
platformRoleCodes?: string[];
|
|
133
138
|
currentRoleCode?: string | null;
|
|
134
139
|
currentRoleName?: string | null;
|
|
135
140
|
hasFullAccess?: boolean;
|
|
@@ -1142,6 +1147,7 @@ interface FormPermissionGroup {
|
|
|
1142
1147
|
name: string;
|
|
1143
1148
|
type: "submit" | "view";
|
|
1144
1149
|
roles: string[];
|
|
1150
|
+
platformRoleCodes?: string[];
|
|
1145
1151
|
dataScope?: "all" | "self";
|
|
1146
1152
|
operations?: string[];
|
|
1147
1153
|
actions?: string[];
|
|
@@ -1168,6 +1174,7 @@ interface CreateFormPermissionGroupDto {
|
|
|
1168
1174
|
name: string;
|
|
1169
1175
|
type: "submit" | "view";
|
|
1170
1176
|
roles: string[];
|
|
1177
|
+
platformRoleCodes?: string[];
|
|
1171
1178
|
dataScope?: "all" | "self";
|
|
1172
1179
|
operations?: string[];
|
|
1173
1180
|
actions?: string[];
|
|
@@ -1181,6 +1188,7 @@ interface UpdateFormPermissionGroupDto {
|
|
|
1181
1188
|
name?: string;
|
|
1182
1189
|
type?: "submit" | "view";
|
|
1183
1190
|
roles?: string[];
|
|
1191
|
+
platformRoleCodes?: string[];
|
|
1184
1192
|
dataScope?: "all" | "self";
|
|
1185
1193
|
operations?: string[];
|
|
1186
1194
|
fieldPermissions?: FieldPermissionDto[];
|
|
@@ -1200,6 +1208,7 @@ interface PagePermissionGroup {
|
|
|
1200
1208
|
appType: string;
|
|
1201
1209
|
name: string;
|
|
1202
1210
|
roles: string[];
|
|
1211
|
+
platformRoleCodes?: string[];
|
|
1203
1212
|
menuFormUuids: string[];
|
|
1204
1213
|
createdAt?: string;
|
|
1205
1214
|
updatedAt?: string;
|
|
@@ -1208,12 +1217,14 @@ interface CreatePagePermissionGroupDto {
|
|
|
1208
1217
|
appType: string;
|
|
1209
1218
|
name: string;
|
|
1210
1219
|
roles: string[];
|
|
1220
|
+
platformRoleCodes?: string[];
|
|
1211
1221
|
menuFormUuids: string[];
|
|
1212
1222
|
}
|
|
1213
1223
|
interface UpdatePagePermissionGroupDto {
|
|
1214
1224
|
appType?: string;
|
|
1215
1225
|
name?: string;
|
|
1216
1226
|
roles?: string[];
|
|
1227
|
+
platformRoleCodes?: string[];
|
|
1217
1228
|
menuFormUuids?: string[];
|
|
1218
1229
|
}
|
|
1219
1230
|
interface QueryPagePermissionGroupDto {
|
|
@@ -1226,6 +1237,7 @@ interface UserMenuPermissionsResponse {
|
|
|
1226
1237
|
appType: string;
|
|
1227
1238
|
menuFormUuids: string[];
|
|
1228
1239
|
hasFullAccess: boolean;
|
|
1240
|
+
platformRoleCodes?: string[];
|
|
1229
1241
|
}
|
|
1230
1242
|
type NotificationChannel = "inapp" | "email" | "dingding" | "wechat" | "thirdparty_todo";
|
|
1231
1243
|
interface SendNotificationByTypeParams {
|
|
@@ -2687,6 +2699,7 @@ interface RuntimePagePermissions {
|
|
|
2687
2699
|
appType: string;
|
|
2688
2700
|
hasFullAccess: boolean;
|
|
2689
2701
|
roleCodes: string[];
|
|
2702
|
+
platformRoleCodes?: string[];
|
|
2690
2703
|
roleSource?: string;
|
|
2691
2704
|
menuFormUuids: string[];
|
|
2692
2705
|
menuCodes: string[];
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
- 调查预算默认为一次覆盖完整调用链的 CodeGraph 查询,只有明确缺失符号时再补一次精确查询;普通任务只加载一个领域技能。租约、构建或部署状态未变化时不重复输出相同进度,使用 `openxiangda task status --watch` 等待状态变化。
|
|
18
18
|
- 账号、角色、权限、数据范围、组织账号、RBAC、查询参数授权需求必须先运行 `openxiangda design gates --topic permissions --json`,选择 `managed-platform-account` / `existing-platform-user-assignment` / `static-role-permission` / `query-param-context`,输出权限矩阵后再实现。
|
|
19
19
|
- 应用角色只读查询组织账号时声明 `app:organization:read`;创建、修改账号/部门或重置密码时声明 `app:organization:manage`。创建角色、分配成员或维护权限组也必须在角色资源的 `apiPermissionCodes` 声明对应的 `app:role:manage`、`app:page-permission-group:manage`、`app:form-permission-group:manage`。
|
|
20
|
-
-
|
|
20
|
+
- 家校关系页面调用 `sdk.organization.schoolContact.*`;已登录非游客用户无需绑定应用角色权限,默认范围是当前租户全部关系。只有明确需要本人或任教班级限制时才声明 `:self:read` / `:class:read`。
|
|
21
21
|
- 默认用户界面保持克制:左侧应用导航、顶部账号信息、首页内容区域。
|
|
22
22
|
- 不在默认可见页面展示 SDK、Runtime、Cookie、Proxy、Playwright、AI 验证、调试上下文、构建号等开发语言。
|
|
23
23
|
- 使用 React Router 管理路由,路由定义在 `src/app/router.tsx`。
|
|
@@ -51,7 +51,7 @@ Delivery V2 自动从期望状态按资源指纹计算精确范围,使用 CLI
|
|
|
51
51
|
- ✅ L2/L3 保留 context → propose → 用户确认 → approve;默认只创建 change/coverage/release,完整文档由 `sdd render` 按需生成。approval、coverage 与实际发布范围为硬门禁,未完成的任务/证据/规格文案只告警。需要严格文档门禁时显式配置 `strictDocumentation: true`。
|
|
52
52
|
- ✅ 涉及账号、角色、权限、数据范围、组织账号、RBAC、查询参数授权时,先跑 `openxiangda design gates --topic permissions --json`,选择 `managed-platform-account` / `existing-platform-user-assignment` / `static-role-permission` / `query-param-context`,并输出权限矩阵后再改资源。
|
|
53
53
|
- ✅ 某个应用角色如果要查询组织账号,声明 `app:organization:read`;如需创建、修改账号/部门或重置密码,再声明 `app:organization:manage`。角色设置、页面/表单权限组等能力同样通过 `src/resources/roles/<code>.json` 的 `apiPermissionCodes` 显式授权,例如 `app:role:manage`、`app:page-permission-group:manage`、`app:form-permission-group:manage`。
|
|
54
|
-
- ✅
|
|
54
|
+
- ✅ 查询家校通讯录的家长、学生、教师身份和监护关系时使用 `sdk.organization.schoolContact.*` / `ctx.organization.schoolContact.*`。已登录非游客用户无需绑定应用角色权限,默认查询当前租户全部关系;只有明确要求时才声明 `:self:read` 或 `:class:read` 收紧。
|
|
55
55
|
- ✅ 单文件改动默认按 change 和逻辑资源增量发布:`workspace plan --profile <name> --change <change> --changed`,再 `workspace publish --profile <name> --change <change> --only pages/a,forms/b --dry-run` → 正式发布。
|
|
56
56
|
- ✅ 用户 token 在 `~/.openxiangda/profiles.json`;项目 state 在 `.openxiangda/state.json`(只存 ID)。
|
|
57
57
|
- ✅ 共享环境(`APP_OSS_*`、反馈机器人等)在 `~/.openxiangda/.env`,项目 `.env` 仅做 per-workspace override。
|