@lwelliott/cortex-cli 1.0.5 → 1.0.7
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 +51 -26
- package/dist/cli/formatters/markdown.d.ts.map +1 -1
- package/dist/cli/formatters/markdown.js +0 -4
- package/dist/cli/formatters/markdown.js.map +1 -1
- package/dist/cli/formatters/quiet.d.ts.map +1 -1
- package/dist/cli/formatters/quiet.js +0 -2
- package/dist/cli/formatters/quiet.js.map +1 -1
- package/dist/cli/formatters/table.d.ts.map +1 -1
- package/dist/cli/formatters/table.js +0 -5
- package/dist/cli/formatters/table.js.map +1 -1
- package/dist/cli/index.js +4 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/project-resolver.js +1 -1
- package/dist/cli/project-resolver.js.map +1 -1
- package/dist/cli/project.d.ts +0 -1
- package/dist/cli/project.d.ts.map +1 -1
- package/dist/cli/project.js +2 -35
- package/dist/cli/project.js.map +1 -1
- package/dist/cli/task.d.ts.map +1 -1
- package/dist/cli/task.js +22 -7
- package/dist/cli/task.js.map +1 -1
- package/dist/config/registry.d.ts +0 -9
- package/dist/config/registry.d.ts.map +1 -1
- package/dist/config/registry.js +1 -31
- package/dist/config/registry.js.map +1 -1
- package/dist/config/resolver.d.ts +3 -4
- package/dist/config/resolver.d.ts.map +1 -1
- package/dist/config/resolver.js +7 -24
- package/dist/config/resolver.js.map +1 -1
- package/dist/db/generated/schema-types.d.ts +2 -2
- package/dist/db/generated/schema-types.js +2 -2
- package/dist/db/generated/schema-types.js.map +1 -1
- package/dist/db/schema.d.ts +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +70 -4
- package/dist/db/schema.js.map +1 -1
- package/dist/models/common.d.ts +2 -2
- package/dist/models/common.d.ts.map +1 -1
- package/dist/models/project.d.ts +2 -4
- package/dist/models/project.d.ts.map +1 -1
- package/dist/models/project.js +0 -1
- package/dist/models/project.js.map +1 -1
- package/dist/models/relation.d.ts.map +1 -1
- package/dist/models/relation.js +81 -73
- package/dist/models/relation.js.map +1 -1
- package/dist/services/document-service.d.ts +3 -0
- package/dist/services/document-service.d.ts.map +1 -1
- package/dist/services/document-service.js +77 -76
- package/dist/services/document-service.js.map +1 -1
- package/dist/services/project.d.ts +0 -10
- package/dist/services/project.d.ts.map +1 -1
- package/dist/services/project.js +2 -26
- package/dist/services/project.js.map +1 -1
- package/dist/services/review-service.d.ts +47 -2
- package/dist/services/review-service.d.ts.map +1 -1
- package/dist/services/review-service.js +189 -27
- package/dist/services/review-service.js.map +1 -1
- package/dist/services/schema-migration-service.js +2 -2
- package/dist/services/schema-migration-service.js.map +1 -1
- package/dist/services/stage-validator.d.ts +19 -18
- package/dist/services/stage-validator.d.ts.map +1 -1
- package/dist/services/stage-validator.js +41 -42
- package/dist/services/stage-validator.js.map +1 -1
- package/dist/services/task.d.ts +18 -21
- package/dist/services/task.d.ts.map +1 -1
- package/dist/services/task.js +96 -86
- package/dist/services/task.js.map +1 -1
- package/dist/state-machines/task-state.d.ts +8 -8
- package/dist/state-machines/task-state.d.ts.map +1 -1
- package/dist/state-machines/task-state.js +33 -31
- package/dist/state-machines/task-state.js.map +1 -1
- package/dist/utils/errors.d.ts +29 -51
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +79 -114
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/format.d.ts +0 -11
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +1 -10
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/levenshtein.d.ts +10 -0
- package/dist/utils/levenshtein.d.ts.map +1 -0
- package/dist/utils/levenshtein.js +42 -0
- package/dist/utils/levenshtein.js.map +1 -0
- package/dist/validators/owner-validator.d.ts +20 -16
- package/dist/validators/owner-validator.d.ts.map +1 -1
- package/dist/validators/owner-validator.js +37 -38
- package/dist/validators/owner-validator.js.map +1 -1
- package/package.json +9 -2
package/dist/services/project.js
CHANGED
|
@@ -8,8 +8,6 @@ exports.createProject = createProject;
|
|
|
8
8
|
exports.registerProject = registerProject;
|
|
9
9
|
exports.removeProject = removeProject;
|
|
10
10
|
exports.listAllProjects = listAllProjects;
|
|
11
|
-
exports.setProjectDefault = setProjectDefault;
|
|
12
|
-
exports.getDefaultProjectName = getDefaultProjectName;
|
|
13
11
|
exports.getProjectInfo = getProjectInfo;
|
|
14
12
|
exports.resolveProjectForCommand = resolveProjectForCommand;
|
|
15
13
|
const fs_1 = require("fs");
|
|
@@ -109,14 +107,12 @@ function createProject(name, folder, opts) {
|
|
|
109
107
|
db.close();
|
|
110
108
|
}
|
|
111
109
|
// Register in global registry
|
|
112
|
-
|
|
113
|
-
const isDefault = registry.default === name;
|
|
110
|
+
(0, registry_1.addProject)(name, absoluteFolder, opts?.registryPath);
|
|
114
111
|
return {
|
|
115
112
|
name,
|
|
116
113
|
folder: absoluteFolder,
|
|
117
114
|
dbPath,
|
|
118
115
|
isNew: !dbExisted,
|
|
119
|
-
isDefault,
|
|
120
116
|
};
|
|
121
117
|
}
|
|
122
118
|
/**
|
|
@@ -159,14 +155,12 @@ function registerProject(name, folder, opts) {
|
|
|
159
155
|
db.close();
|
|
160
156
|
}
|
|
161
157
|
// Register in global registry
|
|
162
|
-
|
|
163
|
-
const isDefault = registry.default === name;
|
|
158
|
+
(0, registry_1.addProject)(name, absoluteFolder, opts?.registryPath);
|
|
164
159
|
return {
|
|
165
160
|
name,
|
|
166
161
|
folder: absoluteFolder,
|
|
167
162
|
dbPath,
|
|
168
163
|
isNew: !dbExisted,
|
|
169
|
-
isDefault,
|
|
170
164
|
};
|
|
171
165
|
}
|
|
172
166
|
/**
|
|
@@ -190,21 +184,6 @@ function removeProject(name, opts) {
|
|
|
190
184
|
function listAllProjects(opts) {
|
|
191
185
|
return (0, registry_1.listProjects)(opts?.registryPath);
|
|
192
186
|
}
|
|
193
|
-
/**
|
|
194
|
-
* Set the default project.
|
|
195
|
-
*
|
|
196
|
-
* @throws ProjectNotFoundError (ERR-PROJ-007) if the project doesn't exist
|
|
197
|
-
*/
|
|
198
|
-
function setProjectDefault(name, opts) {
|
|
199
|
-
(0, registry_1.setDefaultProject)(name, opts?.registryPath);
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Get the current default project name.
|
|
203
|
-
*/
|
|
204
|
-
function getDefaultProjectName(opts) {
|
|
205
|
-
const registry = (0, registry_1.loadRegistry)(opts?.registryPath);
|
|
206
|
-
return registry.default;
|
|
207
|
-
}
|
|
208
187
|
/**
|
|
209
188
|
* Show project details: folder, database path, sprint summary, entity counts.
|
|
210
189
|
*
|
|
@@ -212,9 +191,7 @@ function getDefaultProjectName(opts) {
|
|
|
212
191
|
*/
|
|
213
192
|
function getProjectInfo(name, opts) {
|
|
214
193
|
const entry = (0, registry_1.getProject)(name, opts?.registryPath);
|
|
215
|
-
const registry = (0, registry_1.loadRegistry)(opts?.registryPath);
|
|
216
194
|
const dbPath = `${entry.folder}/pmp/project.db`;
|
|
217
|
-
const isDefault = registry.default === name;
|
|
218
195
|
// Query the database for summary counts
|
|
219
196
|
let sprintCount = 0;
|
|
220
197
|
let activeSprintCount = 0;
|
|
@@ -236,7 +213,6 @@ function getProjectInfo(name, opts) {
|
|
|
236
213
|
name,
|
|
237
214
|
folder: entry.folder,
|
|
238
215
|
dbPath,
|
|
239
|
-
isDefault,
|
|
240
216
|
sprintCount,
|
|
241
217
|
activeSprintCount,
|
|
242
218
|
docCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/services/project.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,wEAAwE;AACxE,uDAAuD;;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/services/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,10 @@ import type Database from 'better-sqlite3';
|
|
|
2
2
|
import type { Review, ReviewDetail, ReviewAddOptions, TestReport, TestReportAddOptions, Lesson, LessonAddOptions, LessonResult, LessonUpdateFields } from '../models/review';
|
|
3
3
|
/**
|
|
4
4
|
* Add a review with explicit caller-provided 4-digit ID.
|
|
5
|
+
* Wrapped with review:<reviewId> advisory lock (AD-0006) for multi-process coordination.
|
|
5
6
|
* Content must be provided (from --content-file).
|
|
6
7
|
*
|
|
7
|
-
* SAD-0031 Part A:
|
|
8
|
+
* SAD-0031 Part A: caller provides explicit ID.
|
|
8
9
|
* Duplicate validation via EXISTS on composite index (sprint_id, review_num).
|
|
9
10
|
*/
|
|
10
11
|
export declare function addReview(db: Database.Database, sprintId: string, reviewId: string, reviewType: string, verdict: string, content: string, opts?: ReviewAddOptions): Review;
|
|
@@ -26,12 +27,56 @@ export declare function listReviews(db: Database.Database, sprintId: string, fil
|
|
|
26
27
|
* @throws ReviewNotInSprintError if review not found in the specified sprint
|
|
27
28
|
*/
|
|
28
29
|
export declare function getReview(db: Database.Database, reviewNum: number, sprintId: string): ReviewDetail;
|
|
30
|
+
/**
|
|
31
|
+
* Update an existing review.
|
|
32
|
+
* Wrapped with review:<reviewId> advisory lock (AD-0006).
|
|
33
|
+
*
|
|
34
|
+
* @param db - Database connection
|
|
35
|
+
* @param reviewNum - Review number (1-based)
|
|
36
|
+
* @param sprintId - Sprint ID (required)
|
|
37
|
+
* @param updates - Fields to update (content, verdict, review_type, counts, etc.)
|
|
38
|
+
* @returns Updated Review detail
|
|
39
|
+
* @throws ReviewNotInSprintError if review not found
|
|
40
|
+
* @throws ReviewNoUpdateFieldsError if no update fields provided
|
|
41
|
+
*/
|
|
42
|
+
export declare function updateReview(db: Database.Database, reviewNum: number, sprintId: string, updates: {
|
|
43
|
+
content?: string;
|
|
44
|
+
verdict?: string;
|
|
45
|
+
reviewType?: string;
|
|
46
|
+
assetName?: string;
|
|
47
|
+
assetRef?: string;
|
|
48
|
+
critical?: number;
|
|
49
|
+
major?: number;
|
|
50
|
+
minor?: number;
|
|
51
|
+
suggestion?: number;
|
|
52
|
+
}): ReviewDetail;
|
|
29
53
|
/**
|
|
30
54
|
* Add a test report with explicit caller-provided 4-digit ID.
|
|
31
|
-
*
|
|
55
|
+
* Wrapped with review:global advisory lock (AD-0006) for multi-process coordination.
|
|
56
|
+
* SAD-0031 Part A: no task association.
|
|
32
57
|
* Duplicate validation via EXISTS on composite index (sprint_id, id).
|
|
33
58
|
*/
|
|
34
59
|
export declare function addTestReport(db: Database.Database, sprintId: string, testReportId: string, total: number, passed: number, failed: number, opts?: TestReportAddOptions): TestReport;
|
|
60
|
+
/**
|
|
61
|
+
* Update an existing test report.
|
|
62
|
+
* Wrapped with review:global advisory lock (AD-0006).
|
|
63
|
+
*
|
|
64
|
+
* @param db - Database connection
|
|
65
|
+
* @param testReportId - Test report ID (4-digit zero-padded)
|
|
66
|
+
* @param sprintId - Sprint ID
|
|
67
|
+
* @param updates - Fields to update
|
|
68
|
+
* @returns Updated TestReport
|
|
69
|
+
* @throws error with ERR-TESTREPORT-004 if not found
|
|
70
|
+
*/
|
|
71
|
+
export declare function updateTestReport(db: Database.Database, testReportId: string, sprintId: string, updates: {
|
|
72
|
+
total?: number;
|
|
73
|
+
passed?: number;
|
|
74
|
+
failed?: number;
|
|
75
|
+
skipped?: number;
|
|
76
|
+
command?: string;
|
|
77
|
+
duration?: number;
|
|
78
|
+
content?: string;
|
|
79
|
+
}): TestReport;
|
|
35
80
|
/**
|
|
36
81
|
* List test reports. Task filter removed per SAD-0031 Part B.
|
|
37
82
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-service.d.ts","sourceRoot":"","sources":["../../src/services/review-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-service.d.ts","sourceRoot":"","sources":["../../src/services/review-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
// Review service: orchestrates review, test report, and lesson operations
|
|
3
3
|
// SAD-0031: Explicit Command IDs, Duplicate ID Validation, Test-Report --task Removal
|
|
4
4
|
// SAD-0010: Lesson singleton, review show sprint binding, content-file import
|
|
5
|
+
// AD-0006: Advisory lock wrapping for multi-step write operations
|
|
5
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
7
|
exports.addReview = addReview;
|
|
7
8
|
exports.listReviews = listReviews;
|
|
8
9
|
exports.getReview = getReview;
|
|
10
|
+
exports.updateReview = updateReview;
|
|
9
11
|
exports.addTestReport = addTestReport;
|
|
12
|
+
exports.updateTestReport = updateTestReport;
|
|
10
13
|
exports.listTestReports = listTestReports;
|
|
11
14
|
exports.getTestReport = getTestReport;
|
|
12
15
|
exports.addLesson = addLesson;
|
|
@@ -15,6 +18,7 @@ exports.getLesson = getLesson;
|
|
|
15
18
|
exports.updateLesson = updateLesson;
|
|
16
19
|
const errors_1 = require("../utils/errors");
|
|
17
20
|
const retry_1 = require("../db/retry");
|
|
21
|
+
const locks_1 = require("../db/locks");
|
|
18
22
|
const sprint_1 = require("./sprint");
|
|
19
23
|
// ─── Error helper ───
|
|
20
24
|
function reviewError(code, message, details) {
|
|
@@ -30,31 +34,36 @@ function validateFourDigitId(id, errCtor) {
|
|
|
30
34
|
// ─── Review API ───
|
|
31
35
|
/**
|
|
32
36
|
* Add a review with explicit caller-provided 4-digit ID.
|
|
37
|
+
* Wrapped with review:<reviewId> advisory lock (AD-0006) for multi-process coordination.
|
|
33
38
|
* Content must be provided (from --content-file).
|
|
34
39
|
*
|
|
35
|
-
* SAD-0031 Part A:
|
|
40
|
+
* SAD-0031 Part A: caller provides explicit ID.
|
|
36
41
|
* Duplicate validation via EXISTS on composite index (sprint_id, review_num).
|
|
37
42
|
*/
|
|
38
43
|
function addReview(db, sprintId, reviewId, reviewType, verdict, content, opts) {
|
|
39
|
-
// Validate sprint exists
|
|
44
|
+
// Validate sprint exists (before lock)
|
|
40
45
|
(0, sprint_1.resolveSprint)(db, sprintId);
|
|
41
46
|
// Validate ID format: /^\d{4}$/
|
|
42
47
|
validateFourDigitId(reviewId, errors_1.ReviewBadIdError);
|
|
43
48
|
if (!content) {
|
|
44
49
|
throw new errors_1.ReviewContentRemovedError();
|
|
45
50
|
}
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
const owner = (0, locks_1.generateLockOwner)();
|
|
52
|
+
const lockName = `review:${reviewId}`;
|
|
53
|
+
return (0, locks_1.withLock)(db, { name: lockName, owner }, () => {
|
|
54
|
+
// Duplicate check inside lock to prevent TOCTOU races
|
|
55
|
+
const exists = db.prepare('SELECT EXISTS(SELECT 1 FROM reviews WHERE sprint_id = ? AND review_num = ?) AS e').get(sprintId, reviewId);
|
|
56
|
+
if (exists.e) {
|
|
57
|
+
throw new errors_1.ReviewDuplicateIdError(reviewId, sprintId);
|
|
58
|
+
}
|
|
59
|
+
const now = new Date().toISOString();
|
|
60
|
+
const rowId = (0, retry_1.withTransaction)(db, () => {
|
|
61
|
+
const result = db.prepare(`INSERT INTO reviews (review_num, sprint_id, asset_name, review_type, verdict, critical_count, major_count, minor_count, suggestion_count, open_questions_count, content, asset_ref, created_at, updated_at)
|
|
62
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(reviewId, sprintId, opts?.assetName ?? '', reviewType, verdict, opts?.critical ?? 0, opts?.major ?? 0, opts?.minor ?? 0, opts?.suggestion ?? 0, 0, content, opts?.assetRef ?? null, now, now);
|
|
63
|
+
return Number(result.lastInsertRowid);
|
|
64
|
+
});
|
|
65
|
+
return getReviewById(db, rowId);
|
|
56
66
|
});
|
|
57
|
-
return getReviewById(db, rowId);
|
|
58
67
|
}
|
|
59
68
|
/**
|
|
60
69
|
* List reviews for a sprint.
|
|
@@ -101,10 +110,85 @@ function getReview(db, reviewNum, sprintId) {
|
|
|
101
110
|
}
|
|
102
111
|
return row;
|
|
103
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Update an existing review.
|
|
115
|
+
* Wrapped with review:<reviewId> advisory lock (AD-0006).
|
|
116
|
+
*
|
|
117
|
+
* @param db - Database connection
|
|
118
|
+
* @param reviewNum - Review number (1-based)
|
|
119
|
+
* @param sprintId - Sprint ID (required)
|
|
120
|
+
* @param updates - Fields to update (content, verdict, review_type, counts, etc.)
|
|
121
|
+
* @returns Updated Review detail
|
|
122
|
+
* @throws ReviewNotInSprintError if review not found
|
|
123
|
+
* @throws ReviewNoUpdateFieldsError if no update fields provided
|
|
124
|
+
*/
|
|
125
|
+
function updateReview(db, reviewNum, sprintId, updates) {
|
|
126
|
+
// Validate sprint exists (before lock)
|
|
127
|
+
(0, sprint_1.resolveSprint)(db, sprintId);
|
|
128
|
+
// Validate the review exists (before lock to fail fast)
|
|
129
|
+
const numStr = String(reviewNum).padStart(4, '0');
|
|
130
|
+
const existing = db.prepare('SELECT * FROM reviews WHERE review_num = ? AND sprint_id = ?').get(numStr, sprintId);
|
|
131
|
+
if (!existing) {
|
|
132
|
+
throw new errors_1.ReviewNotInSprintError(reviewNum, sprintId);
|
|
133
|
+
}
|
|
134
|
+
// Check that at least one update field is provided
|
|
135
|
+
if (Object.keys(updates).length === 0) {
|
|
136
|
+
throw new errors_1.ReviewNoUpdateFieldsError();
|
|
137
|
+
}
|
|
138
|
+
const owner = (0, locks_1.generateLockOwner)();
|
|
139
|
+
const lockName = `review:${numStr}`;
|
|
140
|
+
return (0, locks_1.withLock)(db, { name: lockName, owner }, () => {
|
|
141
|
+
const now = new Date().toISOString();
|
|
142
|
+
const sets = ['updated_at = ?'];
|
|
143
|
+
const params = [now];
|
|
144
|
+
if (updates.content !== undefined) {
|
|
145
|
+
sets.push('content = ?');
|
|
146
|
+
params.push(updates.content);
|
|
147
|
+
}
|
|
148
|
+
if (updates.verdict !== undefined) {
|
|
149
|
+
sets.push('verdict = ?');
|
|
150
|
+
params.push(updates.verdict);
|
|
151
|
+
}
|
|
152
|
+
if (updates.reviewType !== undefined) {
|
|
153
|
+
sets.push('review_type = ?');
|
|
154
|
+
params.push(updates.reviewType);
|
|
155
|
+
}
|
|
156
|
+
if (updates.assetName !== undefined) {
|
|
157
|
+
sets.push('asset_name = ?');
|
|
158
|
+
params.push(updates.assetName);
|
|
159
|
+
}
|
|
160
|
+
if (updates.assetRef !== undefined) {
|
|
161
|
+
sets.push('asset_ref = ?');
|
|
162
|
+
params.push(updates.assetRef);
|
|
163
|
+
}
|
|
164
|
+
if (updates.critical !== undefined) {
|
|
165
|
+
sets.push('critical_count = ?');
|
|
166
|
+
params.push(updates.critical);
|
|
167
|
+
}
|
|
168
|
+
if (updates.major !== undefined) {
|
|
169
|
+
sets.push('major_count = ?');
|
|
170
|
+
params.push(updates.major);
|
|
171
|
+
}
|
|
172
|
+
if (updates.minor !== undefined) {
|
|
173
|
+
sets.push('minor_count = ?');
|
|
174
|
+
params.push(updates.minor);
|
|
175
|
+
}
|
|
176
|
+
if (updates.suggestion !== undefined) {
|
|
177
|
+
sets.push('suggestion_count = ?');
|
|
178
|
+
params.push(updates.suggestion);
|
|
179
|
+
}
|
|
180
|
+
params.push(numStr, sprintId);
|
|
181
|
+
(0, retry_1.withTransaction)(db, () => {
|
|
182
|
+
db.prepare(`UPDATE reviews SET ${sets.join(', ')} WHERE review_num = ? AND sprint_id = ?`).run(...params);
|
|
183
|
+
});
|
|
184
|
+
return getReview(db, reviewNum, sprintId);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
104
187
|
// ─── Test Report API ───
|
|
105
188
|
/**
|
|
106
189
|
* Add a test report with explicit caller-provided 4-digit ID.
|
|
107
|
-
*
|
|
190
|
+
* Wrapped with review:global advisory lock (AD-0006) for multi-process coordination.
|
|
191
|
+
* SAD-0031 Part A: no task association.
|
|
108
192
|
* Duplicate validation via EXISTS on composite index (sprint_id, id).
|
|
109
193
|
*/
|
|
110
194
|
function addTestReport(db, sprintId, testReportId, total, passed, failed, opts) {
|
|
@@ -112,24 +196,102 @@ function addTestReport(db, sprintId, testReportId, total, passed, failed, opts)
|
|
|
112
196
|
// Validate ID format: /^\d{4}$/
|
|
113
197
|
validateFourDigitId(testReportId, errors_1.TestReportBadIdError);
|
|
114
198
|
const skipped = opts?.skipCount ?? 0;
|
|
115
|
-
// Count consistency check (FS-SS-028-0008: WRN-TEST-REPORT-001)
|
|
199
|
+
// Count consistency check (FS-SS-028-0008: WRN-TEST-REPORT-001) — non-blocking
|
|
116
200
|
if (passed + failed + skipped !== total) {
|
|
117
201
|
console.warn(`WRN-TEST-REPORT-001: passed (${passed}) + failed (${failed}) + skipped (${skipped}) != total (${total})`);
|
|
118
202
|
}
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
203
|
+
const owner = (0, locks_1.generateLockOwner)();
|
|
204
|
+
return (0, locks_1.withLock)(db, { name: 'review:global', owner }, () => {
|
|
205
|
+
// Duplicate check inside lock to prevent TOCTOU races
|
|
206
|
+
const exists = db.prepare('SELECT EXISTS(SELECT 1 FROM test_reports WHERE sprint_id = ? AND id = ?) AS e').get(sprintId, testReportId);
|
|
207
|
+
if (exists.e) {
|
|
208
|
+
throw new errors_1.TestReportDuplicateIdError(testReportId, sprintId);
|
|
209
|
+
}
|
|
210
|
+
const blocked = 0;
|
|
211
|
+
const computeResult = failed > 0 ? 'FAIL' : 'PASS';
|
|
212
|
+
const now = new Date().toISOString();
|
|
213
|
+
const reportContent = opts?.content ?? '';
|
|
214
|
+
(0, retry_1.withTransaction)(db, () => {
|
|
215
|
+
db.prepare(`INSERT INTO test_reports (id, sprint_id, total, passed, failed, skipped, blocked, result, command, duration_ms, report_path, module_id, status, content, pass_count, fail_count, skip_count, created_at, updated_at)
|
|
216
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(testReportId, sprintId, total, passed, failed, skipped, blocked, computeResult, opts?.command ?? null, opts?.duration ?? null, null, null, computeResult, reportContent, passed, failed, skipped, now, now);
|
|
217
|
+
});
|
|
218
|
+
return getTestReport(db, testReportId, sprintId);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Update an existing test report.
|
|
223
|
+
* Wrapped with review:global advisory lock (AD-0006).
|
|
224
|
+
*
|
|
225
|
+
* @param db - Database connection
|
|
226
|
+
* @param testReportId - Test report ID (4-digit zero-padded)
|
|
227
|
+
* @param sprintId - Sprint ID
|
|
228
|
+
* @param updates - Fields to update
|
|
229
|
+
* @returns Updated TestReport
|
|
230
|
+
* @throws error with ERR-TESTREPORT-004 if not found
|
|
231
|
+
*/
|
|
232
|
+
function updateTestReport(db, testReportId, sprintId, updates) {
|
|
233
|
+
// Validate sprint and report exist (before lock to fail fast)
|
|
234
|
+
(0, sprint_1.resolveSprint)(db, sprintId);
|
|
235
|
+
const existing = db.prepare('SELECT * FROM test_reports WHERE id = ? AND sprint_id = ?').get(testReportId, sprintId);
|
|
236
|
+
if (!existing) {
|
|
237
|
+
reviewError('ERR-TESTREPORT-004', `Test report "${testReportId}" not found in sprint "${sprintId}"`, { testReportId, sprintId });
|
|
127
238
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
239
|
+
// Check at least one update field
|
|
240
|
+
if (Object.keys(updates).length === 0) {
|
|
241
|
+
throw new errors_1.TestReportNoUpdateFieldsError();
|
|
242
|
+
}
|
|
243
|
+
const owner = (0, locks_1.generateLockOwner)();
|
|
244
|
+
return (0, locks_1.withLock)(db, { name: 'review:global', owner }, () => {
|
|
245
|
+
const now = new Date().toISOString();
|
|
246
|
+
const sets = ['updated_at = ?'];
|
|
247
|
+
const params = [now];
|
|
248
|
+
if (updates.total !== undefined) {
|
|
249
|
+
sets.push('total = ?');
|
|
250
|
+
params.push(updates.total);
|
|
251
|
+
}
|
|
252
|
+
if (updates.passed !== undefined) {
|
|
253
|
+
sets.push('passed = ?');
|
|
254
|
+
params.push(updates.passed);
|
|
255
|
+
}
|
|
256
|
+
if (updates.failed !== undefined) {
|
|
257
|
+
sets.push('failed = ?');
|
|
258
|
+
params.push(updates.failed);
|
|
259
|
+
}
|
|
260
|
+
if (updates.skipped !== undefined) {
|
|
261
|
+
sets.push('skipped = ?');
|
|
262
|
+
params.push(updates.skipped);
|
|
263
|
+
}
|
|
264
|
+
if (updates.command !== undefined) {
|
|
265
|
+
sets.push('command = ?');
|
|
266
|
+
params.push(updates.command);
|
|
267
|
+
}
|
|
268
|
+
if (updates.duration !== undefined) {
|
|
269
|
+
sets.push('duration_ms = ?');
|
|
270
|
+
params.push(updates.duration);
|
|
271
|
+
}
|
|
272
|
+
if (updates.content !== undefined) {
|
|
273
|
+
sets.push('content = ?');
|
|
274
|
+
params.push(updates.content);
|
|
275
|
+
}
|
|
276
|
+
// Recompute result and counts if totals changed
|
|
277
|
+
const newPassed = updates.passed ?? existing.passed;
|
|
278
|
+
const newFailed = updates.failed ?? existing.failed;
|
|
279
|
+
const newSkipped = updates.skipped ?? existing.skipped;
|
|
280
|
+
const computedResult = newFailed > 0 ? 'FAIL' : 'PASS';
|
|
281
|
+
sets.push('result = ?');
|
|
282
|
+
params.push(computedResult);
|
|
283
|
+
sets.push('pass_count = ?');
|
|
284
|
+
params.push(newPassed);
|
|
285
|
+
sets.push('fail_count = ?');
|
|
286
|
+
params.push(newFailed);
|
|
287
|
+
sets.push('skip_count = ?');
|
|
288
|
+
params.push(newSkipped);
|
|
289
|
+
params.push(testReportId, sprintId);
|
|
290
|
+
(0, retry_1.withTransaction)(db, () => {
|
|
291
|
+
db.prepare(`UPDATE test_reports SET ${sets.join(', ')} WHERE id = ? AND sprint_id = ?`).run(...params);
|
|
292
|
+
});
|
|
293
|
+
return getTestReport(db, testReportId, sprintId);
|
|
131
294
|
});
|
|
132
|
-
return getTestReport(db, testReportId, sprintId);
|
|
133
295
|
}
|
|
134
296
|
/**
|
|
135
297
|
* List test reports. Task filter removed per SAD-0031 Part B.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-service.js","sourceRoot":"","sources":["../../src/services/review-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-service.js","sourceRoot":"","sources":["../../src/services/review-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,8 +40,8 @@ const SURVIVING_UPDATES = {
|
|
|
40
40
|
contains: { from: ['MDL'], to: ['US', 'FR', 'NFR'], cardinality: 'one_to_many' },
|
|
41
41
|
covered_by: { from: ['FS', 'NFS'], to: ['SAD', 'AD', 'QA'], cardinality: 'many_to_many' },
|
|
42
42
|
covers: { from: ['SAD', 'AD', 'QA'], to: ['FS', 'NFS'], cardinality: 'many_to_many' },
|
|
43
|
-
implemented_by: { from: ['SAD', 'AD', 'QA'], to: ['SRC'], cardinality: 'many_to_many' },
|
|
44
|
-
implements: { from: ['SRC'], to: ['SAD', 'AD', 'QA'], cardinality: 'many_to_many' },
|
|
43
|
+
implemented_by: { from: ['SAD', 'AD', 'QA', 'TC'], to: ['SRC'], cardinality: 'many_to_many' },
|
|
44
|
+
implements: { from: ['SRC'], to: ['SAD', 'AD', 'QA', 'TC'], cardinality: 'many_to_many' },
|
|
45
45
|
verified_by: { from: ['FS', 'NFS'], to: ['TS'], cardinality: 'many_to_many' },
|
|
46
46
|
verifies: { from: ['TS'], to: ['FS', 'NFS'], cardinality: 'many_to_many' },
|
|
47
47
|
// depends_on: unchanged [MDL] → [MDL]; no update applied
|