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.
@@ -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
- - 家校关系页面声明 `app:organization:school-contact:read` 并调用 `sdk.organization.schoolContact.*`;默认范围是当前租户全部关系。只有明确需要本人或任教班级限制时才改用 `:self:read` / `:class:read`。
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
- - ✅ 查询家校通讯录的家长、学生、教师身份和监护关系时声明 `app:organization:school-contact:read`,并使用 `sdk.organization.schoolContact.*` / `ctx.organization.schoolContact.*`。该权限默认查询当前租户全部关系;只有明确要求时才改用 `:self:read` 或 `:class:read` 收紧。
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。