openxiangda 2.60.1 → 2.61.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/dist/browser/application.d.ts +4 -2
- package/dist/browser/application.d.ts.map +1 -1
- package/dist/browser/application.js +2 -2
- package/dist/browser/application.js.map +1 -1
- package/dist/browser/components/platform-fields/MobileFieldLayout.d.ts +1 -1
- package/dist/browser/components/platform-fields/MobileFieldLayout.d.ts.map +1 -1
- package/dist/browser/components/platform-fields/MobileFieldLayout.js +3 -1
- package/dist/browser/components/platform-fields/MobileFieldLayout.js.map +1 -1
- package/dist/browser/components/platform-fields/RichTextField.d.ts +9 -2
- package/dist/browser/components/platform-fields/RichTextField.d.ts.map +1 -1
- package/dist/browser/components/platform-fields/RichTextField.js +119 -153
- package/dist/browser/components/platform-fields/RichTextField.js.map +1 -1
- package/dist/browser/components/platform-fields/rich-text-extensions.d.ts +5 -0
- package/dist/browser/components/platform-fields/rich-text-extensions.d.ts.map +1 -0
- package/dist/browser/components/platform-fields/rich-text-extensions.js +82 -0
- package/dist/browser/components/platform-fields/rich-text-extensions.js.map +1 -0
- package/dist/browser/components/platform-fields/rich-text-value.d.ts +5 -7
- package/dist/browser/components/platform-fields/rich-text-value.d.ts.map +1 -1
- package/dist/browser/components/platform-fields/rich-text-value.js +17 -79
- package/dist/browser/components/platform-fields/rich-text-value.js.map +1 -1
- package/dist/browser/components/resource/SurfaceFields.d.ts.map +1 -1
- package/dist/browser/components/resource/SurfaceFields.js +2 -2
- package/dist/browser/components/resource/SurfaceFields.js.map +1 -1
- package/dist/browser/components/workflow/StandardWorkflowPages.d.ts.map +1 -1
- package/dist/browser/components/workflow/StandardWorkflowPages.js +6 -17
- package/dist/browser/components/workflow/StandardWorkflowPages.js.map +1 -1
- package/dist/browser/components/workflow/workflow-detail-fields.d.ts +12 -0
- package/dist/browser/components/workflow/workflow-detail-fields.d.ts.map +1 -0
- package/dist/browser/components/workflow/workflow-detail-fields.js +25 -0
- package/dist/browser/components/workflow/workflow-detail-fields.js.map +1 -0
- package/dist/browser/styles.css +38 -0
- package/dist/browser/workflow-definitions.d.ts +17 -1
- package/dist/browser/workflow-definitions.d.ts.map +1 -1
- package/dist/browser/workflow-definitions.js +6 -2
- package/dist/browser/workflow-definitions.js.map +1 -1
- package/dist/field-kit.d.ts +1 -0
- package/dist/field-kit.d.ts.map +1 -1
- package/dist/field-kit.js +1 -0
- package/dist/field-kit.js.map +1 -1
- package/dist/rich-text.d.ts +3 -0
- package/dist/rich-text.d.ts.map +1 -0
- package/dist/rich-text.js +3 -0
- package/dist/rich-text.js.map +1 -0
- package/documentation/application-foundation.md +1 -1
- package/documentation/backend.md +14 -0
- package/documentation/field-components.md +37 -2
- package/documentation/getting-started.md +7 -7
- package/documentation/manifest.json +6 -6
- package/documentation/workflow-events.md +22 -1
- package/package.json +43 -24
- package/releases/2.20.1.json +30 -0
- package/releases/2.20.2.json +30 -0
- package/releases/2.20.3.json +29 -0
- package/releases/2.20.4.json +30 -0
- package/releases/2.31.5.json +33 -0
- package/releases/2.59.3.json +36 -0
- package/releases/2.61.0.json +39 -0
- package/skills/manifest.json +1 -1
- package/skills/openxiangda-v2/SKILL.md +4 -4
- package/skills/openxiangda-v2/references/application-foundation.md +1 -1
- package/skills/openxiangda-v2/references/backend.md +14 -0
- package/skills/openxiangda-v2/references/field-components.md +37 -2
- package/skills/openxiangda-v2/references/getting-started.md +7 -7
- package/skills/openxiangda-v2/references/workflow-events.md +22 -1
- package/releases/2.60.1.json +0 -35
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-detail-fields.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/workflow/workflow-detail-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,EAAE,YAAY,CAAC,EAAE;IAClF,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;CACpG;;;IAmBA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** Group only the readable detail surface; conditions cannot conceal old data. */
|
|
2
|
+
export function workflowDetailGroups(detail, presentation) {
|
|
3
|
+
const groups = new Map();
|
|
4
|
+
for (const key of detail.surface?.detail?.fieldOrder || []) {
|
|
5
|
+
const field = detail.surface?.fields[key];
|
|
6
|
+
if (!field || field.system === true)
|
|
7
|
+
continue;
|
|
8
|
+
const value = detail.record[key];
|
|
9
|
+
const empty = value === undefined || value === null || value === '' || (Array.isArray(value) && value.length === 0);
|
|
10
|
+
if (empty && !((detail.subtables[key]?.total ?? 0) > 0) && presentation?.behavior?.fieldVisibility) {
|
|
11
|
+
try {
|
|
12
|
+
if (presentation.behavior.fieldVisibility({ ...presentation.context,
|
|
13
|
+
resourceCode: detail.resourceCode, fieldCode: key, record: detail.record }) === false)
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// A presentation error must not make readable historical data disappear.
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const section = field.section || '申请信息';
|
|
21
|
+
groups.set(section, [...(groups.get(section) || []), { key, ...field }]);
|
|
22
|
+
}
|
|
23
|
+
return [...groups.entries()].map(([section, fields]) => ({ section, fields }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=workflow-detail-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-detail-fields.js","sourceRoot":"","sources":["../../../../src/browser/components/workflow/workflow-detail-fields.ts"],"names":[],"mappings":"AAIA,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,MAA8B,EAAE,YAGpE;IACC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACpH,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;YACnG,IAAI,CAAC;gBACH,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,YAAY,CAAC,OAAO;oBACjE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;oBAAE,SAAS;YACpG,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;YAC3E,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACjF,CAAC"}
|
package/dist/browser/styles.css
CHANGED
|
@@ -2362,6 +2362,25 @@
|
|
|
2362
2362
|
grid-template-columns: minmax(0, 1fr);
|
|
2363
2363
|
}
|
|
2364
2364
|
|
|
2365
|
+
.oxa-rich-text-fullscreen:popover-open {
|
|
2366
|
+
position: fixed;
|
|
2367
|
+
inset: 8px;
|
|
2368
|
+
margin: 0;
|
|
2369
|
+
width: calc(100% - 16px);
|
|
2370
|
+
height: calc(100dvh - 16px);
|
|
2371
|
+
box-sizing: border-box;
|
|
2372
|
+
padding: 12px;
|
|
2373
|
+
border: 1px solid var(--ant-color-border);
|
|
2374
|
+
background: var(--ant-color-bg-container);
|
|
2375
|
+
color: var(--ant-color-text);
|
|
2376
|
+
align-content: start;
|
|
2377
|
+
overflow: auto;
|
|
2378
|
+
}
|
|
2379
|
+
|
|
2380
|
+
.oxa-rich-text-fullscreen .oxa-rich-text-editor {
|
|
2381
|
+
min-height: 55dvh;
|
|
2382
|
+
}
|
|
2383
|
+
|
|
2365
2384
|
.oxa-rich-text-editor img,
|
|
2366
2385
|
.oxa-rich-text-value img {
|
|
2367
2386
|
height: auto;
|
|
@@ -3154,3 +3173,22 @@
|
|
|
3154
3173
|
.oxa-workflow-record-history-person { margin-top: 8px; }
|
|
3155
3174
|
.oxa-workflow-record-history[data-device="mobile"] button { min-height: 44px; }
|
|
3156
3175
|
.oxa-workflow-history-collapse { margin-top: 16px; }
|
|
3176
|
+
|
|
3177
|
+
/* Rich text styles are scoped; no host document reset. */
|
|
3178
|
+
.oxa-rich-text-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
|
|
3179
|
+
.oxa-rich-text-choice { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; }
|
|
3180
|
+
.oxa-rich-text-choice select { max-width: 140px; padding: 3px; }
|
|
3181
|
+
.oxa-rich-text-choice input[type="color"] { width: 26px; height: 26px; padding: 1px; }
|
|
3182
|
+
.oxa-rich-text-editor table, .oxa-rich-text-value table { border-collapse: collapse; max-width: 100%; table-layout: fixed; }
|
|
3183
|
+
.oxa-rich-text-editor td, .oxa-rich-text-editor th, .oxa-rich-text-value td, .oxa-rich-text-value th { border: 1px solid #d9d9d9; padding: 6px 8px; min-width: 40px; }
|
|
3184
|
+
.oxa-rich-text-editor .tableWrapper, .oxa-rich-text-value { overflow-x: auto; }
|
|
3185
|
+
.oxa-rich-text-editor .selectedCell { background: #e6f4ff; }
|
|
3186
|
+
.oxa-rich-text-editor .column-resize-handle { position: absolute; right: -2px; top: 0; bottom: 0; width: 4px; background: #1677ff; pointer-events: none; }
|
|
3187
|
+
.oxa-rich-text-editor td, .oxa-rich-text-editor th { position: relative; }
|
|
3188
|
+
.oxa-rich-text-editor video, .oxa-rich-text-value video { max-width: 100%; }
|
|
3189
|
+
.oxa-rich-text-editor ul[data-type="taskList"], .oxa-rich-text-value ul[data-type="taskList"] { list-style: none; padding-left: 8px; }
|
|
3190
|
+
.oxa-rich-text-editor li[data-type="taskItem"], .oxa-rich-text-value li[data-type="taskItem"] { display: flex; align-items: flex-start; gap: 8px; }
|
|
3191
|
+
.oxa-rich-text-editor li[data-type="taskItem"] > div, .oxa-rich-text-value li[data-type="taskItem"] > div { flex: 1; }
|
|
3192
|
+
.oxa-rich-text-editor pre, .oxa-rich-text-value pre { overflow-x: auto; background: #f5f5f5; padding: 12px; border-radius: 4px; }
|
|
3193
|
+
.oxa-mobile-rich-text-field .oxa-rich-text-toolbar { max-height: 160px; overflow-y: auto; }
|
|
3194
|
+
.oxa-mobile-rich-text-field .oxa-rich-text-toolbar button { min-height: 32px; }
|
|
@@ -72,12 +72,28 @@ export interface WorkflowTaskFormBehavior {
|
|
|
72
72
|
valueLinkage?: (changed: Readonly<JsonObject>, values: Readonly<JsonObject>, context: Readonly<WorkflowTaskFormLinkageContext>) => JsonObject;
|
|
73
73
|
}
|
|
74
74
|
export type WorkflowTaskFormBehaviors = Readonly<Record<string, WorkflowTaskFormBehavior>>;
|
|
75
|
-
export
|
|
75
|
+
export interface WorkflowDetailFieldContext {
|
|
76
|
+
workflowCode: string;
|
|
77
|
+
definitionVersion: number;
|
|
78
|
+
bindingVersion: number;
|
|
79
|
+
resourceCode: string | null;
|
|
80
|
+
fieldCode: string;
|
|
81
|
+
/** Only the platform's readable projection, never hidden record fields. */
|
|
82
|
+
record: Readonly<Record<string, unknown>>;
|
|
83
|
+
}
|
|
84
|
+
export interface WorkflowDetailBehavior {
|
|
85
|
+
/** Presentation only. False hides an empty field; historical values remain. */
|
|
86
|
+
fieldVisibility?: (context: Readonly<WorkflowDetailFieldContext>) => boolean | undefined;
|
|
87
|
+
}
|
|
88
|
+
export type WorkflowDetailBehaviors = Readonly<Record<string, WorkflowDetailBehavior>>;
|
|
89
|
+
export declare function OpenXiangdaWorkflowDefinitionsProvider({ children, definitions, taskForms, details, }: {
|
|
76
90
|
children: ReactNode;
|
|
77
91
|
definitions: StandardWorkflowDefinitionsInput;
|
|
78
92
|
taskForms?: WorkflowTaskFormBehaviors;
|
|
93
|
+
details?: WorkflowDetailBehaviors;
|
|
79
94
|
}): import("react/jsx-runtime").JSX.Element;
|
|
80
95
|
export declare function useWorkflowTaskFormBehavior(code: string): WorkflowTaskFormBehavior | undefined;
|
|
96
|
+
export declare function useWorkflowDetailBehavior(code: string): WorkflowDetailBehavior | undefined;
|
|
81
97
|
export declare function useWorkflowDefinitions(): ReadonlyMap<string, GeneratedWorkflowDefinition>;
|
|
82
98
|
export declare function useWorkflowDefinition(code: string): GeneratedWorkflowDefinition | undefined;
|
|
83
99
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-definitions.d.ts","sourceRoot":"","sources":["../../src/browser/workflow-definitions.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow-definitions.d.ts","sourceRoot":"","sources":["../../src/browser/workflow-definitions.tsx"],"names":[],"mappings":"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"}
|
|
@@ -59,13 +59,17 @@ export function normalizeWorkflowDefinitions(input) {
|
|
|
59
59
|
}
|
|
60
60
|
const WorkflowDefinitionsContext = createContext(new Map());
|
|
61
61
|
const WorkflowTaskFormsContext = createContext({});
|
|
62
|
-
|
|
62
|
+
const WorkflowDetailsContext = createContext({});
|
|
63
|
+
export function OpenXiangdaWorkflowDefinitionsProvider({ children, definitions, taskForms = {}, details = {}, }) {
|
|
63
64
|
const normalized = useMemo(() => normalizeWorkflowDefinitions(definitions), [definitions]);
|
|
64
|
-
return (_jsx(WorkflowDefinitionsContext.Provider, { value: normalized, children: _jsx(WorkflowTaskFormsContext.Provider, { value: taskForms, children: children }) }));
|
|
65
|
+
return (_jsx(WorkflowDefinitionsContext.Provider, { value: normalized, children: _jsx(WorkflowTaskFormsContext.Provider, { value: taskForms, children: _jsx(WorkflowDetailsContext.Provider, { value: details, children: children }) }) }));
|
|
65
66
|
}
|
|
66
67
|
export function useWorkflowTaskFormBehavior(code) {
|
|
67
68
|
return useContext(WorkflowTaskFormsContext)[code];
|
|
68
69
|
}
|
|
70
|
+
export function useWorkflowDetailBehavior(code) {
|
|
71
|
+
return useContext(WorkflowDetailsContext)[code];
|
|
72
|
+
}
|
|
69
73
|
export function useWorkflowDefinitions() {
|
|
70
74
|
return useContext(WorkflowDefinitionsContext);
|
|
71
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-definitions.js","sourceRoot":"","sources":["../../src/browser/workflow-definitions.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow-definitions.js","sourceRoot":"","sources":["../../src/browser/workflow-definitions.tsx"],"names":[],"mappings":"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"}
|
package/dist/field-kit.d.ts
CHANGED
|
@@ -26,4 +26,5 @@ export * from './browser/components/resource/ResourceFormFrame';
|
|
|
26
26
|
export * from './browser/components/resource/resource-import';
|
|
27
27
|
export { uploadOperationManagedFile } from './browser/platform-client';
|
|
28
28
|
export * from './browser/components/platform-fields/MobileFieldControls';
|
|
29
|
+
export { createRichTextExtensions } from './browser/components/platform-fields/rich-text-extensions';
|
|
29
30
|
//# sourceMappingURL=field-kit.d.ts.map
|
package/dist/field-kit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-kit.d.ts","sourceRoot":"","sources":["../src/field-kit.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,mDAAmD,CAAC;AAClE,cAAc,yDAAyD,CAAC;AACxE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yDAAyD,CAAC;AAC3F,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAChG,cAAc,gDAAgD,CAAC;AAC/D,cAAc,oDAAoD,CAAC;AACnE,cAAc,8DAA8D,CAAC;AAC7E,cAAc,2DAA2D,CAAC;AAC1E,cAAc,6DAA6D,CAAC;AAC5E,cAAc,6DAA6D,CAAC;AAC5E,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AACtE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,cAAc,0DAA0D,CAAC"}
|
|
1
|
+
{"version":3,"file":"field-kit.d.ts","sourceRoot":"","sources":["../src/field-kit.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,mDAAmD,CAAC;AAClE,cAAc,yDAAyD,CAAC;AACxE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yDAAyD,CAAC;AAC3F,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAChG,cAAc,gDAAgD,CAAC;AAC/D,cAAc,oDAAoD,CAAC;AACnE,cAAc,8DAA8D,CAAC;AAC7E,cAAc,2DAA2D,CAAC;AAC1E,cAAc,6DAA6D,CAAC;AAC5E,cAAc,6DAA6D,CAAC;AAC5E,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AACtE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,cAAc,0DAA0D,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC"}
|
package/dist/field-kit.js
CHANGED
|
@@ -25,4 +25,5 @@ export * from './browser/components/resource/ResourceFormFrame';
|
|
|
25
25
|
export * from './browser/components/resource/resource-import';
|
|
26
26
|
export { uploadOperationManagedFile } from './browser/platform-client';
|
|
27
27
|
export * from './browser/components/platform-fields/MobileFieldControls';
|
|
28
|
+
export { createRichTextExtensions } from './browser/components/platform-fields/rich-text-extensions';
|
|
28
29
|
//# sourceMappingURL=field-kit.js.map
|
package/dist/field-kit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-kit.js","sourceRoot":"","sources":["../src/field-kit.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,mDAAmD,CAAC;AAClE,cAAc,yDAAyD,CAAC;AACxE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yDAAyD,CAAC;AAC3F,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,oDAAoD,CAAC;AACnE,cAAc,8DAA8D,CAAC;AAC7E,cAAc,2DAA2D,CAAC;AAC1E,cAAc,6DAA6D,CAAC;AAC5E,cAAc,6DAA6D,CAAC;AAC5E,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AACtE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,cAAc,0DAA0D,CAAC"}
|
|
1
|
+
{"version":3,"file":"field-kit.js","sourceRoot":"","sources":["../src/field-kit.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,mDAAmD,CAAC;AAClE,cAAc,yDAAyD,CAAC;AACxE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yDAAyD,CAAC;AAC3F,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,oDAAoD,CAAC;AACnE,cAAc,8DAA8D,CAAC;AAC7E,cAAc,2DAA2D,CAAC;AAC1E,cAAc,6DAA6D,CAAC;AAC5E,cAAc,6DAA6D,CAAC;AAC5E,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AACtE,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,cAAc,0DAA0D,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../src/rich-text.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,cAAc,iCAAiC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../src/rich-text.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,cAAc,iCAAiC,CAAC"}
|
|
@@ -125,7 +125,7 @@ crud: [{
|
|
|
125
125
|
|
|
126
126
|
`hidden` 仅控制展示。`system` 表示由服务端维护,默认隐藏;业务需要展示的流水号、状态可显式 `hidden: false`。隐藏不会撤销 Data API 的读写授权;授权仍用现有字段 `access` 与行策略。普通必填字段不能从可新增表单中漏掉;内部必填值应有清晰的服务端赋值责任,不能靠隐藏字段绕过数据约束。
|
|
127
127
|
|
|
128
|
-
业务组件优先使用 `openxiangda/field-kit`,PC 补充使用 `antd`,移动端使用 `openxiangda/mobile` 封装的 Ant Design Mobile
|
|
128
|
+
业务组件优先使用 `openxiangda/field-kit`,PC 补充使用 `antd`,移动端使用 `openxiangda/mobile` 封装的 Ant Design Mobile 控件。移动控件已覆盖文本、长文本、数字、布尔、静态选项、日期时间,以及人员/部门目录、动态资源引用和级联选择。选择弹层支持逐层浏览、搜索、翻页和已选项管理,点击确定才写回表单,关闭放弃本次修改。附件、图片、地址、子表和签名已提供移动交互,富文本在手机使用完整格式编辑与统一安全 HTML 协议;能力边界见[字段组件](./field-components.md)。共享值协议和表单控制器,不共享桌面弹层交互。
|
|
129
129
|
|
|
130
130
|
```tsx
|
|
131
131
|
import { MobileSurface, Input, Button } from 'openxiangda/mobile';
|
package/documentation/backend.md
CHANGED
|
@@ -608,3 +608,17 @@ CAS与写后范围检查同事务执行。应用仍负责业务规则和字典gu
|
|
|
608
608
|
|
|
609
609
|
保存与核对共用同一operation,首次业务读取前先resolveOriginalCommand;not_observed只表示观察时未见回执,
|
|
610
610
|
不自动重试或换键。管理员资料修改不会重写已完成意见、已走路径或已派审批人,后续任务按平台原Native修订协议处理。
|
|
611
|
+
|
|
612
|
+
### 已选部门的实时解析
|
|
613
|
+
|
|
614
|
+
业务动作需要将部门选择器结果保存为业务快照时,声明
|
|
615
|
+
`platformAccess: { selectedDepartments: { fields: ['name', 'path', 'parent', 'fullPath'], maxIds: 8 } }`,
|
|
616
|
+
调用 `businessDirectory.selectedDepartments(ids)`。仅提交不重复的部门 ID;必须声明 `name`,
|
|
617
|
+
最多解析 50 个部门,返回值按输入顺序给出真实 `value`、`label` 及声明的可选路径字段。
|
|
618
|
+
目标平台需要 `directory.selected-departments` 1.0.0;编译器自动派生该能力。
|
|
619
|
+
|
|
620
|
+
此接口要求已验证的用户 Named Action,并复核发起人、环境 Head、租户及现有
|
|
621
|
+
`app:<appCode>:directory:read` 权限。部门范围沿平台现有部门选择器的租户及未删除关系,
|
|
622
|
+
没有新增独立的部门可见范围策略。任何部门不存在或已删除时,整组失败,不按姓名匹配,
|
|
623
|
+
不接受客户端标签,也不回退到应用内复制的组织表。`snapshotRevision` 描述返回事实,
|
|
624
|
+
`resolvedAt` 来自数据库时间;快照不能替代后续业务事务的权限检查。
|
|
@@ -320,8 +320,7 @@ ISO instant)与 `minuteStep`(1 到 60 且整除 60)。设置步长后只
|
|
|
320
320
|
- 子表单使用每页十行的行内字段,手机支持折叠、添加和删除;父表提交校验所有行,包括折叠及未显示页的行。分页保留完整输入和草稿,任务完成校验会定位到错误行所在页;有待处理上传时先完成或移除文件,再翻页。
|
|
321
321
|
权限、最大行数、原子事务和已存行的 revision 继续由原有资源契约约束。
|
|
322
322
|
- 签名在底部画布手写并保存;图片、签名和附件仍通过托管文件接口上传与鉴权读取。
|
|
323
|
-
-
|
|
324
|
-
段落 HTML,继续使用原有 `text.rich` 数据类型。
|
|
323
|
+
- 手机富文本使用同一 Tiptap 引擎和安全格式协议;工具栏支持触控和滚动,保留已有排版。
|
|
325
324
|
|
|
326
325
|
评分是整数的可选控件,默认五颗星,声明示例:
|
|
327
326
|
|
|
@@ -346,3 +345,39 @@ ISO instant)与 `minuteStep`(1 到 60 且整除 60)。设置步长后只
|
|
|
346
345
|
普通新建即使省略表也检查;编辑只检查本次提交的表。任务草稿/保存允许不足,
|
|
347
346
|
完成时对可见可写表检查最终行数,删除标记不算行。旧固定声明不隐式补造数据。
|
|
348
347
|
标准PC/移动表单显示下限并保留字段校验;应用可提供初始空行,平台不生成可信资料。
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
### 完整富文本与受管视频
|
|
351
|
+
|
|
352
|
+
`RichTextField` 默认采用 Tiptap / ProseMirror,支持标题、字体/字号、对齐、首行缩进、行高、
|
|
353
|
+
文字/背景色、基础强调、上下标、引用、代码、分隔线、列表/待办、表格、表情选择、撤销/重做与全屏编辑。
|
|
354
|
+
PC 和手机保存同一 HTML 字符串。平台 `data.rich-text` 能力和配套服务端必须先升级。
|
|
355
|
+
|
|
356
|
+
```tsx
|
|
357
|
+
import { RichTextField, RichTextValueDisplay, uploadOperationManagedFile } from 'openxiangda/field-kit';
|
|
358
|
+
<RichTextField resourceCode="articles" value={body} onChange={setBody}
|
|
359
|
+
onUpload={file => uploadOperationManagedFile({ operationCode: 'save-article', resourceCode: 'articles', fieldCode: 'body', intent: 'create', file })} />
|
|
360
|
+
<RichTextValueDisplay resourceCode="articles" value={body} />
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
具名动作声明 `managedFiles` 对应资源/富文本字段,普通 CRUD/任务页面沿用其上传适配器。
|
|
364
|
+
图片只支持 PNG/JPEG/WebP/GIF(每值20张,每张10MiB),视频只支持 MP4/WebM(每值4个,
|
|
365
|
+
每个100MiB;实际仍受租户存储上传额度限制)。服务器核验真实图片/视频容器,权限路由支持
|
|
366
|
+
Range 流式读取。无转码、外站视频、iframe 和自动播放;浏览器编解码器可能不同。
|
|
367
|
+
|
|
368
|
+
前端、写入和公开投影统一消费 `openxiangda-contracts/rich-text`;
|
|
369
|
+
应用浏览器及 Nest 通过 `openxiangda/rich-text` 使用相同无 DOM 规则,避免后端加载 UI 包。`sanitizeRichText` 用于展示,
|
|
370
|
+
`sanitizeRichTextHtml` 默认只接受 Native 受管媒体,`display:true` 才接受平台匿名公共媒体路径。
|
|
371
|
+
不要保存 blob、data、OSS 签名 URL,禁止关闭清洗。外部编辑器可以使用该协议,样式仍受
|
|
372
|
+
版本化白名单与数值上限约束。`createRichTextExtensions` 提供同一官方免费节点集合。
|
|
373
|
+
|
|
374
|
+
需要替换全部标准字段的编辑器时,使用 `RichTextEditorProvider` 注入
|
|
375
|
+
`ComponentType<RichTextFieldProps>`;自定义组件接收当前资源、字段、recordId、workflowBinding
|
|
376
|
+
及同一 onUpload/onChange/disabled/mobile。必须遵守统一清洗和受管文件协议。需要默认实现
|
|
377
|
+
时渲染 `DefaultRichTextField`,不要在 Provider 中递归调用 `RichTextField`。上传跨记录/字段
|
|
378
|
+
切换时丢弃旧完成回调,不将新文件插入另一个表单。
|
|
379
|
+
|
|
380
|
+
跨资源发布声明原有 `managedFileCopies` 的同型 `text.rich` 字段对,对每个媒体调用
|
|
381
|
+
`copyManagedFile`,收到 `succeeded` 回执后用 `sanitizeRichTextHtml(html, { rewriteMedia })` 重写为
|
|
382
|
+
目标资源的 canonical 路径,再执行业务事务。复制后源文件不变,目标独立引用并参与清理。
|
|
383
|
+
立即/定时发布共用同一服务动作;不能直接复用另一个资源的 file ID。
|
|
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
|
|
|
68
68
|
以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
|
-
pnpm dlx openxiangda@2.
|
|
72
|
-
pnpm dlx openxiangda@2.
|
|
73
|
-
pnpm dlx openxiangda@2.
|
|
74
|
-
pnpm dlx openxiangda@2.
|
|
71
|
+
pnpm dlx openxiangda@2.61.0 skill install --force
|
|
72
|
+
pnpm dlx openxiangda@2.61.0 auth status --base-url <平台地址> --json
|
|
73
|
+
pnpm dlx openxiangda@2.61.0 login --cwd my-app --base-url https://platform.example.com
|
|
74
|
+
pnpm dlx openxiangda@2.61.0 create my-app --base-url https://platform.example.com
|
|
75
75
|
cd my-app
|
|
76
76
|
pnpm openxiangda context --json
|
|
77
77
|
pnpm openxiangda dev
|
|
@@ -204,9 +204,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
|
|
|
204
204
|
无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
|
|
205
205
|
|
|
206
206
|
```bash
|
|
207
|
-
pnpm dlx openxiangda@2.
|
|
208
|
-
pnpm dlx openxiangda@2.
|
|
209
|
-
pnpm dlx openxiangda@2.
|
|
207
|
+
pnpm dlx openxiangda@2.61.0 auth status --base-url <平台> --json
|
|
208
|
+
pnpm dlx openxiangda@2.61.0 source resolve <仓库URL> --base-url <平台> --json
|
|
209
|
+
pnpm dlx openxiangda@2.61.0 source clone <仓库URL> <新目录> --base-url <平台> --json
|
|
210
210
|
```
|
|
211
211
|
|
|
212
212
|
登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "openxiangda.documentation/v1",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.61.0",
|
|
4
4
|
"topics": [
|
|
5
5
|
{
|
|
6
6
|
"id": "getting-started",
|
|
7
7
|
"title": "安装与开始开发",
|
|
8
8
|
"file": "getting-started.md",
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "58cda8012f4e570512ac4128a1208d0ff9a92a4f76993f48d4578dc9e86d8611"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"id": "product-design",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"id": "application-foundation",
|
|
43
43
|
"title": "业务模型与标准 CRUD",
|
|
44
44
|
"file": "application-foundation.md",
|
|
45
|
-
"sha256": "
|
|
45
|
+
"sha256": "fed292882cae449f0fed3fdcbd2878499a9a59f7a412d4776fd1c3a829203fa1"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"id": "appspec",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"id": "field-components",
|
|
67
67
|
"title": "字段、表单与移动控件",
|
|
68
68
|
"file": "field-components.md",
|
|
69
|
-
"sha256": "
|
|
69
|
+
"sha256": "5d76266c583e43bdeaa6af055c2c02df221e539e4578fbedbc71b5fdee1e9eb0"
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
"id": "data-authz",
|
|
@@ -84,13 +84,13 @@
|
|
|
84
84
|
"id": "workflow-events",
|
|
85
85
|
"title": "审批、事件与通知",
|
|
86
86
|
"file": "workflow-events.md",
|
|
87
|
-
"sha256": "
|
|
87
|
+
"sha256": "8e53cd8f7931346a8de2c34eed2421cbd9f5bf80e8470c8e0aa0e07f72283e5d"
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
"id": "backend",
|
|
91
91
|
"title": "按需后端与业务动作",
|
|
92
92
|
"file": "backend.md",
|
|
93
|
-
"sha256": "
|
|
93
|
+
"sha256": "e3ac14a8ba787947f6253792d0574c3a580b94c848cfca16c9a6cfb4d5d2382f"
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
"id": "agent-cards",
|
|
@@ -931,7 +931,7 @@ const readyFile = await completeWorkflowTaskFileUpload(taskId, input.id);
|
|
|
931
931
|
原 PNG 字节不改,仍受任务值1MiB限制。这些是业务采集信息,不代表平台认证的签署人、
|
|
932
932
|
可信时间或法律电子签章。
|
|
933
933
|
|
|
934
|
-
|
|
934
|
+
富文本保存统一清洗后的 HTML 和 Native 稳定受管图片/视频地址,支持最多20图(单图10MiB、100MP)、4个视频(MP4/WebM、单个100MiB)。视频通过同源任务文件路由流式读取,不下载完整 blob。
|
|
935
935
|
PC/手机保留格式、图片和前后文字;插图未知时锁住编辑,恢复采用原插入位置并只插入一次。
|
|
936
936
|
`blob:` 仅用于授权预览,不进入保存值。新任务签名/富文本图片完成时核验实际图片解码与
|
|
937
937
|
声明格式。完整值经 Native 校验后,草稿和正式审批共用排序文件锁、引用验证、保留期及事务。
|
|
@@ -1189,3 +1189,24 @@ subject update和来源guards提交实际改变的派生字段;普通补填仍
|
|
|
1189
1189
|
至周日7)。这只控制新选择,保留已有值,不能当成服务端提交门禁。
|
|
1190
1190
|
`formOptions.fieldHints(values)` 返回按已匹配字段的提示内容,用于时段或业务说明,
|
|
1191
1191
|
它不改变必填和数据;PC/手机均显示在字段旁。未知字段和无效约束阻止新表单。
|
|
1192
|
+
|
|
1193
|
+
### 详情的条件显示
|
|
1194
|
+
|
|
1195
|
+
`OpenXiangdaApplication` 的可选 `workflowDetails` 按流程编码提供详情展示规则:
|
|
1196
|
+
|
|
1197
|
+
```tsx
|
|
1198
|
+
<OpenXiangdaApplication {...applicationProps} workflowDetails={{
|
|
1199
|
+
'expense-request': { fieldVisibility: ({ fieldCode, record, definitionVersion }) => {
|
|
1200
|
+
if (definitionVersion !== 1 || !Object.hasOwn(record, 'expenseType')) return undefined;
|
|
1201
|
+
if (fieldCode === 'travelBudget') return record.expenseType === 'travel';
|
|
1202
|
+
return undefined;
|
|
1203
|
+
} },
|
|
1204
|
+
}} />
|
|
1205
|
+
```
|
|
1206
|
+
|
|
1207
|
+
复用应用已有的字段条件,条件依赖没有包含在可读投影中时返回 `undefined`。
|
|
1208
|
+
回调还可读取 `workflowCode`、`bindingVersion` 和 `resourceCode`。返回 `false`
|
|
1209
|
+
只省略空字段;已有文本、0、false、引用值和非空子表仍显示,避免隐藏历史内容。
|
|
1210
|
+
缺少规则、返回 `undefined` 或回调失败均保持原显示。PC/手机共用这一规则,
|
|
1211
|
+
最后一个字段被省略后对应空分组也消失。这是同步展示扩展,不发请求、不写数据,
|
|
1212
|
+
不改变字段授权、审批参数或流程版本;不提供该选项的应用保持既有行为。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openxiangda",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.61.0",
|
|
4
4
|
"description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,6 +26,10 @@
|
|
|
26
26
|
"types": "./dist/field-kit.d.ts",
|
|
27
27
|
"import": "./dist/field-kit.js"
|
|
28
28
|
},
|
|
29
|
+
"./rich-text": {
|
|
30
|
+
"types": "./dist/rich-text.d.ts",
|
|
31
|
+
"import": "./dist/rich-text.js"
|
|
32
|
+
},
|
|
29
33
|
"./react": {
|
|
30
34
|
"types": "./dist/react.d.ts",
|
|
31
35
|
"import": "./dist/react.js"
|
|
@@ -67,18 +71,29 @@
|
|
|
67
71
|
"@noble/hashes": "2.0.1",
|
|
68
72
|
"@rc-component/async-validator": "6.0.0",
|
|
69
73
|
"@rc-component/picker": "1.10.0",
|
|
74
|
+
"@tiptap/core": "3.31.4",
|
|
75
|
+
"@tiptap/extension-image": "3.31.4",
|
|
76
|
+
"@tiptap/extension-list": "3.31.4",
|
|
77
|
+
"@tiptap/extension-subscript": "3.31.4",
|
|
78
|
+
"@tiptap/extension-superscript": "3.31.4",
|
|
79
|
+
"@tiptap/extension-table": "3.31.4",
|
|
80
|
+
"@tiptap/extension-text-align": "3.31.4",
|
|
81
|
+
"@tiptap/extension-text-style": "3.31.4",
|
|
82
|
+
"@tiptap/pm": "3.31.4",
|
|
83
|
+
"@tiptap/react": "3.31.4",
|
|
84
|
+
"@tiptap/starter-kit": "3.31.4",
|
|
70
85
|
"@xyflow/react": "12.12.0",
|
|
71
86
|
"antd-mobile": "5.42.3",
|
|
72
87
|
"dayjs": "1.11.18",
|
|
73
88
|
"docx-preview": "0.3.7",
|
|
74
89
|
"elkjs": "0.12.0",
|
|
75
|
-
"openxiangda-cli": "2.8.
|
|
76
|
-
"openxiangda-contracts": "2.
|
|
77
|
-
"openxiangda-devkit-core": "2.
|
|
90
|
+
"openxiangda-cli": "2.8.8",
|
|
91
|
+
"openxiangda-contracts": "2.76.0",
|
|
92
|
+
"openxiangda-devkit-core": "2.57.1",
|
|
78
93
|
"openxiangda-legacy": "npm:openxiangda@1.0.269",
|
|
79
|
-
"openxiangda-mcp": "2.1.
|
|
80
|
-
"openxiangda-nest": "2.
|
|
81
|
-
"openxiangda-skill-kit": "2.3.
|
|
94
|
+
"openxiangda-mcp": "2.1.7",
|
|
95
|
+
"openxiangda-nest": "2.17.1",
|
|
96
|
+
"openxiangda-skill-kit": "2.3.98",
|
|
82
97
|
"xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
|
|
83
98
|
},
|
|
84
99
|
"peerDependencies": {
|
|
@@ -144,38 +159,42 @@
|
|
|
144
159
|
},
|
|
145
160
|
"openxiangdaRelease": {
|
|
146
161
|
"schemaVersion": "openxiangda.release-notes/v1",
|
|
147
|
-
"version": "2.
|
|
162
|
+
"version": "2.61.0",
|
|
148
163
|
"status": "reviewed",
|
|
149
|
-
"title": "OpenXiangda 2.
|
|
150
|
-
"summary": "
|
|
164
|
+
"title": "OpenXiangda 2.61.0:完整富文本与受管视频",
|
|
165
|
+
"summary": "PC 与移动富文本改用免费 MIT Tiptap 引擎,统一编辑、Native 写入和公开投影的 HTML5 安全规则,保留丰富排版并支持受管视频。本次同时物化既有主线待发布维护。",
|
|
151
166
|
"newFeatures": [
|
|
152
|
-
"
|
|
153
|
-
"
|
|
167
|
+
"支持字体、字号、行高、颜色、背景色、对齐、缩进、上下标、表格、待办列表、分割线、表情选择与全屏编辑。",
|
|
168
|
+
"受管 MP4/WebM 视频每个最高100MiB,每字段最多4个;图片最多20张、每张10MiB。配套平台以授权 Range 流式读取,复用现有跨资源复制回执。",
|
|
169
|
+
"应用可使用外部编辑器,但须消费同一安全协议;text.rich 自动要求 data.rich-text:1.0.0。",
|
|
170
|
+
"收录主线已有的独立角色容量512与标准工作流详情条件显示。"
|
|
154
171
|
],
|
|
155
172
|
"fixes": [
|
|
156
|
-
"
|
|
157
|
-
"
|
|
173
|
+
"避免前端、服务端与发布展示清洗白名单不同造成保存后格式丢失。",
|
|
174
|
+
"收录主线已有的移动已选值可访问描述与 selected-department 精确配套版本。"
|
|
158
175
|
],
|
|
159
176
|
"affectedUsers": [
|
|
160
|
-
"
|
|
177
|
+
"使用 V2 text.rich 的所有应用,以及需要视频、复杂排版和外部编辑器的开发者。"
|
|
161
178
|
],
|
|
162
179
|
"upgradeSteps": [
|
|
163
|
-
"
|
|
164
|
-
"
|
|
180
|
+
"先部署配套服务器并核验 data.rich-text 与 validatorDigest,再安装 openxiangda2.61.0/contracts2.76.0/devkit2.57.1/CLI2.8.8。",
|
|
181
|
+
"使用标准 RichTextField 与 RichTextValueDisplay;外部编辑器先统一清洗,上传与跨资源发布使用官方受管文件接口。",
|
|
182
|
+
"刷新同版本技能,验证保存、回填及立即/定时发布后晋级原成功测试制品。"
|
|
165
183
|
],
|
|
166
184
|
"knownLimitations": [
|
|
167
|
-
"
|
|
168
|
-
"
|
|
169
|
-
"
|
|
185
|
+
"不支持外部视频、iframe、自动播放、转码或任意 CSS;容器支持不保证所有客户端编解码器可播放。",
|
|
186
|
+
"HTML 限1MiB,解析树限制25000节点与128层;上传还受平台原存储限额约束。",
|
|
187
|
+
"新格式保存后回退旧服务端可能在下次写入丢格式;回滚编辑器时保留新版清洗与读取规则。",
|
|
188
|
+
"本地真实浏览器与受控服务测试不替代学校业务角色及发布链路验收。"
|
|
170
189
|
],
|
|
171
190
|
"compatibility": {
|
|
172
191
|
"node": ">=24",
|
|
173
|
-
"platform": "
|
|
174
|
-
"v1": "V1
|
|
192
|
+
"platform": "配套 rich-text-html/1、data.rich-text:1.0.0 与相同 contracts validatorDigest;无新增 SQL。",
|
|
193
|
+
"v1": "V1 运行时和编辑器保持独立,不消费新增 V2 规则。"
|
|
175
194
|
},
|
|
176
195
|
"issues": [],
|
|
177
|
-
"sha256": "
|
|
178
|
-
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.
|
|
196
|
+
"sha256": "aece510083f6d6b04ae4c62410631e99824718072c64cfb1ab605970889d065d",
|
|
197
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.61.0"
|
|
179
198
|
},
|
|
180
199
|
"scripts": {
|
|
181
200
|
"build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "openxiangda.release-notes/v1",
|
|
3
|
+
"version": "2.20.1",
|
|
4
|
+
"status": "reviewed",
|
|
5
|
+
"title": "OpenXiangda 2.20.1:contracts 资源级审计列排序修复",
|
|
6
|
+
"summary": "openxiangda-contracts 修复资源级 surface list defaultSort 对平台审计列(created_at/updated_at 等)的 fail-closed 误拒:与命名视图 defaultSort、Data API order 的系统列规则对齐。devkit 与 openxiangda 2.20.0 已含的行为不变。",
|
|
7
|
+
"newFeatures": [
|
|
8
|
+
"资源级 surface list defaultSort 支持平台审计列(created_at/updated_at/created_by/updated_by/id/revision),不再按未知字段 fail-closed;补回归测试。"
|
|
9
|
+
],
|
|
10
|
+
"fixes": [],
|
|
11
|
+
"affectedUsers": [
|
|
12
|
+
"所有使用数据策略、行级权限、匿名公开访问的 OpenXiangda 2.0 应用开发者与 AI 开发会话。"
|
|
13
|
+
],
|
|
14
|
+
"upgradeSteps": [
|
|
15
|
+
"应用把 openxiangda 精确钉扎到 2.20.0 并重跑 pnpm openxiangda check;出现新告警/报错时按提示调整策略声明。",
|
|
16
|
+
"使用 created_by 行规则需平台服务端配套版本;升级前请确认平台列车已包含该修复。"
|
|
17
|
+
],
|
|
18
|
+
"knownLimitations": [
|
|
19
|
+
"created_by 行规则的运行时 WITH CHECK 正向匹配修复仍随平台列车交付。"
|
|
20
|
+
],
|
|
21
|
+
"issues": [],
|
|
22
|
+
"compatibility": {
|
|
23
|
+
"node": ">=24",
|
|
24
|
+
"workspaceGenerations": "v2",
|
|
25
|
+
"platform": "无强制平台配合要求;created_by 行规则的运行时生效需平台列车跟进。",
|
|
26
|
+
"v1": "V1 工作区不受影响。"
|
|
27
|
+
},
|
|
28
|
+
"sha256": "043a0bdb2615be80b4efff4a9f2e58107965e261e9294050a1decee22a6b7e6c",
|
|
29
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.20.1"
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "openxiangda.release-notes/v1",
|
|
3
|
+
"version": "2.20.2",
|
|
4
|
+
"status": "reviewed",
|
|
5
|
+
"title": "OpenXiangda 2.20.2:应用制品断线去重修复",
|
|
6
|
+
"summary": "Devkit 按平台制品收据的规范分类复用已验证的 Application v2 制品。修复 frontend/config/contracts/manifest 在平台已有相同摘要时仍重复完整上传的问题,保持 AppPackage 字节、权限和部署状态的原有权威边界。",
|
|
7
|
+
"newFeatures": [],
|
|
8
|
+
"fixes": [
|
|
9
|
+
"断线恢复时,仅在摘要、平台规范分类、Content-Type 和字节大小都匹配时复用已存制品;已存的大前端制品不再重复上传。"
|
|
10
|
+
],
|
|
11
|
+
"affectedUsers": [
|
|
12
|
+
"经慢速或易断网络向支持 Application v2 制品收据的私有平台部署应用的 OpenXiangda 2.0 开发者。"
|
|
13
|
+
],
|
|
14
|
+
"upgradeSteps": [
|
|
15
|
+
"将应用钉扎的 openxiangda-devkit-core 更新到 2.18.2,并按锁文件安装;如统一入口也被钉扎则升级到 openxiangda 2.20.2。",
|
|
16
|
+
"先回读原 DeploymentRun 和环境 Head;若此前失败仅发生在制品上传且无新运行,按 CLI 的可重试指针从原候选执行 deploy。"
|
|
17
|
+
],
|
|
18
|
+
"knownLimitations": [
|
|
19
|
+
"平台尚未存储的制品仍需完整上传;本修复不能改善首次传输的链路速度或替代真实角色、CAS、人事与通知业务验收。"
|
|
20
|
+
],
|
|
21
|
+
"issues": [],
|
|
22
|
+
"compatibility": {
|
|
23
|
+
"node": ">=24",
|
|
24
|
+
"workspaceGenerations": "v2",
|
|
25
|
+
"platform": "复用需要平台 Application v2 GET 制品收据返回规范分类、摘要、媒体类型和字节大小;无新数据库迁移。",
|
|
26
|
+
"v1": "V1 工作区与维护引擎不受影响。"
|
|
27
|
+
},
|
|
28
|
+
"sha256": "f5a6101d822234b7f1bf093c878692b94144f64dd829e99e72dc241780d5909e",
|
|
29
|
+
"url": "https://github.com/1377385356/openxiangda/releases/tag/v2.20.2"
|
|
30
|
+
}
|