@sun-asterisk/sungen 3.2.15 → 3.2.16-beta.2

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.
Files changed (89) hide show
  1. package/dist/cli/commands/delivery.d.ts.map +1 -1
  2. package/dist/cli/commands/delivery.js +139 -1
  3. package/dist/cli/commands/delivery.js.map +1 -1
  4. package/dist/dashboard/templates/index.html +1 -1
  5. package/dist/exporters/feature-parser.js +1 -1
  6. package/dist/exporters/feature-parser.js.map +1 -1
  7. package/dist/exporters/matrix/build.d.ts +43 -0
  8. package/dist/exporters/matrix/build.d.ts.map +1 -0
  9. package/dist/exporters/matrix/build.js +403 -0
  10. package/dist/exporters/matrix/build.js.map +1 -0
  11. package/dist/exporters/matrix/export.d.ts +49 -0
  12. package/dist/exporters/matrix/export.d.ts.map +1 -0
  13. package/dist/exporters/matrix/export.js +143 -0
  14. package/dist/exporters/matrix/export.js.map +1 -0
  15. package/dist/exporters/matrix/fingerprint.d.ts +20 -0
  16. package/dist/exporters/matrix/fingerprint.d.ts.map +1 -0
  17. package/dist/exporters/matrix/fingerprint.js +83 -0
  18. package/dist/exporters/matrix/fingerprint.js.map +1 -0
  19. package/dist/exporters/matrix/gates.d.ts +21 -0
  20. package/dist/exporters/matrix/gates.d.ts.map +1 -0
  21. package/dist/exporters/matrix/gates.js +295 -0
  22. package/dist/exporters/matrix/gates.js.map +1 -0
  23. package/dist/exporters/matrix/map-loader.d.ts +22 -0
  24. package/dist/exporters/matrix/map-loader.d.ts.map +1 -0
  25. package/dist/exporters/matrix/map-loader.js +191 -0
  26. package/dist/exporters/matrix/map-loader.js.map +1 -0
  27. package/dist/exporters/matrix/render-csv.d.ts +9 -0
  28. package/dist/exporters/matrix/render-csv.d.ts.map +1 -0
  29. package/dist/exporters/matrix/render-csv.js +89 -0
  30. package/dist/exporters/matrix/render-csv.js.map +1 -0
  31. package/dist/exporters/matrix/render-xlsx.d.ts +25 -0
  32. package/dist/exporters/matrix/render-xlsx.d.ts.map +1 -0
  33. package/dist/exporters/matrix/render-xlsx.js +362 -0
  34. package/dist/exporters/matrix/render-xlsx.js.map +1 -0
  35. package/dist/exporters/matrix/types.d.ts +175 -0
  36. package/dist/exporters/matrix/types.d.ts.map +1 -0
  37. package/dist/exporters/matrix/types.js +15 -0
  38. package/dist/exporters/matrix/types.js.map +1 -0
  39. package/dist/exporters/matrix/wording.d.ts +45 -0
  40. package/dist/exporters/matrix/wording.d.ts.map +1 -0
  41. package/dist/exporters/matrix/wording.js +150 -0
  42. package/dist/exporters/matrix/wording.js.map +1 -0
  43. package/dist/exporters/scenario-merger.js +1 -1
  44. package/dist/exporters/scenario-merger.js.map +1 -1
  45. package/dist/exporters/spec-parser.js +1 -1
  46. package/dist/exporters/spec-parser.js.map +1 -1
  47. package/dist/exporters/xlsx-report-builder.d.ts +1 -1
  48. package/dist/exporters/xlsx-report-builder.d.ts.map +1 -1
  49. package/dist/exporters/xlsx-report-builder.js +3 -3
  50. package/dist/exporters/xlsx-report-builder.js.map +1 -1
  51. package/dist/harness/audit.d.ts.map +1 -1
  52. package/dist/harness/audit.js +6 -1
  53. package/dist/harness/audit.js.map +1 -1
  54. package/dist/harness/capability.d.ts +25 -0
  55. package/dist/harness/capability.d.ts.map +1 -1
  56. package/dist/harness/capability.js +44 -2
  57. package/dist/harness/capability.js.map +1 -1
  58. package/dist/orchestrator/templates/ai-src/commands/create-test.md +1 -1
  59. package/dist/orchestrator/templates/ai-src/commands/delivery.md +144 -120
  60. package/dist/orchestrator/templates/ai-src/config/claude.md +1 -1
  61. package/dist/orchestrator/templates/ai-src/config/copilot.md +1 -1
  62. package/dist/orchestrator/templates/ai-src/skills/sungen-delivery/SKILL.md +59 -6
  63. package/dist/orchestrator/templates/ai-src/skills/sungen-harness-audit/SKILL.md +1 -1
  64. package/dist/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +1 -0
  65. package/package.json +4 -4
  66. package/src/cli/commands/delivery.ts +169 -2
  67. package/src/dashboard/templates/index.html +1 -1
  68. package/src/exporters/feature-parser.ts +1 -1
  69. package/src/exporters/matrix/build.ts +432 -0
  70. package/src/exporters/matrix/export.ts +134 -0
  71. package/src/exporters/matrix/fingerprint.ts +49 -0
  72. package/src/exporters/matrix/gates.ts +325 -0
  73. package/src/exporters/matrix/map-loader.ts +161 -0
  74. package/src/exporters/matrix/render-csv.ts +91 -0
  75. package/src/exporters/matrix/render-xlsx.ts +356 -0
  76. package/src/exporters/matrix/types.ts +202 -0
  77. package/src/exporters/matrix/wording.ts +157 -0
  78. package/src/exporters/scenario-merger.ts +1 -1
  79. package/src/exporters/spec-parser.ts +1 -1
  80. package/src/exporters/xlsx-report-builder.ts +3 -2
  81. package/src/harness/audit.ts +7 -2
  82. package/src/harness/capability.ts +53 -3
  83. package/src/orchestrator/templates/ai-src/commands/create-test.md +1 -1
  84. package/src/orchestrator/templates/ai-src/commands/delivery.md +144 -120
  85. package/src/orchestrator/templates/ai-src/config/claude.md +1 -1
  86. package/src/orchestrator/templates/ai-src/config/copilot.md +1 -1
  87. package/src/orchestrator/templates/ai-src/skills/sungen-delivery/SKILL.md +59 -6
  88. package/src/orchestrator/templates/ai-src/skills/sungen-harness-audit/SKILL.md +1 -1
  89. package/src/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +1 -0
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ /**
3
+ * Delivery Map loader — `qa/<kind>/<unit>/delivery/<unit>.map.yaml`.
4
+ *
5
+ * Structural validation only (shape, required fields, enum values, duplicate ids).
6
+ * Semantic validation against the .feature is the gates' job (gates.ts) — the loader
7
+ * never reads the feature.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.mapFilePath = mapFilePath;
44
+ exports.loadDeliveryMap = loadDeliveryMap;
45
+ exports.writeDeliveryMap = writeDeliveryMap;
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const yaml_1 = require("yaml");
49
+ const CATEGORIES = ['normal', 'abnormal', 'security', 'nfr'];
50
+ const REVIEW_STATES = ['proposed', 'approved'];
51
+ const DISPOSITIONS = ['excluded', 'blocked', 'covered_elsewhere', 'accepted_risk'];
52
+ const REQUIREMENT_STATUSES = ['covered', 'partially_covered', 'covered_elsewhere', 'planned', 'gap', 'not_applicable'];
53
+ /** Path of the map file for a unit directory (qa/<kind>/<screen>) + feature basename. */
54
+ function mapFilePath(unitDir, featureBaseName) {
55
+ return path.join(unitDir, 'delivery', `${featureBaseName}.map.yaml`);
56
+ }
57
+ function loadDeliveryMap(file) {
58
+ if (!fs.existsSync(file))
59
+ return { map: null, errors: [] };
60
+ const errors = [];
61
+ let raw;
62
+ try {
63
+ raw = (0, yaml_1.parse)(fs.readFileSync(file, 'utf-8'));
64
+ }
65
+ catch (e) {
66
+ return { map: null, errors: [`map YAML does not parse: ${e instanceof Error ? e.message : e}`] };
67
+ }
68
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
69
+ return { map: null, errors: ['map root must be a YAML mapping'] };
70
+ }
71
+ const doc = raw;
72
+ const groups = [];
73
+ const seenIds = new Set();
74
+ const rawGroups = doc.groups;
75
+ if (!Array.isArray(rawGroups) || rawGroups.length === 0) {
76
+ errors.push('map has no `groups` list');
77
+ }
78
+ else {
79
+ rawGroups.forEach((g, i) => {
80
+ if (!g || typeof g !== 'object') {
81
+ errors.push(`groups[${i}] is not a mapping`);
82
+ return;
83
+ }
84
+ const grp = g;
85
+ const where = `groups[${i}]${typeof grp.id === 'string' ? ` (${grp.id})` : ''}`;
86
+ for (const field of ['id', 'target', 'intent', 'oracle']) {
87
+ if (typeof grp[field] !== 'string' || !grp[field].trim()) {
88
+ errors.push(`${where}: missing/empty \`${field}\``);
89
+ }
90
+ }
91
+ if (!CATEGORIES.includes(grp.category)) {
92
+ errors.push(`${where}: \`category\` must be one of ${CATEGORIES.join(' | ')}`);
93
+ }
94
+ const review = (grp.review ?? 'proposed');
95
+ if (!REVIEW_STATES.includes(review)) {
96
+ errors.push(`${where}: \`review\` must be proposed | approved`);
97
+ }
98
+ const variants = grp.variants;
99
+ if (!Array.isArray(variants) || variants.length === 0 || variants.some((v) => typeof v !== 'string' || !v.trim())) {
100
+ errors.push(`${where}: \`variants\` must be a non-empty list of VP refs`);
101
+ }
102
+ const id = String(grp.id ?? '');
103
+ if (id) {
104
+ if (seenIds.has(id))
105
+ errors.push(`duplicate group id \`${id}\``);
106
+ seenIds.add(id);
107
+ }
108
+ groups.push({
109
+ id,
110
+ target: String(grp.target ?? ''),
111
+ intent: String(grp.intent ?? ''),
112
+ oracle: String(grp.oracle ?? ''),
113
+ category: grp.category,
114
+ review,
115
+ variants: Array.isArray(variants) ? variants.map(String) : [],
116
+ });
117
+ });
118
+ }
119
+ const dispositions = {};
120
+ if (doc.dispositions !== undefined) {
121
+ if (!doc.dispositions || typeof doc.dispositions !== 'object' || Array.isArray(doc.dispositions)) {
122
+ errors.push('`dispositions` must be a mapping of VP-id → { as, reason }');
123
+ }
124
+ else {
125
+ for (const [vpId, d] of Object.entries(doc.dispositions)) {
126
+ const dd = (d && typeof d === 'object' ? d : {});
127
+ if (!DISPOSITIONS.includes(String(dd.as))) {
128
+ errors.push(`dispositions.${vpId}: \`as\` must be one of ${DISPOSITIONS.join(' | ')}`);
129
+ }
130
+ dispositions[vpId] = { as: dd.as, reason: dd.reason ? String(dd.reason) : undefined };
131
+ }
132
+ }
133
+ }
134
+ const requirements = {};
135
+ if (doc.requirements !== undefined) {
136
+ if (!doc.requirements || typeof doc.requirements !== 'object' || Array.isArray(doc.requirements)) {
137
+ errors.push('`requirements` must be a mapping of requirement-id → { status, note }');
138
+ }
139
+ else {
140
+ for (const [reqId, r] of Object.entries(doc.requirements)) {
141
+ const rr = (r && typeof r === 'object' ? r : {});
142
+ if (!REQUIREMENT_STATUSES.includes(String(rr.status))) {
143
+ errors.push(`requirements.${reqId}: \`status\` must be one of ${REQUIREMENT_STATUSES.join(' | ')}`);
144
+ }
145
+ requirements[reqId] = { status: rr.status, note: rr.note ? String(rr.note) : undefined };
146
+ }
147
+ }
148
+ }
149
+ const fingerprints = {};
150
+ if (doc.fingerprints && typeof doc.fingerprints === 'object' && !Array.isArray(doc.fingerprints)) {
151
+ for (const [k, v] of Object.entries(doc.fingerprints)) {
152
+ fingerprints[k] = String(v);
153
+ }
154
+ }
155
+ const map = {
156
+ version: Number(doc.version ?? 1),
157
+ unit: String(doc.unit ?? ''),
158
+ formNo: doc.form_no !== undefined ? String(doc.form_no) : undefined,
159
+ groups,
160
+ dispositions,
161
+ requirements,
162
+ fingerprints,
163
+ };
164
+ return { map: errors.length > 0 ? null : map, errors };
165
+ }
166
+ /**
167
+ * Write the map back (used by `--approve` to flip review states + stamp fingerprints).
168
+ * Field order is kept stable so approve-diffs stay minimal and reviewable.
169
+ */
170
+ function writeDeliveryMap(file, map) {
171
+ const doc = {
172
+ version: map.version,
173
+ unit: map.unit,
174
+ ...(map.formNo !== undefined ? { form_no: map.formNo } : {}),
175
+ groups: map.groups.map((g) => ({
176
+ id: g.id,
177
+ target: g.target,
178
+ intent: g.intent,
179
+ oracle: g.oracle,
180
+ category: g.category,
181
+ review: g.review,
182
+ variants: g.variants,
183
+ })),
184
+ ...(Object.keys(map.dispositions).length > 0 ? { dispositions: map.dispositions } : {}),
185
+ ...(Object.keys(map.requirements).length > 0 ? { requirements: map.requirements } : {}),
186
+ ...(Object.keys(map.fingerprints).length > 0 ? { fingerprints: map.fingerprints } : {}),
187
+ };
188
+ fs.mkdirSync(path.dirname(file), { recursive: true });
189
+ fs.writeFileSync(file, (0, yaml_1.stringify)(doc, { lineWidth: 0 }), 'utf-8');
190
+ }
191
+ //# sourceMappingURL=map-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-loader.js","sourceRoot":"","sources":["../../../src/exporters/matrix/map-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Flat CSV rendering of the matrix — same model as the workbook, one row per
3
+ * delivery item (`Level: item`) followed by its variant rows (`Level: variant`;
4
+ * every item has them — the variant row carries the source scenario id, data,
5
+ * and result), so downstream pipelines can re-derive both views from one file.
6
+ */
7
+ import { MatrixModel } from './types';
8
+ export declare function renderMatrixCsv(model: MatrixModel): string;
9
+ //# sourceMappingURL=render-csv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-csv.d.ts","sourceRoot":"","sources":["../../../src/exporters/matrix/render-csv.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAoBtC,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA6D1D"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Flat CSV rendering of the matrix — same model as the workbook, one row per
4
+ * delivery item (`Level: item`) followed by its variant rows (`Level: variant`;
5
+ * every item has them — the variant row carries the source scenario id, data,
6
+ * and result), so downstream pipelines can re-derive both views from one file.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.renderMatrixCsv = renderMatrixCsv;
10
+ const playwright_report_parser_1 = require("../playwright-report-parser");
11
+ const render_xlsx_1 = require("./render-xlsx");
12
+ const HEADERS = [
13
+ 'Level', 'ID', 'Target', 'Test Intent / Condition', 'Category', 'Priority',
14
+ 'Precondition', 'Coverage / Test Data', 'Action / Trigger', 'Expected Result',
15
+ 'Mode', 'Trace', 'Result', 'Executed Date', 'Note',
16
+ ];
17
+ function esc(value) {
18
+ if (/[",\n]/.test(value))
19
+ return `"${value.replace(/"/g, '""')}"`;
20
+ return value;
21
+ }
22
+ function isoDate(startTime) {
23
+ if (!startTime)
24
+ return '';
25
+ const d = new Date(startTime);
26
+ if (isNaN(d.getTime()))
27
+ return '';
28
+ return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
29
+ }
30
+ function renderMatrixCsv(model) {
31
+ const BOM = '\ufeff'; // Excel compatibility (Vietnamese/Japanese content)
32
+ const lines = [];
33
+ lines.push(`# Test Case & Coverage Matrix — ${model.unit}`);
34
+ lines.push(`# delivery items: ${model.manifest.itemCount} · coverage variants: ${model.manifest.variantCount} · state: ${model.manifest.approvalState}`);
35
+ lines.push(HEADERS.map(esc).join(','));
36
+ for (const item of model.items) {
37
+ const triggerTexts = new Set(item.variants.map((v) => v.trigger.join('\n')));
38
+ const commonTrigger = triggerTexts.size === 1 ? item.variants[0].trigger.join('\n') : '(differs per variant — see variant rows)';
39
+ lines.push([
40
+ 'item',
41
+ item.id,
42
+ item.target,
43
+ item.intent,
44
+ item.category,
45
+ item.priority,
46
+ item.precondition.join('\n'),
47
+ `${item.variants.length} variant(s): ${item.variants.map((v) => v.condition).join(' · ')}`,
48
+ commonTrigger,
49
+ item.oracle,
50
+ item.mode === 'manual' ? 'Manual' : 'Auto',
51
+ item.traces.join(' '),
52
+ (0, render_xlsx_1.itemResultLabel)(item),
53
+ '',
54
+ item.review === 'proposed' ? 'REVIEW REQUIRED' : '',
55
+ ].map(esc).join(','));
56
+ for (const v of item.variants) {
57
+ const expected = v.verification.length > 0
58
+ ? `${v.oracle.join('\n')}\nVerification method: ${v.verification.join(' ')}`
59
+ : v.oracle.join('\n');
60
+ lines.push([
61
+ 'variant',
62
+ v.ref,
63
+ '',
64
+ v.condition,
65
+ '', '',
66
+ '',
67
+ v.data.join('\n'),
68
+ v.trigger.join('\n'),
69
+ expected,
70
+ v.mode === 'manual' ? 'Manual' : 'Auto',
71
+ v.traces.join(' '),
72
+ v.result ? (0, playwright_report_parser_1.statusToTestResult)(v.result.status) : 'Pending',
73
+ isoDate(v.result?.startTime),
74
+ v.result?.error ? String(v.result.error).slice(0, 200) : '',
75
+ ].map(esc).join(','));
76
+ }
77
+ }
78
+ // Requirement coverage appendix — keeps the CSV self-contained for pipelines.
79
+ if (model.requirements.length > 0) {
80
+ lines.push('');
81
+ lines.push('# Requirement coverage');
82
+ lines.push(['Requirement', 'Status', 'Delivery items', 'Variants', 'Note'].join(','));
83
+ for (const r of model.requirements) {
84
+ lines.push([r.id, r.status, r.items.join(' '), String(r.variantCount), r.note].map(esc).join(','));
85
+ }
86
+ }
87
+ return BOM + lines.join('\n') + '\n';
88
+ }
89
+ //# sourceMappingURL=render-csv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-csv.js","sourceRoot":"","sources":["../../../src/exporters/matrix/render-csv.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAwBH,0CA6DC;AAnFD,0EAAiE;AACjE,+CAAgD;AAGhD,MAAM,OAAO,GAAG;IACd,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAE,UAAU,EAAE,UAAU;IAC1E,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB;IAC7E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM;CACnD,CAAC;AAEF,SAAS,GAAG,CAAC,KAAa;IACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,SAA6B;IAC5C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACnH,CAAC;AAED,SAAgB,eAAe,CAAC,KAAkB;IAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,oDAAoD;IAC1E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,QAAQ,CAAC,SAAS,yBAAyB,KAAK,CAAC,QAAQ,CAAC,YAAY,aAAa,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IACzJ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC;QACjI,KAAK,CAAC,IAAI,CAAC;YACT,MAAM;YACN,IAAI,CAAC,EAAE;YACP,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC1F,aAAa;YACb,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACrB,IAAA,6BAAe,EAAC,IAAI,CAAC;YACrB,EAAE;YACF,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;SACpD,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBACxC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC5E,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC;gBACT,SAAS;gBACT,CAAC,CAAC,GAAG;gBACL,EAAE;gBACF,CAAC,CAAC,SAAS;gBACX,EAAE,EAAE,EAAE;gBACN,EAAE;gBACF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpB,QAAQ;gBACR,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBACvC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;gBAClB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,6CAAkB,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1D,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC;gBAC5B,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;aAC5D,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IACD,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACvC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Render the Test Case & Coverage Matrix workbook.
3
+ *
4
+ * Sheets:
5
+ * 1. Testcases — one parent row per delivery item; EVERY item (including
6
+ * single-variant ones) carries variant sub-rows on Excel outline level 1 —
7
+ * the sub-row is where source traceability (VP-id), test data, and the
8
+ * manual result/evidence entry live (review B-05/B-06). Collapse outline
9
+ * level 1 for the customer/review view; expand to execute.
10
+ * 2. Coverage — requirement coverage (id ↔ items ↔ status), the target ×
11
+ * category grid (explicit `—` gaps), dispositions, and the manifest.
12
+ *
13
+ * Manual-execution support: variant Result cells carry a dropdown
14
+ * (Passed/Failed/Blocked/Pending/N/A) and the parent Result is a live Excel
15
+ * formula derived from its children — a parent can never contradict its
16
+ * variants, even after QA edits results by hand (review B-06).
17
+ *
18
+ * Every sheet keeps the company ISO masthead. A draft matrix (unapproved
19
+ * groups / review findings) carries a red DRAFT banner.
20
+ */
21
+ import * as ExcelJS from 'exceljs';
22
+ import { DeliveryItem, MatrixModel } from './types';
23
+ export declare function itemResultLabel(item: DeliveryItem): string;
24
+ export declare function renderMatrixXlsx(model: MatrixModel, sungenVersion?: string): ExcelJS.Workbook;
25
+ //# sourceMappingURL=render-xlsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-xlsx.d.ts","sourceRoot":"","sources":["../../../src/exporters/matrix/render-xlsx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AASnC,OAAO,EAAmB,YAAY,EAAc,WAAW,EAAe,MAAM,SAAS,CAAC;AA0B9F,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAW1D;AA2RD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAK7F"}