@tutti-os/tutti-ops-cli 0.1.11 → 0.1.12
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.
|
@@ -22,13 +22,22 @@ const caseFields = {
|
|
|
22
22
|
};
|
|
23
23
|
const caseBody = (revision) => object({ ...caseFields, revision }, ['id', 'title', 'priority', 'steps', 'expectations']);
|
|
24
24
|
const result = object({ status: { type: 'string', enum: ['NOT_RUN', 'PASSED', 'FAILED', 'BLOCKED', 'SKIPPED'] }, actualResult: s, note: s, issueUrls: strings }, ['status']);
|
|
25
|
+
const syncBaseline = {
|
|
26
|
+
anyOf: [object({
|
|
27
|
+
repos: { type: 'object', additionalProperties: object({
|
|
28
|
+
sha: { type: 'string', pattern: '^\\s*[0-9a-fA-F]{40}\\s*$' }, branch: s,
|
|
29
|
+
}, ['sha']) },
|
|
30
|
+
batch: s, note: s,
|
|
31
|
+
}, ['repos']), { type: 'null' }],
|
|
32
|
+
description: 'Complete repository commit map. Server validates repository names/count and text limits, defaults branch to main, and assigns audit fields. Omitted/null preserves the existing baseline.',
|
|
33
|
+
};
|
|
25
34
|
export function registerTestManagement(api, workflow) {
|
|
26
35
|
const register = (command, access, method, path, data, params, extra) => api(`test-management ${command}`, access, method, `${TEST_MANAGEMENT_BASE}${path}`, data, params ?? scope(), { scope: 'brand', permission: `test_management:${access}`, source: 'tutti-admin-server internal/server/test_management_http.go', ...extra });
|
|
27
36
|
const list = (command, path, params = page()) => register(command, 'read', 'GET', path, undefined, params, { pagination });
|
|
28
37
|
list('modules list', '/modules');
|
|
29
38
|
register('modules get', 'read', 'GET', '/modules/{id}', undefined, scope({ id }));
|
|
30
|
-
register('modules create', 'write', 'POST', '/modules', object({ id, name: s, description: s, revision: zero }, ['id', 'name']));
|
|
31
|
-
register('modules update', 'write', 'PUT', '/modules/{id}', object({ id, name: s, description: s, revision: positive }, ['id', 'name', 'revision']), scope({ id }));
|
|
39
|
+
register('modules create', 'write', 'POST', '/modules', object({ id, name: s, description: s, revision: zero, syncBaseline }, ['id', 'name']));
|
|
40
|
+
register('modules update', 'write', 'PUT', '/modules/{id}', object({ id, name: s, description: s, revision: positive, syncBaseline }, ['id', 'name', 'revision']), scope({ id }));
|
|
32
41
|
register('modules delete', 'write', 'DELETE', '/modules/{id}', object({ revision: positive }, ['revision']), scope({ id }), { description: 'Delete an empty module at its current revision; archived cases also prevent deletion' });
|
|
33
42
|
list('cases list', '/cases', page({ moduleId: id, priority, archived: b, search: s }));
|
|
34
43
|
register('cases create', 'write', 'POST', '/cases', caseBody(zero));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testManagement.js","sourceRoot":"","sources":["../../src/operations/testManagement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAA4C,MAAM,kBAAkB,CAAC;AAK/G,MAAM,CAAC,MAAM,oBAAoB,GAAG,mCAAmC,CAAC;AACxE,MAAM,EAAE,GAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACzE,MAAM,QAAQ,GAAW,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC3F,MAAM,IAAI,GAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,MAAM,OAAO,GAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACpD,MAAM,QAAQ,GAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;AAC5E,MAAM,KAAK,GAAG,CAAC,SAAiC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACvG,MAAM,IAAI,GAAG,CAAC,SAAiC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC;IAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;IACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;IACvD,GAAG,MAAM;CACV,CAAC,CAAC;AACH,MAAM,UAAU,GAAyC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC7J,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAY;IAC7E,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5D,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO;IACpF,QAAQ,EAAE,CAAC;IACX,8EAA8E;IAC9E,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAY;CACnE,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AACjI,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"testManagement.js","sourceRoot":"","sources":["../../src/operations/testManagement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAA4C,MAAM,kBAAkB,CAAC;AAK/G,MAAM,CAAC,MAAM,oBAAoB,GAAG,mCAAmC,CAAC;AACxE,MAAM,EAAE,GAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACzE,MAAM,QAAQ,GAAW,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC3F,MAAM,IAAI,GAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,MAAM,OAAO,GAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACpD,MAAM,QAAQ,GAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;AAC5E,MAAM,KAAK,GAAG,CAAC,SAAiC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACvG,MAAM,IAAI,GAAG,CAAC,SAAiC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC;IAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;IACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;IACvD,GAAG,MAAM;CACV,CAAC,CAAC;AACH,MAAM,UAAU,GAAyC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC7J,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAY;IAC7E,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5D,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO;IACpF,QAAQ,EAAE,CAAC;IACX,8EAA8E;IAC9E,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAY;CACnE,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AACjI,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7K,MAAM,YAAY,GAAW;IAC3B,KAAK,EAAE,CAAC,MAAM,CAAC;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,CAAC;oBACpD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,MAAM,EAAE,CAAC;iBACzE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;YACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;SAClB,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAChC,WAAW,EAAE,2LAA2L;CACzM,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,GAAgB,EAAE,QAA0B;IACjF,MAAM,QAAQ,GAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CACvF,mBAAmB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,oBAAoB,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,EAAE,EACvG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,MAAM,EAAE,EAAE,MAAM,EAAE,4DAA4D,EAAE,GAAG,KAAK,EAAE,CAC5I,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,IAAY,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3I,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/I,QAAQ,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClL,QAAQ,CAAC,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,sFAAsF,EAAE,CAAC,CAAC;IACrO,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,CAAC,QAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,8GAA8G,EAAE,CAAC,CAAC;IAChN,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,0IAA0I,EAAE,CAAC,CAAC;IACtU,IAAI,CAAC,eAAe,EAAE,8BAA8B,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,wCAAwC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;IAClL,QAAQ,CAAC,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,6BAA6B,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,kGAAkG,EAAE,CAAC,CAAC;IAC9U,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,8EAA8E,EAAE,CAAC,CAAC;IACrS,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5E,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,uFAAuF,EAAE,CAAC,CAAC;IAC/O,QAAQ,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/H,QAAQ,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7K,IAAI,CAAC,iBAAiB,EAAE,sCAAsC,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACjG,QAAQ,CAAC,yBAAyB,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,EACnI,CAAC,8BAA8B,EAAE,sEAAsE,EAAE,sDAAsD,CAAC,EAAE,KAAK,EACvK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,EAAE,uCAAuC,EAAE,OAAO,EAAE,CAAC,yBAAyB,CAAC,EAAE,WAAW,EAAE,kFAAkF,EAAE,CAAC,CAAC;AACpP,CAAC"}
|
package/docs/test-management.md
CHANGED
|
@@ -19,7 +19,7 @@ tutti-ops schema test-management.versions.restore
|
|
|
19
19
|
| 命令 | read/write | 协议与边界 |
|
|
20
20
|
| --- | --- | --- |
|
|
21
21
|
| `modules list/get` | read | 模块元信息;get 使用 `--id` |
|
|
22
|
-
| `modules create/update/delete` | write |
|
|
22
|
+
| `modules create/update/delete` | write | 名称、说明及可选 syncBaseline;更新、删除携带当前 revision;删除仅允许无用例的模块,包括归档用例 |
|
|
23
23
|
| `cases list` | read | 原生 search、priority、archived、moduleId 过滤;默认查未归档用例 |
|
|
24
24
|
| `cases create/update/import` | write | 完整用例字段;update 携带当前 revision,可调整 moduleId 或 archived;import 使用 `{cases:[...]}` |
|
|
25
25
|
| `versions list/get` | read | `--module-id`;get 的 `--version` 是正整数路径字符串,返回完整历史快照 |
|
|
@@ -62,6 +62,28 @@ tutti-ops test-management versions get --brand-id brand-example \
|
|
|
62
62
|
|
|
63
63
|
## 并发、失败与发布
|
|
64
64
|
|
|
65
|
+
### 模块同步基准
|
|
66
|
+
|
|
67
|
+
`modules create/update` 接受可选 `syncBaseline`,`modules list/get` 原样返回该字段。仍使用现有模块 API 和权限,无新增 operation 或别名。依赖 admin-server 的同步基准字段部署,旧服务器可能忽略未知字段;成功写入后须 GET 回读确认,不能只看 HTTP 200。
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"id": "module-example", "name": "账号模块", "description": "当前说明", "revision": 10,
|
|
72
|
+
"syncBaseline": {
|
|
73
|
+
"repos": {"tutti-lab/tutti": {"sha": "073e06fc68c9ed1c0e6500bd3cdf9dc4f10fb3fe", "branch": "main"}},
|
|
74
|
+
"batch": "20261030-1", "note": "用例已写入并回读核对"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
保存为 `module.json` 后,通过 `modules update --brand-id <brand> --id module-example --data @module.json --dry-run` 预校验,确认后加 `--yes` 写入。必须重新 GET 当前名称、说明和 revision;PUT 替换模块元信息,不能用旧快照覆盖其他人的编辑。用例写入也提升模块 revision。
|
|
80
|
+
|
|
81
|
+
`repos` 每次提供完整映射,服务端校验 1–20 个 owner/repo、40 位 SHA,默认 branch=main;batch 最多 128 字、note 最多 500 字。CLI 校验嵌套字段、SHA 类型/格式,仓库名、数量与长度限制由服务端最终校验。`updatedBy/updatedAt` 为服务端审计字段,不作为 CLI 写入输入。省略或 null 保留原基准;不提供清空或历史接口。旧客户端改名仍兼容。
|
|
82
|
+
|
|
83
|
+
每个模块独立保存基准;不额外创建表,不把基准混入用例导出或模块版本历史。同步到固定 head 前,调用方应完成用例写入与回读核对。部分写入或结果未知时先读取模块,按 revision/目标内容判断,不能自动重放。
|
|
84
|
+
|
|
85
|
+
### 通用失败语义
|
|
86
|
+
|
|
65
87
|
列表接口采用原生 page/pageSize(1 起,最多 200)及 items/total,模块、用例、版本、计划、执行和结果历史均支持 page-all。中途失败或页数上限返回 exit 6 和已读数据,不宣称全量;列表多页不是冻结快照,完整模块导出应使用 `+export`。
|
|
66
88
|
|
|
67
89
|
修订冲突 exit 7 后重新读取当前 revision,不自动覆盖。恢复历史时保存相同 requestId;计划创建保存相同客户端 ID。写请求超时或 5xx 的结果可能未知,exit 6,查询业务状态后再决定恢复,不自动重放导入、计划或恢复请求。
|