docs(sdlc): record real test results, open defects ISS-029–032, conditional acceptance
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
// 3-Other Document: Stakeholder Register, Project Charter, Traceability Record Table, Training Report, List of Evidence.
|
||||
import { P, TEAM, OTHER_STAKEHOLDERS, CODE, PROJECT_TH, COMPANY_TH, ORGANIZER_PM, RECORDER, START, END, SCOPE, CRS, TRAINING_DATE, ACCEPT_DATE, TEST_FROM, TEST_TO, BASELINE_COMMIT, ORIGIN, BACKUP, DEV_START } from './project.mjs';
|
||||
import { SRS, UNITS, TEST_CASES, traceOf, srTopic, unitTopic } from './engineering.mjs';
|
||||
import { SRS, UNITS, TEST_CASES, traceOf, srTopic, unitTopic, crStatus } from './engineering.mjs';
|
||||
import { CORRECTIONS, PERIODS, MEETINGS, TASKS } from './history.mjs';
|
||||
import { bud, thLong, thRangeLong, table, bullets, numbered, daysBetween } from './lib.mjs';
|
||||
import { bud, thLong, thShort, thRangeLong, table, bullets, numbered, daysBetween } from './lib.mjs';
|
||||
import { workProduct, head } from './format.mjs';
|
||||
|
||||
const OTHER = '3-Other Document';
|
||||
@@ -114,10 +114,19 @@ export function projectCharter() {
|
||||
/** Traceability Record Table — the summary matrix filed alongside the master record. */
|
||||
export function traceabilityTable() {
|
||||
const date = '2026-08-17';
|
||||
// Evidence issued after this table is planned, not yet in hand.
|
||||
const LATER = { 'Training Report': TRAINING_DATE, 'List of Evidence': END, 'Acceptance Report': ACCEPT_DATE };
|
||||
const evidence = (ev) => ev.split(', ').map((name) => {
|
||||
const at = LATER[name.replace(/ \(.*\)$/, '')];
|
||||
return at && at > date ? `${name} (ตามแผน ${thShort(at)})` : name;
|
||||
}).join(', ');
|
||||
const rows = CRS.map(([id, text]) => {
|
||||
const t = traceOf(id);
|
||||
return [id, text, t.sr.join(', '), t.un.join(', ') || '-', t.tc, t.ev || '-', 'Passed', 'Passed'];
|
||||
const status = crStatus(id, date);
|
||||
const tested = t.tcs.length ? status : '-';
|
||||
return [id, text, t.sr.join(', '), t.un.join(', ') || '-', t.tc, t.ev ? evidence(t.ev) : '-', tested, status];
|
||||
});
|
||||
const count = (s) => CRS.filter(([id]) => crStatus(id, date) === s).length;
|
||||
const traced = CRS.map(([id]) => traceOf(id));
|
||||
return {
|
||||
dir: OTHER,
|
||||
@@ -142,8 +151,10 @@ export function traceabilityTable() {
|
||||
['เชื่อมโยงกับ Software Unit', traced.filter((t) => t.un.length).length],
|
||||
['เชื่อมโยงกับ Test Case', traced.filter((t) => t.tcs.length).length],
|
||||
['ยืนยันด้วยเอกสารส่งมอบ (ไม่มี Software Unit)', traced.filter((t) => !t.tcs.length).length],
|
||||
['ผลการทดสอบหรือการตรวจสอบเอกสารผ่าน', CRS.length],
|
||||
['ผลการทดสอบการยอมรับผ่าน', CRS.length],
|
||||
['ผ่าน (Passed)', count('Passed')],
|
||||
['ไม่ผ่าน (Failed) — ข้อบกพร่องคงค้างใน Correction Register', count('Failed')],
|
||||
['ยังไม่ได้ทดสอบ (ชุดติดตั้ง Docker ส่งมอบหลังรอบทดสอบ)', count('Not tested')],
|
||||
['รอดำเนินการตามแผน (Pending)', count('Pending')],
|
||||
], ['', 'r']),
|
||||
].join('\n\n'),
|
||||
secretary: P.NoC, reviewer: P.PaNg, approver: P.SeV,
|
||||
|
||||
Reference in New Issue
Block a user