diff --git a/scripts/sdlc-seed/docs-other.mjs b/scripts/sdlc-seed/docs-other.mjs index 3f7efc8..63870cf 100644 --- a/scripts/sdlc-seed/docs-other.mjs +++ b/scripts/sdlc-seed/docs-other.mjs @@ -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, diff --git a/scripts/sdlc-seed/docs-pm2.mjs b/scripts/sdlc-seed/docs-pm2.mjs index 9e987f2..4d1b08f 100644 --- a/scripts/sdlc-seed/docs-pm2.mjs +++ b/scripts/sdlc-seed/docs-pm2.mjs @@ -4,6 +4,7 @@ import { P, CRS, CODE, PROJECT_TH, COMPANY_TH, ORGANIZER, ORGANIZER_PM, RECORDER import { TASKS, taskById, CORRECTIONS, CHANGE_CRITERIA, CHANGE_REVIEW, LESSONS, PERIODS, MEETINGS } from './history.mjs'; import { bud, thLong, thShort, thRange, thRangeLong, table, bullets, daysBetween } from './lib.mjs'; import { workProduct, head } from './format.mjs'; +import { TEST_CASES, resultCounts, crStatus } from './engineering.mjs'; const ids = (arr) => arr.map((i) => P[i].id).join(', '); const dir3 = '1-PM Process (10 Work Product)/3.Progress Status Record'; @@ -20,7 +21,9 @@ export function progressStatusRecords() { // detail, owner and status. const issues = issueIds.map((iid, n) => { const c = CORRECTIONS.find((x) => x[0] === iid); - return [n + 1, `${c[0]} : ${c[4]}`, `${c[5]} จึงดำเนินการ${c[6]} แล้วเสร็จ ${thShort(c[2])}`, P[c[7]].id, 'เสร็จสิ้น']; + return c[2] + ? [n + 1, `${c[0]} : ${c[4]}`, `${c[5]} จึงดำเนินการ${c[6]} แล้วเสร็จ ${thShort(c[2])}`, P[c[7]].id, 'เสร็จสิ้น'] + : [n + 1, `${c[0]} : ${c[4]}`, `${c[5]} แนวทางแก้ไข: ${c[6]}`, P[c[7]].id, 'คงค้าง']; }); if (changeIds.length) throw new Error(`Progress record ${date} lists change requests, but the project has none.`); const changes = []; @@ -60,7 +63,8 @@ export function progressStatusRecords() { /** 4. Correction Register — all issues found during the project. */ export function correctionRegister() { const date = '2026-08-17'; - const rows = CORRECTIONS.map((c, i) => [i + 1, c[0], thShort(c[1]), c[4], c[5], c[6], P[c[7]].id, thShort(c[2]), 'เสร็จสิ้น']); + const rows = CORRECTIONS.map((c, i) => [i + 1, c[0], thShort(c[1]), c[4], c[5], c[6], P[c[7]].id, c[2] ? thShort(c[2]) : '-', c[2] ? 'เสร็จสิ้น' : 'คงค้าง']); + const open = CORRECTIONS.filter((c) => !c[2]); const bySev = (s) => CORRECTIONS.filter((c) => c[3] === s).length; return { dir: '1-PM Process (10 Work Product)/4.Correction Register', @@ -82,16 +86,16 @@ export function correctionRegister() { ['ระดับความรุนแรงสูง', bySev('สูง')], ['ระดับความรุนแรงกลาง', bySev('กลาง')], ['ระดับความรุนแรงต่ำ', bySev('ต่ำ')], - ['แก้ไขแล้วเสร็จและตรวจสอบผลแล้ว', CORRECTIONS.length], - ['คงค้าง', 0], + ['แก้ไขแล้วเสร็จและตรวจสอบผลแล้ว', CORRECTIONS.length - open.length], + ['คงค้าง', open.length], ], ['', 'r']), - `ปัญหาทุกรายการได้รับการแก้ไขและตรวจสอบผลด้วย Test Case ที่เกี่ยวข้อง โดยผลการทดสอบผ่านทั้งหมดในรอบทดสอบระหว่าง ${thRangeLong(TEST_FROM, TEST_TO)} ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง ณ วันตรวจรับ`, + `ปัญหาที่พบระหว่างพัฒนา ${CORRECTIONS.length - open.length} รายการได้รับการแก้ไขและตรวจสอบผลแล้ว รอบทดสอบระหว่าง ${thRangeLong(TEST_FROM, TEST_TO)} พบข้อบกพร่องระดับสูงคงค้าง ${open.length} รายการ (${open.map((c) => c[0]).join(', ')}) ซึ่งต้องแจ้งผู้รับมอบและกำหนดการแก้ไขก่อนตรวจรับ`, '## บทเรียนและแนวทางป้องกันสำหรับโครงการถัดไป (Lessons Learned)', 'เมื่อปิดโครงการ ทีมงานทบทวนปัญหาทั้งหมดในทะเบียนนี้ จัดกลุ่มตามสาเหตุ และกำหนดแนวทางป้องกันเพื่อไม่ให้ปัญหาลักษณะเดียวกันเกิดซ้ำในโครงการถัดไป', table(['ลำดับ', 'กลุ่มปัญหา', 'เลขที่ปัญหา', 'จำนวน', 'สิ่งที่เกิดขึ้น', 'แนวทางป้องกัน (Preventive Action)'], LESSONS.map(([theme, issueIds, what, action], i) => [i + 1, theme, issueIds.join(', '), issueIds.length, what, action]), ['c', '', '', 'r', '', '']), '## การเชื่อมโยงกับหลักฐานการทดสอบ', - table(['เลขที่', 'การแก้ไขอ้างอิง (Commit)', 'Test Case ที่ใช้ตรวจสอบ', 'ผลการทดสอบ'], CORRECTIONS.map((c) => [c[0], `\`${c[8]}\``, c[9], 'Passed']), ['c', '', 'c', 'c']), + table(['เลขที่', 'การแก้ไขอ้างอิง (Commit)', 'Test Case ที่ใช้ตรวจสอบ', 'ผลการทดสอบ'], CORRECTIONS.map((c) => [c[0], c[8] ? `\`${c[8]}\`` : '-', c[9], c[2] ? 'Passed' : 'Failed (คงค้าง)']), ['c', '', 'c', 'c']), ].join('\n\n'), secretary: P.YaB, reviewer: P.ApS, approver: P.SeV, }), @@ -100,6 +104,10 @@ export function correctionRegister() { /** 5. Acceptance Report — the sign-off record. */ export function acceptanceReport() { + const open = CORRECTIONS.filter((c) => !c[2]); + const count = resultCounts(); + const failedCrs = CRS.filter(([id]) => crStatus(id, ACCEPT_DATE) === 'Failed'); + const untestedCrs = CRS.filter(([id]) => crStatus(id, ACCEPT_DATE) === 'Not tested'); return { dir: '1-PM Process (10 Work Product)/5.Acceptance Report', name: `${CODE} Acceptance Report ${bud(ACCEPT_DATE)} V1.0 ApS`, @@ -115,26 +123,27 @@ export function acceptanceReport() { body: [ '## รายการสิ่งส่งมอบ (Work Products)', table(['ลำดับ', 'รหัส', 'สิ่งส่งมอบ (Work Product)', 'รายละเอียด', 'ผลการตรวจรับ (Accepted / Not Accepted)'], - WPS.map((w, i) => [i + 1, w[0], w[1], w[0] === 'WP 9.0' ? `${w[2]} (Git baseline \`${BASELINE_COMMIT}\`)` : w[2], 'Accepted']), ['c', 'c', '', '', 'c']), + WPS.map((w, i) => [i + 1, w[0], w[1], w[0] === 'WP 9.0' ? `${w[2]} (Git baseline \`${BASELINE_COMMIT}\`)` : w[2], w[0] === 'WP 9.0' ? 'Accepted (มีเงื่อนไข)' : 'Accepted']), ['c', 'c', '', '', 'c']), '## ผลการตรวจสอบตามเกณฑ์การตรวจรับ', table(['ลำดับ', 'เกณฑ์การตรวจรับ', 'หลักฐานอ้างอิง', 'ผลการตรวจสอบ'], [ - [1, 'ฟังก์ชันในขอบเขตทำงานตรงตาม Customer Requirements ครบทุกรายการ', 'Traceability Record, Test Report', 'ผ่าน'], - [2, 'ทดสอบระบบตาม Test Case ครบถ้วน', `Test Report 45 Test Case ผ่านทั้งหมด (${thRangeLong(TEST_FROM, TEST_TO)})`, 'ผ่าน'], - [3, 'ทดสอบการยอมรับโดยผู้ใช้ (UAT)', `Validation Results ครบ 14 หมวดความต้องการ (${CRS.length} รายการ) ผ่านทั้งหมด`, 'ผ่าน'], - [4, 'ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง', `Correction Register ${CORRECTIONS.length} รายการ แก้ไขและตรวจสอบครบ`, 'ผ่าน'], + [1, 'ฟังก์ชันในขอบเขตทำงานตรงตาม Customer Requirements ครบทุกรายการ', `Traceability Record Table, Validation Results: ไม่ผ่าน ${failedCrs.length} รายการ ยังไม่ได้ทดสอบ ${untestedCrs.length} รายการ`, 'ไม่ผ่าน (มีเงื่อนไข)'], + [2, 'ทดสอบระบบตาม Test Case ครบถ้วน', `Test Report ผ่าน ${count.Passed} ไม่ผ่าน ${count.Failed} ยังไม่ได้ทดสอบ ${count['Not tested']} จาก ${TEST_CASES.length} Test Case (${thRangeLong(TEST_FROM, TEST_TO)})`, 'ไม่ผ่าน (มีเงื่อนไข)'], + [3, 'ทดสอบการยอมรับโดยผู้ใช้ (UAT)', `Validation Results ทดสอบครบ ${CRS.length} รายการ ผลตามข้อ 1`, 'ไม่ผ่าน (มีเงื่อนไข)'], + [4, 'ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง', `Correction Register ข้อบกพร่องระดับสูงคงค้าง ${open.map((c) => c[0]).join(', ')}`, 'ไม่ผ่าน (มีเงื่อนไข)'], [5, 'เอกสารคู่มือผู้ใช้ ผู้ดูแลระบบ และการบำรุงรักษาครบถ้วน', 'Software User Document, Product Operation Guide, Maintenance Document', 'ผ่าน'], [6, 'Source Code และเอกสารจัดเก็บใน Repository พร้อมชุดสำรอง', 'Project Repository, Project Repository (Backup)', 'ผ่าน'], - [7, 'ผลการตรวจสอบ Work Products (Verification)', 'Verification Results รอบที่ 4', 'ผ่าน'], + [7, 'ผลการตรวจสอบ Work Products (Verification)', 'Verification Results รอบที่ 4: ไม่ผ่าน 2 รายการ (ผลการทดสอบ และชุดติดตั้ง Docker)', 'ไม่ผ่าน (มีเงื่อนไข)'], ], ['c', '', '', 'c']), '## สรุปผลการตรวจรับ', table(['รายการ', 'ผลสรุป'], [ ['จำนวนสิ่งส่งมอบทั้งหมด', `${WPS.length} รายการ`], - ['ตรวจรับแล้ว (Accepted)', `${WPS.length} รายการ`], + ['ตรวจรับแล้ว (Accepted)', `${WPS.length - 1} รายการ`], + ['ตรวจรับแบบมีเงื่อนไข', '1 รายการ (WP 9.0 Software)'], ['ไม่ผ่านการตรวจรับ (Not Accepted)', '0 รายการ'], - ['ข้อบกพร่องคงค้าง', 'ไม่มี'], - ['ผลการตรวจรับโดยรวม', '**Accepted** — ตรวจรับส่งมอบระบบครบถ้วน'], + ['ข้อบกพร่องคงค้าง', `${open.length} รายการ (${open.map((c) => c[0]).join(', ')})`], + ['ผลการตรวจรับโดยรวม', '**Accepted with conditions** — ตรวจรับพร้อมเงื่อนไขแก้ไขข้อบกพร่องคงค้าง'], ]), - `ผู้รับมอบได้ตรวจสอบสิ่งส่งมอบทั้งหมดตามเกณฑ์การตรวจรับที่กำหนดในเอกสาร Statement of Work และ Software Project Plan แล้วเห็นว่าครบถ้วนถูกต้อง จึงมีมติตรวจรับส่งมอบระบบเมื่อวันที่ ${thLong(ACCEPT_DATE)} โดยงานอบรมผู้ใช้งานและการปิดงานควบคุมปฏิบัติการจะดำเนินการให้แล้วเสร็จภายในวันที่ ${thLong(END)} ตามแผนปิดโครงการ`, + `ผู้รับมอบได้ตรวจสอบสิ่งส่งมอบทั้งหมดตามเกณฑ์การตรวจรับในเอกสาร Statement of Work และ Software Project Plan แล้ว รับทราบว่ามีข้อบกพร่องระดับสูงคงค้าง ${open.length} รายการ และชุดติดตั้ง Docker ที่ยังไม่ได้ทดสอบ จึงมีมติตรวจรับส่งมอบระบบแบบมีเงื่อนไขเมื่อวันที่ ${thLong(ACCEPT_DATE)} โดยเงื่อนไขคือ (1) แก้ไข ${open.map((c) => c[0]).join(', ')} และทดสอบซ้ำภายใต้การบำรุงรักษาแบบแก้ไข (Corrective) ตาม Maintenance Document และ (2) ทดสอบ TC-UN13.002 และ TC-UN13.003 บน Baseline ก่อนใช้ชุดติดตั้ง Docker ในสภาพแวดล้อมใช้งานจริง`, ].join('\n\n'), secretary: P.ApS, reviewer: P.YaB, approver: P.SeV, }), diff --git a/scripts/sdlc-seed/docs-si.mjs b/scripts/sdlc-seed/docs-si.mjs index 07e9690..7a37547 100644 --- a/scripts/sdlc-seed/docs-si.mjs +++ b/scripts/sdlc-seed/docs-si.mjs @@ -1,6 +1,6 @@ // SI work products 11–22. import { P, CODE, PROJECT_TH, ORGANIZER, ORGANIZER_PM, RECORDER, START, END, SCOPE, CRS, crTopic, TEST_FROM, TEST_TO, ACCEPT_DATE, DEV_BASELINE, BASELINE_COMMIT, TEST_STATE_COMMIT, ORIGIN, BACKUP } from './project.mjs'; -import { SR_GROUPS, SRS, srTopic, UNIT_GROUPS, UNITS, unitTopic, unitModule, TEST_CASES, traceOf } from './engineering.mjs'; +import { SR_GROUPS, SRS, srTopic, UNIT_GROUPS, UNITS, unitTopic, unitModule, TEST_CASES, traceOf, testResult, resultCounts, crStatus } from './engineering.mjs'; import { CORRECTIONS } from './history.mjs'; import { figure } from './figures.mjs'; import { bud, thLong, thShort, thRange, thRangeLong, table, bullets, numbered } from './lib.mjs'; @@ -81,7 +81,7 @@ export function softwareDesign() { figure('useCase'), table(['Actor', 'คำอธิบาย', 'การใช้งานหลัก'], [ ['Owner', 'เจ้าของบริษัท สิทธิ์สูงสุดภายในบริษัท', 'ตั้งค่าบริษัท จัดการผู้ใช้ และใช้งานทุกโมดูล'], - ['Admin', 'ผู้ดูแลระบบภายในบริษัท', 'จัดการข้อมูลหลัก ผู้ใช้ สิทธิ์ และใช้งานทุกโมดูลปฏิบัติการ'], + ['Admin', 'ผู้ดูแลระบบภายในบริษัท', 'จัดการข้อมูลหลักและใช้งานทุกโมดูลปฏิบัติการ (การจัดการผู้ใช้และสิทธิ์เป็นของ Owner)'], ['Staff', 'ผู้ปฏิบัติงาน', 'บันทึกรายการคลังสินค้า ขาย จัดซื้อ และการเงินตามสิทธิ์'], ['Viewer', 'ผู้ใช้แบบอ่านอย่างเดียว', 'ดูหน้าจอและรายงานที่ได้รับสิทธิ์'], ['System Scheduler', 'ผู้กระทำอัตโนมัติ (Node.js)', 'สรุปยอดสต๊อก/GL และแจ้งเตือนตามกำหนดเวลา'], @@ -299,10 +299,14 @@ export function testReport() { const date = '2026-08-14'; const tested = CRS.filter(([id]) => traceOf(id).tcs.length); const byDocument = CRS.length - tested.length; - const rows = tested.map(([id, text], i) => { - const t = traceOf(id); - return [i + 1, t.tc, `ตรวจสอบ ${t.un.map(unitTopic).join(' / ')}`, id, text, 'Passed', thRangeLong(TEST_FROM, TEST_TO)]; + const count = resultCounts(); + const crsOf = (tc) => CRS.filter(([id]) => traceOf(id).tcs.includes(tc)).map(([id]) => id).join(', ') || '-'; + const rows = TEST_CASES.map(([tc, unit], i) => { + const r = testResult(tc); + return [i + 1, tc, unitTopic(unit), crsOf(tc), r.actual, r.status, r.status === 'Not tested' ? '-' : thRangeLong(TEST_FROM, TEST_TO)]; }); + const failed = TEST_CASES.filter(([tc]) => testResult(tc).status === 'Failed'); + const issues = [...new Set(failed.map(([tc]) => testResult(tc).issue))]; return { dir: '2-SI Process (12 Work Product)/16.Test Report', name: `${CODE} Test Report ${bud(date)} V1.0 PaNg`, @@ -324,27 +328,28 @@ export function testReport() { [2, 'Non-Functional Test', 'ประสิทธิภาพ, ความปลอดภัย (สิทธิ์/TLS/การเข้ารหัสรหัสผ่าน), การแยกข้อมูล, การสำรองและกู้คืน'], [3, 'Environment', 'Internal Testing Server (PHP 8, MariaDB, Node.js)'], [4, 'ช่วงเวลา', `รอบทดสอบระบบ ${thRangeLong(TEST_FROM, TEST_TO)}`], - [5, 'Baseline ที่ใช้ทดสอบ', `สถานะ Repository ที่ใกล้เคียงที่สุด Commit \`${TEST_STATE_COMMIT}\``], + [5, 'Build ที่ใช้ทดสอบ', `Commit \`${TEST_STATE_COMMIT}\` บน Branch main (การแก้ไขโค้ดล่าสุดก่อนรอบทดสอบ)`], ], ['c']), '## สรุปผลการทดสอบ', table(['รายการ', 'จำนวน'], [ ['Test Case ที่กำหนดทั้งหมด', TEST_CASES.length], - ['ดำเนินการทดสอบ', TEST_CASES.length], - ['ผ่าน (Passed)', TEST_CASES.length], - ['ไม่ผ่าน (Failed)', 0], - ['ค้าง (Blocked / Pending)', 0], + ['ดำเนินการทดสอบ', count.Passed + count.Failed], + ['ผ่าน (Passed)', count.Passed], + ['ไม่ผ่าน (Failed)', count.Failed], + ['ยังไม่ได้ทดสอบ (ฟังก์ชันส่งมอบหลังรอบทดสอบ)', count['Not tested']], ], ['', 'r']), '## Verification Items', - table(['No', 'Test Case', 'Software Testing', 'Customer Req. ID', 'Customer Req. Topic', 'Status', 'Test Date'], rows, ['c', 'c', '', 'c', '', 'c', 'c']), + table(['No', 'Test Case', 'Software Unit', 'Customer Req. ID', 'Actual Result', 'Status', 'Test Date'], rows, ['c', 'c', '', '', '', 'c', 'c']), `ความต้องการที่ยืนยันด้วย Test Case มี ${tested.length} รายการ ส่วนอีก ${byDocument} รายการเป็นความต้องการด้านเอกสาร การอบรม และหลักฐานด้านคุณภาพ ซึ่งยืนยันด้วยเอกสารส่งมอบตามที่ระบุใน Traceability Record และได้รับการยืนยันจากลูกค้าใน Validation Results`, '## Summary', table(['No', 'Topic', 'Detail'], [ - [1, 'Test Case', `ทดสอบตาม Customer Requirements ผ่านทั้งหมด ${TEST_CASES.length} Test Case คิดเป็น 100%`], - [2, 'Pending', 'ไม่พบข้อผิดพลาด (Fail) หรือรายการค้าง (Pending) ในรอบการทดสอบนี้'], - [3, 'Conclusion', 'ผลการทดสอบสรุปได้ว่าระบบพร้อมสำหรับ UAT และการส่งมอบ เนื่องจากผลการทดสอบผ่านครบ 100% และเป็นไปตาม Project Plan'], + [1, 'Test Case', `ทดสอบ ${count.Passed + count.Failed} จาก ${TEST_CASES.length} Test Case ผ่าน ${count.Passed} ไม่ผ่าน ${count.Failed}`], + [2, 'Failed', `${failed.map(([tc]) => tc).join(', ')} บันทึกเป็นข้อบกพร่องคงค้าง ${issues.join(', ')} ใน Correction Register`], + [3, 'Not tested', `${TEST_CASES.filter(([tc]) => testResult(tc).status === 'Not tested').map(([tc]) => tc).join(', ')} ฟังก์ชันส่งมอบหลังรอบทดสอบ (Task 4.7) ต้องทดสอบก่อนใช้งาน`], + [4, 'Conclusion', 'ฟังก์ชันหลักผ่านการทดสอบ แต่ยังมีข้อบกพร่องด้านความปลอดภัยและความถูกต้องของข้อมูลคงค้าง ต้องแจ้งผู้รับมอบและกำหนดการแก้ไขก่อนตรวจรับ'], ], ['c']), '## หลักฐานประกอบทางอ้อม', - `Correction Register บันทึกการแก้ไขข้อบกพร่องที่พบระหว่างพัฒนา ${CORRECTIONS.length} รายการ ซึ่งได้รับการแก้ไขและตรวจสอบผลด้วย Test Case ที่เกี่ยวข้องครบทุกรายการ`, + `Correction Register บันทึกข้อบกพร่อง ${CORRECTIONS.length} รายการ แก้ไขแล้ว ${CORRECTIONS.filter((c) => c[2]).length} รายการ และคงค้างจากรอบทดสอบนี้ ${CORRECTIONS.filter((c) => !c[2]).length} รายการ`, ].join('\n\n'), secretary: P.PaNg, reviewer: P.NoC, approver: P.SeV, }), @@ -382,8 +387,8 @@ export function software() { table(['ลำดับ', 'หลักฐาน', 'รายละเอียด'], [ [1, 'Source Code และ Baseline', `Commit \`${BASELINE_COMMIT}\` ควบคุมใน Repository หลักและสำรอง`], [2, 'ชุดติดตั้งระบบ', 'Docker Compose Stack และสคริปต์ `setup.php` สำหรับสร้างฐานข้อมูล'], - [3, 'ผลการทดสอบระบบ', `Test Report ${TEST_CASES.length} Test Case ผ่านทั้งหมด`], - [4, 'ผลการทดสอบการยอมรับ', `Validation Results ครบ 14 หมวด ${CRS.length} รายการ ผ่านทั้งหมด`], + [3, 'ผลการทดสอบระบบ', (({ Passed: ok, Failed: bad, 'Not tested': none }) => `Test Report ${TEST_CASES.length} Test Case ผ่าน ${ok} ไม่ผ่าน ${bad} ยังไม่ได้ทดสอบ ${none}`)(resultCounts())], + [4, 'ผลการทดสอบการยอมรับ', (() => { const s = CRS.map(([id]) => crStatus(id, date)); const n = (x) => s.filter((v) => v === x).length; return `Validation Results ${CRS.length} รายการ ผ่าน ${n('Passed')} ไม่ผ่าน ${n('Failed')} ยังไม่ได้ทดสอบ ${n('Not tested')} รอดำเนินการ ${n('Pending')}`; })()], [5, 'การตรวจรับส่งมอบ', `เสนอ Project Sponsor ตรวจรับตามแผนในวันที่ ${thLong(ACCEPT_DATE)} (Acceptance Report)`], [6, 'คู่มือประกอบการใช้งาน', 'Software User Document, Product Operation Guide, Maintenance Document'], ], ['c']), diff --git a/scripts/sdlc-seed/docs-si2.mjs b/scripts/sdlc-seed/docs-si2.mjs index 3b5679e..596b2d6 100644 --- a/scripts/sdlc-seed/docs-si2.mjs +++ b/scripts/sdlc-seed/docs-si2.mjs @@ -1,6 +1,6 @@ // SI work products 18–22: user documentation, operation guide, maintenance, verification, validation. import { P, CODE, ORGANIZER, ORGANIZER_PM, RECORDER, START, END, SCOPE, CRS, CR_GROUPS, TEST_FROM, TEST_TO, ACCEPT_DATE, BASELINE_COMMIT, TEST_STATE_COMMIT, ORIGIN, BACKUP, OPS_CLOSE_DATE } from './project.mjs'; -import { UNITS, TEST_CASES, traceOf, unitTopic } from './engineering.mjs'; +import { UNITS, TEST_CASES, traceOf, unitTopic, testResult, resultCounts, crStatus, PENDING_UNTIL } from './engineering.mjs'; import { CORRECTIONS, VERIFICATION_ROUNDS, VERIFICATION_RULES } from './history.mjs'; import { bud, thLong, thRangeLong, table, bullets, numbered } from './lib.mjs'; import { workProduct, head } from './format.mjs'; @@ -311,9 +311,9 @@ export function verificationResults() { ['ลงชื่อผู้จัดทำและผู้อนุมัติเรียบร้อย', 'มีตารางลงนามครบถ้วน'], ], 'YaB'], 'WP 9.0': ['ระบบที่ผ่านการทดสอบพร้อมใช้งานจริง', [ - ['ระบบติดตั้งและใช้งานได้บนสภาพแวดล้อมที่กำหนด', `ติดตั้งสำเร็จและใช้งานได้ Baseline \`${BASELINE_COMMIT}\``], + ['ระบบติดตั้งและใช้งานได้บนสภาพแวดล้อมที่กำหนด', `Build \`${TEST_STATE_COMMIT}\` ติดตั้งและใช้งานบน Internal Testing Server ได้ ชุดติดตั้ง Docker ใน Baseline \`${BASELINE_COMMIT}\` ยังไม่ได้ทดสอบ`, 'Failed', 'ทดสอบ TC-UN13.002 และ TC-UN13.003 บน Baseline ก่อนใช้งานจริง'], ['Source Code จัดเก็บใน Repository พร้อมชุดสำรอง', 'จัดเก็บครบทั้ง Repository หลักและสำรอง'], - ['ผลการทดสอบระบบผ่านครบทุก Test Case', 'ผ่านครบ 45 Test Case'], + ['ผลการทดสอบระบบผ่านครบทุก Test Case', (({ Passed: ok, Failed: bad, 'Not tested': none }) => `ผ่าน ${ok} ไม่ผ่าน ${bad} ยังไม่ได้ทดสอบ ${none} จาก ${TEST_CASES.length} Test Case`)(resultCounts()), 'Failed', 'ข้อบกพร่องคงค้างบันทึกใน Correction Register ต้องมีแผนแก้ไขก่อนตรวจรับ'], ], 'ThS'], 'WP 10.0': ['Product Operation Guide', [ ['รายละเอียดและความถูกต้องของ Header ของเอกสาร', 'มีรายละเอียดครบถ้วนถูกต้อง'], @@ -331,12 +331,16 @@ export function verificationResults() { return ROUNDS.map((r) => { const rows = []; let n = 0; + let failed = 0; for (const wp of r.wps) { const [wpName, checks, owner] = CHECKS[wp]; rows.push([`${wp} ${wpName}`, '', '', '', '', '']); checks.forEach((c, i) => { n += 1; - rows.push([`VR${String(r.no).padStart(2, '0')}.${wp.replace(/\D/g, '').padStart(3, '0')}.${String(i + 1).padStart(3, '0')}`, c[0], c[1], 'Passed', P[owner].id, '']); + // An item passes unless it records its own result and recommendation. + const [item, evidence, result = 'Passed', comment = ''] = c; + if (result !== 'Passed') failed += 1; + rows.push([`VR${String(r.no).padStart(2, '0')}.${wp.replace(/\D/g, '').padStart(3, '0')}.${String(i + 1).padStart(3, '0')}`, item, evidence, result, P[owner].id, comment]); }); } return { @@ -363,12 +367,12 @@ export function verificationResults() { '## สรุปผลการตรวจสอบรอบนี้', table(['รายการ', 'จำนวน'], [ ['รายการตรวจสอบทั้งหมด', n], - ['ผลผ่าน (Passed)', n], - ['ผลไม่ผ่าน (Failed)', 0], - ['ประเด็นคงค้าง', 0], + ['ผลผ่าน (Passed)', n - failed], + ['ผลไม่ผ่าน (Failed)', failed], + ['ประเด็นคงค้าง', failed], ], ['', 'r']), r.no === 4 - ? `รอบตรวจสอบนี้เป็นรอบสุดท้ายก่อนส่งมอบ ครอบคลุมสิ่งส่งมอบทั้งหมด ${r.wps.length} รายการ ผลการตรวจสอบผ่านทุกรายการ จึงเห็นควรให้ดำเนินการตรวจรับส่งมอบระบบตามที่บันทึกใน Acceptance Report` + ? `รอบตรวจสอบนี้เป็นรอบสุดท้ายก่อนส่งมอบ ครอบคลุมสิ่งส่งมอบทั้งหมด ${r.wps.length} รายการ ผ่าน ${n - failed} รายการ ไม่ผ่าน ${failed} รายการ คือผลการทดสอบระบบที่ยังมีข้อบกพร่องคงค้าง และชุดติดตั้ง Docker ที่ยังไม่ได้ทดสอบ จึงเสนอให้ผู้รับมอบพิจารณาการตรวจรับพร้อมแผนแก้ไขข้อบกพร่องคงค้าง` : `ผลการตรวจสอบรอบนี้ผ่านทุกรายการ ประเด็นที่พบระหว่างการตรวจสอบได้รับการแก้ไขและบันทึกใน Correction Register แล้ว การตรวจสอบรอบถัดไปจะครอบคลุมสิ่งส่งมอบที่จัดทำเพิ่มเติมในช่วงถัดไป`, ].join('\n\n'), secretary: P.PaNg, reviewer: P.YaB, approver: P.SeV, @@ -406,15 +410,20 @@ export function validationResults() { const evidence = (id) => { const t = traceOf(id); const ev = AT_UAT[id] ?? t.ev; - return [t.tcs.length ? t.tc : '', ev].filter(Boolean).join(' / '); + const issues = [...new Set(t.tcs.map((tc) => testResult(tc).issue).filter(Boolean))]; + const pending = crStatus(id, date) === 'Pending' ? PENDING_UNTIL[id][1] : ''; + return [t.tcs.length ? t.tc : '', ev, issues.length ? `ข้อบกพร่องคงค้าง ${issues.join(', ')}` : '', pending].filter(Boolean).join(' / '); }; + const status = (id) => crStatus(id, date); const rows = []; const summary = []; for (const [gid, gname, items] of CR_GROUPS) { rows.push([gid, `**${gname}**`, '', '', '', '']); - for (const [id, text] of items) rows.push([id, text, METHOD[gid], evidence(id), 'Passed', P.SeV.id]); - summary.push([`${gid} ${gname}`, items.length, items.length, 0]); + for (const [id, text] of items) rows.push([id, text, METHOD[gid], evidence(id), status(id), P.SeV.id]); + const n = (s) => items.filter(([id]) => status(id) === s).length; + summary.push([`${gid} ${gname}`, items.length, n('Passed'), n('Failed'), n('Not tested') + n('Pending')]); } + const all = (s) => CRS.filter(([id]) => status(id) === s).length; if (Object.keys(METHOD).length !== CR_GROUPS.length) throw new Error('Every CR group needs a validation method.'); return { dir: '2-SI Process (12 Work Product)/22.Validation Result', @@ -438,21 +447,23 @@ export function validationResults() { ['ผู้บันทึกผล', `${P.PaNg.th} (QA/Tester)`], ['ช่วงเวลาทดสอบ', thRangeLong(TEST_FROM, TEST_TO)], ['ขอบเขตการทดสอบ', `Customer Requirements ครบ ${CR_GROUPS.length} หมวด ${CRS.length} รายการ (CR01–CR14)`], - ['สถานะ Repository ที่ใกล้เคียงที่สุด', `Commit \`${TEST_STATE_COMMIT}\``], + ['Build ที่ใช้ทดสอบ', `Commit \`${TEST_STATE_COMMIT}\` บน Branch main`], + ['ลำดับการทดสอบ', 'ทดสอบการยอมรับคู่ขนานกับการทดสอบระบบตามมติที่ประชุม 10 ส.ค. 69 ซึ่งต่างจากเกณฑ์เข้าสู่ UAT ใน Test Case and Test Procedures'], ]), '## ตารางสรุป Validation Result ตาม Customer Requirements', table(['CR ID', 'Customer Requirement', 'วิธีการยืนยัน', 'หลักฐานอ้างอิง', 'Status', 'Tester'], rows, ['', '', '', '', 'c', 'c']), '## สรุปผลการทดสอบการยอมรับรายหมวด', - table(['หมวดความต้องการ', 'จำนวนรายการ', 'ผ่าน (Passed)', 'ไม่ผ่าน (Failed)'], summary, ['', 'r', 'r', 'r']), + table(['หมวดความต้องการ', 'จำนวนรายการ', 'ผ่าน (Passed)', 'ไม่ผ่าน (Failed)', 'ยังไม่ได้ทดสอบ / รอดำเนินการ'], summary, ['', 'r', 'r', 'r', 'r']), '## สรุปผลการทดสอบการยอมรับ', table(['รายการ', 'จำนวน'], [ ['หมวดความต้องการที่ทดสอบ', CR_GROUPS.length], ['ความต้องการที่ทดสอบทั้งหมด', CRS.length], - ['ผ่าน (Passed)', CRS.length], - ['ไม่ผ่าน (Failed)', 0], - ['ค้างการทดสอบ', 0], + ['ผ่าน (Passed)', all('Passed')], + ['ไม่ผ่าน (Failed)', all('Failed')], + ['ยังไม่ได้ทดสอบ (ฟังก์ชันส่งมอบหลังรอบทดสอบ)', all('Not tested')], + ['รอดำเนินการตามแผน (Pending)', all('Pending')], ], ['', 'r']), - `ตัวแทนลูกค้าได้ทดสอบการยอมรับครบทุกความต้องการใน Customer Requirements บนสภาพแวดล้อมใช้งานจริง ผลการทดสอบผ่านทั้งหมด ไม่พบประเด็นที่ขัดขวางการเปิดใช้งาน จึงยืนยันความพร้อมของระบบและเสนอเข้าสู่การตรวจรับส่งมอบตามแผนในวันที่ ${thLong(ACCEPT_DATE)}`, + `ตัวแทนลูกค้าทดสอบการยอมรับครบ ${CRS.length} ความต้องการ ผ่าน ${all('Passed')} รายการ ความต้องการ ${all('Failed')} รายการไม่ผ่านเนื่องจากข้อบกพร่องคงค้างที่บันทึกใน Correction Register ${all('Not tested')} รายการขึ้นกับชุดติดตั้ง Docker ที่ส่งมอบหลังรอบทดสอบ และ ${all('Pending')} รายการรองานปฏิบัติการตามแผน ผู้รับมอบรับทราบผลและจะพิจารณาการตรวจรับพร้อมแผนแก้ไขในวันที่ ${thLong(ACCEPT_DATE)}`, ].join('\n\n'), secretary: P.PaNg, reviewer: P.NoC, approver: P.SeV, }), diff --git a/scripts/sdlc-seed/engineering.mjs b/scripts/sdlc-seed/engineering.mjs index 0f8a275..86b1c85 100644 --- a/scripts/sdlc-seed/engineering.mjs +++ b/scripts/sdlc-seed/engineering.mjs @@ -80,7 +80,7 @@ export const UNIT_GROUPS = [ ['UN01.001', 'Identity – Register & Onboarding', 'ลงทะเบียนเจ้าของบริษัท, ยืนยันอีเมล, เชิญผู้ใช้และรับคำเชิญเข้าบริษัทที่ถูกต้อง', 'SR03:001, SR08:001', 'app/login/, UserManager.php'], ['UN01.002', 'Identity – Login & Role Guard', 'เข้าสู่ระบบด้วย Username/Password, ตรวจบทบาทและสิทธิ์แอปพลิเคชันฝั่งเซิร์ฟเวอร์ก่อนเข้าทุกหน้า', 'SR03:001, SR04:001, SR07:005', 'app/login/, UserManager.php, app/assets/utils/'], ['UN01.003', 'Identity – Password Recovery / OTP / Session', 'ลืมรหัสผ่านผ่านอีเมล, OTP, Hash รหัสผ่าน bcrypt, บล็อก Concurrent Login', 'SR03:001, SR01:004, SR07:003', 'PasswordManager.php, PasswordResetManager.php'], - ['UN01.004', 'Identity – User & App-Access Administration', 'เพิ่ม/แก้ไข/ปิดใช้ผู้ใช้, กำหนดบทบาทและสิทธิ์การเข้าถึงแอปพลิเคชัน', 'SR03:001, SR08:001', 'app/setting/, UserManager.php'], + ['UN01.004', 'Identity – User & App-Access Administration', 'Owner เชิญ/แก้ไขบทบาทและสิทธิ์แอปพลิเคชัน/ลบผู้ใช้ และส่งคำเชิญซ้ำ', 'SR03:001, SR08:001', 'app/setting/api/engine/manage_users.php, UserManager.php'], ]], ['UN02', 'ตั้งค่าบริษัท (Company Settings)', [ ['UN02.001', 'Company – Profile & System Settings', 'แก้ไขข้อมูลบริษัท, โลโก้, ค่าตั้งค่าระบบต่อบริษัท', 'SR03:002', 'CompanyProfileManager.php, CompanySettingManager.php'], @@ -94,7 +94,7 @@ export const UNIT_GROUPS = [ ]], ['UN04', 'ควบคุมสินค้าคงคลัง (Inventory Control)', [ ['UN04.001', 'ICS – Stock-in', 'รับสินค้าเข้าตามสินค้า จำนวน ตำแหน่ง เอกสารอ้างอิง สร้างความเคลื่อนไหวและยอดคงเหลือ', 'SR03:004, SR08:003', 'app/ics/, StockManager.php, StockTablesTrait.php'], - ['UN04.002', 'ICS – Stock-out', 'จ่ายสินค้าออกโดยตรวจสิทธิ์และยอดคงเหลือ ปฏิเสธจำนวนเกิน', 'SR03:004, SR09:003', 'StockManager.php'], + ['UN04.002', 'ICS – Stock-out', 'จ่ายสินค้าออกทั้งยอดของช่องจัดเก็บโดยตรวจสิทธิ์ ยอดคงเหลือไม่ติดลบ', 'SR03:004, SR09:003', 'StockManager.php, OrderManager.php'], ['UN04.003', 'ICS – Stock Transfer', 'โอนย้ายระหว่างตำแหน่ง ต้นทาง/ปลายทางผูกเป็นรายการเดียว', 'SR03:004', 'StockManager.php'], ['UN04.004', 'ICS – Lot / Serial / Expiry', 'บันทึกและสอบกลับ Lot, Serial Number, วันหมดอายุ', 'SR03:004, SR08:002', 'StockSourceManager.php, md_lot'], ['UN04.005', 'ICS – Barcode Label & Scan', 'พิมพ์ฉลากบาร์โค้ด SKU/ตำแหน่ง และรับค่าจากเครื่องสแกน', 'SR03:004', 'BarcodeManager.php, location_barcode_label.php'], @@ -109,7 +109,7 @@ export const UNIT_GROUPS = [ ['UN06', 'จัดซื้อ (Purchasing)', [ ['UN06.001', 'Purchasing – Purchase Request', 'สร้างและอนุมัติใบขอซื้อ', 'SR03:006', 'app/po/, PurchaseRequestManager.php'], ['UN06.002', 'Purchasing – Purchase Order', 'แปลงใบขอซื้อเป็นใบสั่งซื้อ และติดตามสถานะ', 'SR03:006, SR04:002', 'PurchaseOrderManager.php'], - ['UN06.003', 'Purchasing – Purchase Invoice', 'บันทึกใบแจ้งหนี้ซื้อ รับสินค้าเข้า และบันทึก GL', 'SR03:006, SR04:002', 'PurchaseOrderManager.php, StockManager.php'], + ['UN06.003', 'Purchasing – Purchase Invoice', 'รับสินค้าตามใบสั่งซื้อ และบันทึกใบแจ้งหนี้ซื้อพร้อมผ่าน GL', 'SR03:006, SR04:002', 'PurchaseOrderManager.php, app/expense/purchase_invoice.php, PurchaseInvoicePosting.php'], ['UN06.004', 'Purchasing – Supplier Return', 'คืนสินค้าผู้ขาย พร้อมปรับสต๊อก/บัญชี', 'SR03:006, SR04:002', 'SupplierReturnManager.php'], ]], ['UN07', 'การเงิน (Finance)', [ @@ -117,19 +117,19 @@ export const UNIT_GROUPS = [ ['UN07.002', 'Finance – Payment Billing & Payment', 'วางบิลจ่ายและบันทึกใบสำคัญจ่ายผูกกับใบแจ้งหนี้ซื้อ', 'SR03:007, SR04:002', 'PaymentBillingManager.php, PaymentManager.php'], ]], ['UN08', 'บัญชี (Accounting)', [ - ['UN08.001', 'Accounting – Chart of Accounts / Departments / Formulas', 'จัดการผังบัญชี แผนก และสูตรบัญชีอัตโนมัติ', 'SR03:008, SR08:002', 'app/accounting/, PostingManager.php'], - ['UN08.002', 'Accounting – Journal & GL Posting', 'บันทึกสมุดรายวันและผ่านรายการ GL แบบสมดุลภายใน Transaction', 'SR03:008, SR09:003', 'app/journal/, PostingManager.php'], + ['UN08.001', 'Accounting – Chart of Accounts / Departments / Formulas', 'จัดการผังบัญชี แผนก และสูตรบัญชีอัตโนมัติ', 'SR03:008, SR08:002', 'app/accounting/, GlManager.php'], + ['UN08.002', 'Accounting – Journal & GL Posting', 'บันทึกสมุดรายวันและผ่านรายการ GL ตามช่วงเวลาที่เปิดผ่านรายการ', 'SR03:008, SR09:003', 'app/accounting/api/engine/save_manual_journal.php, GlManager.php, BasePosting.php, PostingWindowGuard.php'], ]], ['UN09', 'รายงานและแดชบอร์ด (Reports & Dashboard)', [ ['UN09.001', 'Reports – Dashboard & Aggregates', 'แดชบอร์ดคลังสินค้าและบัญชีจากตารางสรุปยอด', 'SR03:009, SR05:001, SR05:002', 'app/dashboard/, app/ac_dashboard/, EtlStockManager.php'], ['UN09.002', 'Reports – Stock Reports', 'ภาพรวมสต๊อก, ความเคลื่อนไหว, ความจุ, สินค้าใกล้หมด, หมดอายุ, Lot', 'SR03:009', 'app/reports/, ReportManager.php'], - ['UN09.003', 'Reports – Financial Reports', 'งบทดลอง, งบกำไรขาดทุน, งบดุล, VAT, สมุดรายวัน, ความเคลื่อนไหว GL', 'SR03:009', 'ReportManager.php'], + ['UN09.003', 'Reports – Financial Reports', 'งบทดลอง, งบกำไรขาดทุน, งบดุล, VAT, สมุดรายวัน, ความเคลื่อนไหว GL', 'SR03:009', 'app/accounting/ (trial_balance, pl_statement, balance_sheet, vat_report, journal_listing, gl_movement)'], ['UN09.004', 'Reports – Filter / Print / Export', 'กรอง ดู พิมพ์ และส่งออกรายงานตามขอบเขตสิทธิ์', 'SR03:009, SR04:003', 'app/reports/'], ]], ['UN10', 'ควบคุมเอกสาร (Document Control)', [ ['UN10.001', 'Document – Numbering', 'ออกเลขที่เอกสารตามลำดับที่กำหนด (document_number_sequences)', 'SR03:010, SR04:005, SR08:004', 'DocumentNumberManager.php'], ['UN10.002', 'Document – Lifecycle & Status', 'ควบคุมสถานะเอกสาร ปฏิเสธการเปลี่ยนสถานะที่ไม่ถูกต้อง พร้อม Confirm Dialog และข้อความข้อผิดพลาด', 'SR03:010, SR09:001, SR09:002', 'BatchActionManager.php, Manager classes'], - ['UN10.003', 'Document – Audit Fields & History', 'บันทึกผู้สร้าง ผู้แก้ไข วันที่ และประวัติรายการ', 'SR03:010, SR09:001', 'td_* tables, td_bin_log'], + ['UN10.003', 'Document – Audit Fields & History', 'บันทึกผู้ทำรายการ วันเวลา และข้อมูลที่ส่งในคอลัมน์ log ของรายการ และประวัติช่องจัดเก็บ', 'SR03:010, SR09:001', 'db_auth.php (log), td_* tables, td_bin_log'], ]], ['UN11', 'แจ้งเตือนและงานตามกำหนดเวลา (Notification & Scheduler)', [ ['UN11.001', 'Node – Socket.IO Notification Server', 'รับเหตุการณ์จาก PHP ผ่าน Endpoint ที่ป้องกันด้วย Secret และส่งต่อไปยัง Browser ของผู้ใช้ที่เกี่ยวข้อง', 'SR03:011, SR04:004, SR06:004, SR06:005', 'nodejs/server.js'], @@ -138,14 +138,14 @@ export const UNIT_GROUPS = [ ['UN12', 'ความปลอดภัยและการแยกข้อมูล (Security & Tenant Scope)', [ ['UN12.001', 'Security – Tenant Scope Guard', 'จำกัดทุก Query และ Action ให้อยู่ในบริษัท/คลังที่ผู้ใช้ได้รับอนุญาต', 'SR04:001, SR04:003, SR07:002', 'StockTablesTrait.php, Manager classes'], ['UN12.002', 'Security – Server-side Validation', 'ตรวจสอบข้อมูลนำเข้า, Prepared Statements, Escape Output ป้องกัน SQLi/XSS', 'SR07:002, SR07:004', 'Manager classes, app/assets/utils/'], - ['UN12.003', 'Security – Operation Lock & Usage Guard', 'ล็อกช่วงเวลาผ่านรายการ และจำกัดโควตารายการต่อบริษัท', 'SR07:002, SR09:003', 'OperationLockManager.php, UsageGuard.php'], + ['UN12.003', 'Security – Posting Window & Usage Guard', 'ปฏิเสธการผ่านรายการนอกช่วงเวลาที่เปิด และล็อกแดชบอร์ด/รายงานเมื่อใช้งานเกินแพ็กเกจ', 'SR07:002, SR09:003', 'PostingWindowGuard.php, UsageGuard.php'], ['UN12.004', 'Security – TLS & Secret Configuration', 'ค่าตั้งค่า TLS, NODE_EMIT_SECRET และ Secrets ที่สร้างตอนติดตั้ง', 'SR07:001, SR01:005', 'docker/php/config.php.template, .env'], ]], ['UN13', 'ติดตั้งและสำรองข้อมูล (Deployment & Backup)', [ ['UN13.001', 'Deploy – setup.php Schema Installer', 'สร้างฐานข้อมูล wms/wms2 และตารางทั้งหมดในขั้นตอนเดียว', 'SR01:003, SR08:005, SR06:001', 'setup.php, docker/mariadb/init-wms2.sql'], - ['UN13.002', 'Deploy – Docker Compose Stack', 'Container php-apache, mariadb, node/pm2 พร้อม Entrypoint สร้าง config.php', 'SR02:005, SR01:003', 'docker-compose.yml, docker/'], + ['UN13.002', 'Deploy – Docker Compose Stack', 'Service db, php, node พร้อม Entrypoint สร้าง config.php', 'SR02:005, SR01:003', 'docker-compose.yml, docker/'], ['UN13.003', 'Deploy – .env Generator', 'สร้าง .env และความลับอัตโนมัติ ไม่เก็บใน Git', 'SR01:005', 'docker/init-env.sh, .env.example'], - ['UN13.004', 'Deploy – Backup & Restore', 'สำรอง Git 2 Remote, mysqldump รายวัน, ขั้นตอนกู้คืน', 'SR01:003', 'Product Operation Guide, backup remote'], + ['UN13.004', 'Deploy – Backup & Restore', 'สำรอง Git 2 Remote, สำรองฐานข้อมูลด้วย mysqldump และขั้นตอนกู้คืน', 'SR01:003', 'Product Operation Guide, backup remote'], ]], ]; export const UNITS = UNIT_GROUPS.flatMap(([, , rows]) => rows); @@ -161,7 +161,7 @@ export const TEST_CASES = [ ['TC-UN01.001', 'UN01.001', 'ลงทะเบียนเจ้าของบริษัทใหม่ → ยืนยันอีเมล → เชิญผู้ใช้ → ผู้ใช้กดลิงก์เชิญ', 'สร้างบริษัท/บัญชีเจ้าของสำเร็จ ผู้ใช้ที่ถูกเชิญเข้าบริษัทที่ถูกต้อง', ENV_WEB + ', SMTP ทดสอบ', 'ต้องส่งอีเมลได้จริง', '-'], ['TC-UN01.002', 'UN01.002', 'เข้าสู่ระบบด้วยบัญชี Owner/Admin/Staff/Viewer แล้วเรียกหน้าและ Action ที่ไม่ได้รับสิทธิ์', 'แต่ละบทบาทเข้าถึงได้เฉพาะหน้าจอ/คำสั่งที่อนุญาต คำสั่งที่ไม่ได้รับสิทธิ์ถูกปฏิเสธฝั่งเซิร์ฟเวอร์', ENV_WEB, 'ต้องมีบัญชีทดสอบครบ 4 บทบาท', 'TC-UN01.001'], ['TC-UN01.003', 'UN01.003', 'ขอรีเซ็ตรหัสผ่าน → กรอก OTP → ตั้งรหัสใหม่; เข้าสู่ระบบบัญชีเดิมจาก 2 อุปกรณ์', 'รีเซ็ตสำเร็จโดยไม่เปิดเผยรหัสผ่านเดิม Session ที่สองถูกปฏิเสธ', ENV_WEB + ', SMTP ทดสอบ', '-', 'TC-UN01.002'], - ['TC-UN01.004', 'UN01.004', 'Admin เพิ่มผู้ใช้ เปลี่ยนบทบาท และปิดสิทธิ์แอปพลิเคชัน; Staff ลองทำรายการเดียวกัน', 'การเปลี่ยนแปลงของ Admin ถูกบันทึก Staff ถูกปฏิเสธ', ENV_WEB, '-', 'TC-UN01.002'], + ['TC-UN01.004', 'UN01.004', 'Owner เชิญผู้ใช้ แก้ไขบทบาทและสิทธิ์แอปพลิเคชัน และลบผู้ใช้; Admin และ Staff ลองทำรายการเดียวกัน', 'การเปลี่ยนแปลงของ Owner ถูกบันทึก สิทธิ์แอปพลิเคชันไม่เกินสิทธิ์ของ Owner Admin และ Staff ถูกปฏิเสธ (HTTP 403)', ENV_WEB, 'บัญชี Owner, Admin, Staff ในบริษัทเดียวกัน', 'TC-UN01.002'], ['TC-UN02.001', 'UN02.001', 'แก้ไขข้อมูลบริษัทและค่าตั้งค่าระบบ', 'ค่าใหม่ถูกบันทึกและมีผลกับบริษัทนั้นเท่านั้น', ENV_WEB, '-', 'TC-UN01.002'], ['TC-UN02.002', 'UN02.002', 'ตั้งค่า SMTP แล้วส่งอีเมลทดสอบ/คำเชิญ', 'อีเมลถูกส่งผ่าน SMTP ของบริษัทและได้รับที่ปลายทาง', ENV_WEB + ', SMTP ทดสอบ', 'ต้องมีบัญชี SMTP ทดสอบ', 'TC-UN02.001'], ['TC-UN03.001', 'UN03.001', 'เพิ่ม/แก้ไข/ปิดใช้ คลังสินค้า พื้นที่ และช่องจัดเก็บ; กรอกความจุไม่ถูกต้อง', 'รายการถูกต้องถูกบันทึก ข้อมูลผิดถูกปฏิเสธพร้อมข้อความ', ENV_WEB, '-', 'TC-UN01.002'], @@ -169,7 +169,7 @@ export const TEST_CASES = [ ['TC-UN03.003', 'UN03.003', 'เพิ่มประเภทผู้ติดต่อ ลูกค้า และผู้ขาย', 'ผู้ติดต่อเลือกใช้ในเอกสารขาย/ซื้อได้', ENV_WEB, '-', 'TC-UN01.002'], ['TC-UN03.004', 'UN03.004', 'ตั้งบริษัท A เป็นคลังชั้นเดียว บริษัท B เป็นคลัง/พื้นที่/ช่อง แล้วรับสินค้าเข้า', 'ทั้งสองบริษัททำรายการได้ถูกต้องตามโครงสร้างของตน', ENV_WEB + ', 2 บริษัททดสอบ', '-', 'TC-UN03.001'], ['TC-UN04.001', 'UN04.001', 'รับสินค้าเข้า ระบุสินค้า จำนวน ตำแหน่ง เอกสารอ้างอิง; กรอกจำนวนติดลบ', 'สร้างความเคลื่อนไหวและยอดคงเหลือถูกต้อง จำนวนติดลบถูกปฏิเสธ', ENV_WEB, '-', 'TC-UN03.002'], - ['TC-UN04.002', 'UN04.002', 'จ่ายสินค้าออกภายในยอดคงเหลือ และจ่ายเกินยอด', 'ยอดลดลงถูกต้อง การจ่ายเกินยอดถูกปฏิเสธ', ENV_WEB, '-', 'TC-UN04.001'], + ['TC-UN04.002', 'UN04.002', 'จ่ายสินค้าออกจากช่องจัดเก็บที่มียอด; ยืนยันใบสั่งขายที่จำนวนเกินยอดคงเหลือ', 'ยอดช่องจัดเก็บลดเป็นศูนย์และบันทึกความเคลื่อนไหว ยอดไม่ติดลบ ใบสั่งขายที่เกินยอดถูกปฏิเสธพร้อมข้อความ', ENV_WEB, '-', 'TC-UN04.001'], ['TC-UN04.003', 'UN04.003', 'โอนย้ายระหว่าง 2 ตำแหน่งที่ได้รับอนุญาต', 'ต้นทางลด ปลายทางเพิ่ม ผูกเป็นรายการโอนเดียวและสอบกลับได้', ENV_WEB, '-', 'TC-UN04.001'], ['TC-UN04.004', 'UN04.004', 'รับสินค้าเข้าพร้อม Lot, Serial Number, วันหมดอายุ แล้วเปิดรายงาน Lot/หมดอายุ', 'ข้อมูลติดตามคงอยู่และแสดงในรายงานที่เกี่ยวข้อง', ENV_WEB, '-', 'TC-UN04.001'], ['TC-UN04.005', 'UN04.005', 'พิมพ์ฉลาก SKU/ตำแหน่ง แล้วสแกน (หรือป้อนค่า) ในหน้าจอรับเข้า', 'ฉลากมีรหัสที่ใช้งานได้ ค่าที่สแกนถูกยอมรับ', ENV_WEB + ', เครื่องสแกนหรือจำลอง', 'เครื่องพิมพ์/สแกน (ถ้ามี)', 'TC-UN03.002'], @@ -186,24 +186,66 @@ export const TEST_CASES = [ ['TC-UN07.002', 'UN07.002', 'วางบิลจ่ายและบันทึกใบสำคัญจ่ายกับใบแจ้งหนี้ซื้อ', 'ยอดค้างจ่ายลดลง เอกสารเชื่อมโยงกันและมีประวัติ', ENV_WEB, '-', 'TC-UN06.003'], ['TC-UN08.001', 'UN08.001', 'เพิ่มผังบัญชี แผนก และสูตรบัญชี', 'โครงสร้างบัญชีถูกบันทึกและใช้กับการผ่านรายการได้', ENV_WEB, '-', 'TC-UN01.004'], ['TC-UN08.002', 'UN08.002', 'บันทึกสมุดรายวันแบบสมดุลและแบบไม่สมดุล; จำลองความล้มเหลวระหว่างผ่านรายการ', 'รายการสมดุลถูกผ่าน GL รายการไม่สมดุลถูกปฏิเสธ ความล้มเหลวถูก Rollback ทั้งชุด', ENV_WEB, 'ต้องจำลองความล้มเหลวบน Testing Server', 'TC-UN08.001'], - ['TC-UN09.001', 'UN09.001', 'เปิดแดชบอร์ดคลังสินค้าและบัญชีหลังรันงานสรุปยอด', 'ตัวเลขตรงกับตารางสรุปยอดและแสดงผลภายในเวลาที่ใช้งานได้', ENV_WEB, '-', 'TC-UN11.002'], + ['TC-UN09.001', 'UN09.001', 'รันงานสรุปยอดแล้วเปิดแดชบอร์ดคลังสินค้าและบัญชี', 'ตัวเลขตรงกับตาราง etl_stock_summary และ etl_gl_summary และหน้าแดชบอร์ดแสดงผลภายใน 3 วินาที', ENV_WEB, '-', 'TC-UN11.002'], ['TC-UN09.002', 'UN09.002', 'เปิดรายงานภาพรวมสต๊อก ความเคลื่อนไหว ความจุ สินค้าใกล้หมด หมดอายุ และ Lot พร้อมตัวกรอง', 'รายงานแสดงข้อมูลที่ได้รับสิทธิ์ตามตัวกรอง', ENV_WEB, '-', 'TC-UN04.001–TC-UN04.004'], - ['TC-UN09.003', 'UN09.003', 'เปิดงบทดลอง งบกำไรขาดทุน งบดุล VAT สมุดรายวัน และความเคลื่อนไหว GL', 'ยอดรวมสอดคล้องกันในงวดที่เลือก', ENV_WEB, '-', 'TC-UN08.002'], + ['TC-UN09.003', 'UN09.003', 'เปิดงบทดลอง งบกำไรขาดทุน งบดุล VAT สมุดรายวัน และความเคลื่อนไหว GL ของงวดเดียวกัน', 'งบทดลองเดบิตเท่ากับเครดิต สินทรัพย์เท่ากับหนี้สินรวมส่วนของเจ้าของ และยอดในรายงานตรงกับสมุดรายวัน', ENV_WEB, '-', 'TC-UN08.002'], ['TC-UN09.004', 'UN09.004', 'กรอง ดู พิมพ์ และส่งออกรายงาน', 'ผลลัพธ์ตรงกับขอบเขตและตัวกรองที่เลือก', ENV_WEB, '-', 'TC-UN09.002'], ['TC-UN10.001', 'UN10.001', 'สร้างเอกสารควบคุมหลายฉบับติดต่อกัน', 'เลขที่เอกสารเรียงตามลำดับที่ตั้งค่า ไม่ซ้ำ', ENV_WEB, '-', 'TC-UN05.001'], ['TC-UN10.002', 'UN10.002', 'พยายามเปลี่ยนสถานะเอกสารข้ามขั้น; ลบเอกสารควบคุม', 'การเปลี่ยนสถานะที่ไม่ถูกต้องถูกปฏิเสธพร้อมข้อความ การลบต้องยืนยันก่อน', ENV_WEB, '-', 'TC-UN10.001'], - ['TC-UN10.003', 'UN10.003', 'สร้างแล้วแก้ไขรายการ แล้วเปิดดูประวัติ', 'ผู้สร้าง ผู้แก้ไข วันที่ และสถานะถูกบันทึกครบ', ENV_WEB, '-', 'TC-UN03.002'], + ['TC-UN10.003', 'UN10.003', 'สร้างแล้วแก้ไขรายการ แล้วเปิดดูประวัติรายการ', 'คอลัมน์ log บันทึกผู้ทำรายการ วันเวลา และข้อมูลที่ส่งครบทุกครั้ง', ENV_WEB, '-', 'TC-UN03.002'], ['TC-UN11.001', 'UN11.001', 'เปลี่ยนสถานะเอกสารที่ต้องแจ้งเตือน; เรียก Endpoint แจ้งเตือนโดยไม่มี Secret', 'ผู้ใช้ที่เกี่ยวข้องได้รับแจ้งเตือน Real-time เท่านั้น การเรียกโดยไม่มี Secret ถูกปฏิเสธ', ENV_WEB + ', ' + ENV_NODE, 'บริการ Node.js ทำงานอยู่', 'TC-UN01.002'], - ['TC-UN11.002', 'UN11.002', 'รันงานสรุปยอดสต๊อก/GL และแจ้งเตือนสินค้าใกล้หมด/ใบแจ้งหนี้ค้างชำระ; ตรวจเวลาบันทึกเทียบ Asia/Bangkok', 'งานเสร็จโดยไม่ซ้ำ ผลลัพธ์อยู่ในขอบเขตสิทธิ์ เวลาถูกต้องตามเขตเวลา', ENV_NODE, 'Scheduler ทำงานอยู่', 'TC-UN04.001, TC-UN07.001'], + ['TC-UN11.002', 'UN11.002', 'รันงานสรุปยอดสต๊อก/GL และแจ้งเตือนสินค้าใกล้หมด/ใบแจ้งหนี้ค้างชำระสองรอบติดกัน; ตรวจเวลาบันทึกเทียบ Asia/Bangkok', 'แถวสรุปยอดของงวดเดียวกันไม่เพิ่มซ้ำในรอบที่สอง แจ้งเตือนส่งเฉพาะบริษัทเจ้าของข้อมูล เวลาตรงกับ Asia/Bangkok', ENV_NODE, 'Scheduler ทำงานอยู่', 'TC-UN04.001, TC-UN07.001'], ['TC-UN12.001', 'UN12.001', 'ผู้ใช้บริษัท A เรียกข้อมูล/รายการของบริษัท B และคลังที่ไม่ได้รับสิทธิ์ ทั้งผ่าน UI และ URL/ API โดยตรง', 'ถูกปฏิเสธทุกช่องทาง ไม่มีข้อมูลรั่วไหลหรือถูกแก้ไข', ENV_WEB + ', 2 บริษัททดสอบ', '-', 'TC-UN01.002, TC-UN03.001'], ['TC-UN12.002', 'UN12.002', 'ส่งข้อมูลนำเข้าที่มี SQL/Script และค่าที่ไม่ถูกต้องไปยัง Action ฝั่งเซิร์ฟเวอร์', 'ถูกปฏิเสธหรือ Escape โดยไม่มีข้อมูลเปลี่ยนแปลงหรือ Script ทำงาน', ENV_WEB + ', เครื่องมือทดสอบ API', '-', 'TC-UN01.002'], - ['TC-UN12.003', 'UN12.003', 'ผ่านรายการในงวดที่ล็อก; ทำรายการเกินโควตาบริษัท', 'รายการถูกปฏิเสธพร้อมข้อความ', ENV_WEB, '-', 'TC-UN08.002'], + ['TC-UN12.003', 'UN12.003', 'ผ่านรายการลงวันที่นอกช่วงเวลาที่เปิด; ใช้งานเกินจำนวนรายการของแพ็กเกจแล้วเปิดแดชบอร์ด/รายงาน', 'การผ่านรายการนอกช่วงถูกปฏิเสธพร้อมข้อความ แดชบอร์ด/รายงานถูกล็อก (HTTP 402) พร้อมข้อความให้ปรับแพ็กเกจ', ENV_WEB, 'ตั้งช่วงเวลาผ่านรายการและแพ็กเกจทดสอบ', 'TC-UN08.002'], ['TC-UN12.004', 'UN12.004', 'ตรวจ Repository และสภาพแวดล้อมที่ติดตั้งว่ามีความลับหรือไฟล์ตั้งค่าเปิดเผยหรือไม่; เรียกผ่าน HTTPS', 'ไม่พบความลับใน Git หรือเข้าถึงได้จากเว็บ การเชื่อมต่อผ่าน TLS', 'Repository, Deployed Environment', '-', '-'], ['TC-UN13.001', 'UN13.001', 'ติดตั้งบนเครื่องใหม่ด้วย setup.php', 'ฐานข้อมูลและตารางครบตาม SR08 โดยไม่แก้ Schema ด้วยมือ', 'Fresh Linux Server, PHP 8, MariaDB', 'ต้องใช้เครื่องว่าง', '-'], - ['TC-UN13.002', 'UN13.002', 'รัน docker compose up -d --build', 'Container php-apache, mariadb, node ทำงานและเข้าใช้ระบบได้', 'Docker Host', '-', 'TC-UN13.003'], + ['TC-UN13.002', 'UN13.002', 'รัน docker compose up -d --build', 'Service db, php, node ทำงานและเข้าใช้ระบบได้', 'Docker Host', '-', 'TC-UN13.003'], ['TC-UN13.003', 'UN13.003', 'รัน docker/init-env.sh โดยเว้นค่าความลับว่าง', '.env ถูกสร้างพร้อมความลับสุ่ม และไม่ถูก Git ติดตาม', 'Docker Host', '-', '-'], - ['TC-UN13.004', 'UN13.004', 'สำรองฐานข้อมูล กู้คืนสู่สภาพแวดล้อมทดสอบ และ Clone จาก Backup Remote', 'ข้อมูลและ Source Code กู้คืนได้ครบตามขั้นตอนในคู่มือ', 'Testing Server, Backup Remote', 'ตาม Product Operation Guide', 'TC-UN13.001'], + ['TC-UN13.004', 'UN13.004', 'สำรองฐานข้อมูลด้วย mysqldump กู้คืนสู่สภาพแวดล้อมทดสอบ และ Clone จาก Backup Remote', 'ข้อมูลและ Source Code กู้คืนได้ครบตามขั้นตอนในคู่มือ', 'Testing Server, Backup Remote', 'ตาม Product Operation Guide', 'TC-UN13.001'], ]; +/** + * Results of the system test run (10–14 Aug) on the build under test. Anything not + * listed passed as expected. A failure names the open issue in the Correction Register; + * "Not tested" marks a function delivered after the run. + */ +export const TEST_RESULTS = { + 'TC-UN04.006': { status: 'Failed', issue: 'ISS-029', actual: 'อัปโหลดและตรวจชนิด/ขนาดไฟล์ถูกต้อง แต่ไฟล์แนบอยู่ใต้ app/uploads/ ที่เว็บเปิดให้เรียกโดยตรง ผู้ที่ทราบ URL เปิดไฟล์ได้โดยไม่ตรวจ Session และบริษัท' }, + 'TC-UN08.002': { status: 'Failed', issue: 'ISS-030', actual: 'สมุดรายวันที่ไม่สมดุลถูกปฏิเสธ แต่เมื่อการผ่าน GL ล้มเหลว เอกสารที่บันทึกแล้วไม่ถูก Rollback เพราะการผ่าน GL แยก Transaction จากเอกสาร' }, + 'TC-UN11.001': { status: 'Failed', issue: 'ISS-031', actual: 'การเรียก Endpoint แจ้งเตือนโดยไม่มี Secret ถูกปฏิเสธ แต่ Socket.IO รับ company_id, user_id และ role จาก Browser โดยไม่ตรวจกับ Session ผู้ที่ปลอมค่าได้รับแจ้งเตือนของบริษัทอื่น' }, + 'TC-UN12.001': { status: 'Failed', issue: 'ISS-031', actual: 'หน้าจอและ API ปฏิเสธการเข้าถึงข้ามบริษัทถูกต้อง แต่ช่องทาง Socket.IO ยังรับการแจ้งเตือนของบริษัทอื่นได้' }, + 'TC-UN12.004': { status: 'Failed', issue: 'ISS-032', actual: 'ไม่พบไฟล์ .env หรือรหัสผ่านใน Git แต่แม่แบบค่าตั้งค่ากำหนดกุญแจเข้ารหัสและ IV คงที่ เชื่อมต่อฐานข้อมูลด้วยผู้ใช้ root และไม่มีหลักฐานการตั้งค่า HTTPS/TLS' }, + 'TC-UN13.002': { status: 'Not tested', actual: 'ชุดติดตั้ง Docker Compose ยังไม่อยู่ใน Build ที่ทดสอบ ส่งมอบภายหลังใน Task 4.7' }, + 'TC-UN13.003': { status: 'Not tested', actual: 'สคริปต์ docker/init-env.sh ยังไม่อยู่ใน Build ที่ทดสอบ ส่งมอบภายหลังใน Task 4.7' }, +}; +export const testResult = (tcId) => TEST_RESULTS[tcId] ?? { status: 'Passed', actual: 'ผลตรงตามที่คาดหวัง' }; +export const resultCounts = () => { + const counts = { Passed: 0, Failed: 0, 'Not tested': 0 }; + for (const [tc] of TEST_CASES) counts[testResult(tc).status] += 1; + return counts; +}; + +/** + * Requirements met by an operations task or document finished after the test run: + * pending in any record dated before that date. + */ +export const PENDING_UNTIL = { + 'CR08:001': ['2026-08-23', 'รอปิดรายการ OP-001 สำรองฐานข้อมูลอัตโนมัติ'], + 'CR08:003': ['2026-08-23', 'รอปิดรายการ OP-002 การเฝ้าระวังและแจ้งเตือน'], + 'CR11:003': ['2026-08-22', 'รอการอบรมผู้ใช้งานตามแผน'], + 'CR12:004': ['2026-08-24', 'รอจัดทำ List of Evidence ตอนปิดโครงการ'], +}; +/** Status of a requirement as known on `asOf`: Failed, Not tested, Pending or Passed. */ +export const crStatus = (crId, asOf) => { + const t = traceOf(crId); + const results = t.tcs.map((tc) => testResult(tc).status); + if (results.includes('Failed')) return 'Failed'; + if (results.includes('Not tested')) return 'Not tested'; + const pending = PENDING_UNTIL[crId]; + if (pending && asOf < pending[0]) return 'Pending'; + return 'Passed'; +}; + export const tcByUnit = (unitId) => TEST_CASES.find((t) => t[1] === unitId)?.[0] ?? ''; /** @@ -255,7 +297,7 @@ export const TRACE = { 'CR05:005': { sr: ['SR03:004'], un: ['UN04.005'] }, 'CR06:001': { sr: ['SR07:001'], un: ['UN12.004'] }, 'CR06:002': { sr: ['SR01:005'], un: ['UN13.003', 'UN12.004'] }, - 'CR06:003': { sr: ['SR07:002'], un: ['UN12.002'] }, + 'CR06:003': { sr: ['SR07:002'], un: ['UN12.002', 'UN12.003'] }, 'CR06:004': { sr: ['SR07:005'], un: ['UN01.002'] }, 'CR06:005': { sr: ['SR07:004'], un: ['UN12.002'] }, 'CR06:006': { sr: ['SR07:003'], un: ['UN01.003'] }, diff --git a/scripts/sdlc-seed/history.mjs b/scripts/sdlc-seed/history.mjs index 2571dff..c9943a4 100644 --- a/scripts/sdlc-seed/history.mjs +++ b/scripts/sdlc-seed/history.mjs @@ -37,7 +37,7 @@ export const taskById = (id) => TASKS.find((t) => t[0] === id); /** Correction Register: [id, detected, corrected, severity, problem, cause, action, ownerId, commit, testCase] */ export const CORRECTIONS = [ ['ISS-001', '2026-03-03', '2026-03-09', 'สูง', 'ผลตรวจความปลอดภัยเบื้องต้นพบจุดที่ต้องแก้ไข', 'ยังไม่ได้ใช้แนวปฏิบัติ Secure Coding ครบทุกจุด', 'แก้ไขตามผลตรวจความปลอดภัยทั้งชุด', 'ThS', '7cb78d0', 'TC-UN12.002'], - ['ISS-002', '2026-04-18', '2026-04-24', 'สูง', 'คำสั่งบางรายการทำให้ความถูกต้องของข้อมูลเสียหาย', 'ไม่มีการตรวจสอบความสัมพันธ์ของข้อมูลก่อนทำรายการ', 'ถอดคำสั่งที่มีปัญหาและเพิ่มการตรวจสอบความถูกต้อง', 'ThS', '92d116f', 'TC-UN08.002'], + ['ISS-002', '2026-04-18', '2026-04-24', 'สูง', 'คำสั่งบางรายการทำให้ความถูกต้องของข้อมูลเสียหาย', 'ไม่มีการตรวจสอบความสัมพันธ์ของข้อมูลก่อนทำรายการ', 'ถอดคำสั่งที่มีปัญหาและเพิ่มการตรวจสอบความถูกต้อง', 'ThS', '92d116f', 'TC-UN04.002'], ['ISS-003', '2026-04-30', '2026-05-06', 'สูง', 'การตรวจสิทธิ์ตามบทบาทยังไม่ครอบคลุมทุกหน้าจอ', 'พัฒนาสิทธิ์แบบเพิ่มทีละส่วนระหว่างพัฒนา', 'เพิ่ม Role Guard ให้ครบและปรับปรุงเอกสารประกอบ', 'ThS', '2eb6a1a', 'TC-UN01.002'], ['ISS-004', '2026-05-01', '2026-05-07', 'สูง', 'พบช่องโหว่ด้านความปลอดภัยที่ยังไม่ได้ปิด', 'การตรวจสอบสิทธิ์บางเส้นทางยังไม่สมบูรณ์', 'ปิดช่องโหว่ที่พบตามผลการตรวจสอบ', 'ThS', 'a75d37e', 'TC-UN12.002'], ['ISS-005', '2026-05-02', '2026-05-08', 'กลาง', 'ชื่อตัวแปร/ฟังก์ชันไม่สอดคล้องกัน และ Session ทำงานผิดพลาด', 'พัฒนาเป็นช่วง ๆ ทำให้การตั้งชื่อไม่เป็นมาตรฐานเดียวกัน', 'ปรับชื่อให้เป็นมาตรฐานเดียวกันและแก้ปัญหา Session', 'ThS', '304848d', 'TC-UN01.003'], @@ -45,25 +45,29 @@ export const CORRECTIONS = [ ['ISS-007', '2026-05-06', '2026-05-12', 'กลาง', 'ขั้นตอน Onboarding ทำงานไม่ครบตามที่ออกแบบ', 'เงื่อนไขการรับคำเชิญไม่ครอบคลุมทุกกรณี', 'แก้ไขขั้นตอน Onboarding ให้ทำงานถูกต้อง', 'ThS', '8f1c5c4', 'TC-UN01.001'], ['ISS-008', '2026-05-07', '2026-05-13', 'กลาง', 'การลงทะเบียนผู้ใช้ใหม่ล้มเหลวในบางกรณี', 'การตรวจสอบข้อมูลลงทะเบียนไม่ครบถ้วน', 'แก้ไขขั้นตอนการลงทะเบียน', 'ThS', '4433ef1', 'TC-UN01.001'], ['ISS-009', '2026-05-07', '2026-05-13', 'สูง', 'การตรวจสอบสิทธิ์ระดับฐานข้อมูลทำงานไม่ถูกต้อง', 'การกำหนดสิทธิ์เชื่อมต่อฐานข้อมูลไม่สอดคล้องกับบทบาท', 'แก้ไขการตรวจสอบสิทธิ์ db_auth', 'ThS', '8cf1d93', 'TC-UN12.001'], - ['ISS-010', '2026-05-14', '2026-05-20', 'กลาง', 'รูปแบบการเขียนโค้ดในแต่ละโมดูลไม่สอดคล้องกัน', 'พัฒนาหลายโมดูลคู่ขนานกัน', 'ทบทวนและปรับรูปแบบการเขียนโค้ดให้สอดคล้องกัน', 'ThS', '91f8bb8', 'TC-UN13.001'], - ['ISS-011', '2026-05-15', '2026-05-21', 'สูง', 'การเชิญผู้ใช้ สิทธิ์แอปพลิเคชัน และโควตารายการยังไม่รัดกุม', 'ควบคุมสิทธิ์และโควตาถูกเพิ่มภายหลัง', 'แก้ไขการเชิญผู้ใช้ เพิ่มการควบคุมสิทธิ์และโควตารายการ', 'ThS', '6eeebfe', 'TC-UN12.003'], + ['ISS-010', '2026-05-14', '2026-05-20', 'กลาง', 'รูปแบบการเขียนโค้ดในแต่ละโมดูลไม่สอดคล้องกัน', 'พัฒนาหลายโมดูลคู่ขนานกัน', 'ทบทวนและปรับรูปแบบการเขียนโค้ดให้สอดคล้องกัน', 'ThS', '91f8bb8', 'ทดสอบถดถอยทั้งชุด'], + ['ISS-011', '2026-05-15', '2026-05-21', 'สูง', 'การเชิญผู้ใช้ สิทธิ์แอปพลิเคชัน และโควตารายการยังไม่รัดกุม', 'ควบคุมสิทธิ์และโควตาถูกเพิ่มภายหลัง', 'แก้ไขการเชิญผู้ใช้ เพิ่มการควบคุมสิทธิ์และโควตารายการ', 'ThS', '6eeebfe', 'TC-UN01.001, TC-UN01.004, TC-UN12.003'], ['ISS-012', '2026-05-15', '2026-05-21', 'สูง', 'StockManager แปลงค่า Lot/Serial ผิดพลาด ทำให้สอบกลับไม่ถูกต้อง', 'การแปลงชนิดข้อมูลไม่รองรับค่าที่เป็นข้อความ', 'แก้ไขการแปลงค่า Lot/Serial และเพิ่มชุดทดสอบวงจรเอกสาร', 'ThS', '94032dd', 'TC-UN04.004'], ['ISS-013', '2026-05-15', '2026-05-21', 'กลาง', 'ยังพบข้อบกพร่องของขั้นตอน Onboarding เพิ่มเติม', 'เส้นทางการรับคำเชิญมีหลายเงื่อนไข', 'แก้ไขข้อบกพร่องของ Onboarding ที่พบเพิ่ม', 'ThS', 'b76dc67', 'TC-UN01.001'], ['ISS-014', '2026-05-17', '2026-05-23', 'กลาง', 'เส้นทางไฟล์ (File Path) ไม่ถูกต้องในบางสภาพแวดล้อม', 'สมมติฐานเส้นทางติดตั้งไม่ตรงกัน', 'แก้ไขเส้นทางไฟล์ให้ถูกต้องทั้งระบบ', 'ThS', '59037b5, f4ef776', 'TC-UN13.001'], - ['ISS-015', '2026-05-17', '2026-05-23', 'สูง', 'ผลตรวจโค้ดพบปัญหา require_once, ขั้นตอนจ่ายออก และ Role Guard', 'การควบคุมข้ามโมดูลไม่สอดคล้องกัน', 'แก้ไข require_once, ขั้นตอนจ่ายออก และเพิ่ม Role Guard', 'ThS', 'b07882e', 'TC-UN01.002'], + ['ISS-015', '2026-05-17', '2026-05-23', 'สูง', 'ผลตรวจโค้ดพบปัญหา require_once, ขั้นตอนจ่ายออก และ Role Guard', 'การควบคุมข้ามโมดูลไม่สอดคล้องกัน', 'แก้ไข require_once, ขั้นตอนจ่ายออก และเพิ่ม Role Guard', 'ThS', 'b07882e', 'TC-UN01.002, TC-UN04.002'], ['ISS-016', '2026-05-18', '2026-05-24', 'สูง', 'อนุญาตให้เข้าสู่ระบบพร้อมกันหลาย Session', 'ยังไม่มีการบังคับ Session เดียวต่อบัญชี', 'บล็อกการเข้าสู่ระบบซ้ำซ้อนและปรับนโยบายยืนยันตัวตนตามบทบาท', 'ThS', '2930973', 'TC-UN01.003'], ['ISS-017', '2026-05-19', '2026-05-25', 'สูง', 'ยังพบช่องว่างของการควบคุมการเข้าสู่ระบบ', 'บางเส้นทางเข้าสู่ระบบไม่ผ่านการตรวจสอบเดียวกัน', 'ปิดช่องว่างการเข้าสู่ระบบที่พบ', 'ThS', '4733c78', 'TC-UN01.002'], ['ISS-018', '2026-05-20', '2026-05-26', 'สูง', 'ขั้นตอน Onboarding ผู้ใช้ที่ถูกเชิญต้องเพิ่มความปลอดภัย', 'มีหลายเส้นทางที่ต้องบังคับใช้การควบคุมเดียวกัน', 'ดำเนินการ Security Hardening รายการ C1–N7', 'ThS', 'b4b1f5c', 'TC-UN01.001'], ['ISS-019', '2026-05-20', '2026-05-26', 'สูง', 'วงจรชีวิตเอกสารในระบบไม่ตรงกับข้อกำหนด', 'ข้อกำหนดและการพัฒนาเปลี่ยนแปลงไม่พร้อมกัน', 'ปรับข้อกำหนดและแก้โค้ดรายการ C2/M9', 'ThS', 'cb36d3b', 'TC-UN10.002'], ['ISS-020', '2026-05-20', '2026-05-26', 'สูง', 'ข้อมูลหลักมีช่องว่างระหว่างข้อกำหนดและการพัฒนา', 'ข้อกำหนดข้อมูลหลักถูกปรับระหว่างพัฒนา', 'ปรับข้อกำหนดและแก้โค้ดรายการ C1/C2/M3–M6', 'ThS', 'dfeb575', 'TC-UN03.001'], ['ISS-021', '2026-05-21', '2026-05-27', 'กลาง', 'งานตามกำหนดเวลาของ Node.js ทำงานผิดพลาด', 'การตั้งค่า Cron ของบริการ Node.js ไม่ถูกต้อง', 'แก้ไขการทำงานของ Cron บน Node.js', 'ThS', 'f3c0e3c, 714b70d', 'TC-UN11.002'], - ['ISS-022', '2026-05-21', '2026-05-27', 'กลาง', 'เอกสารประกอบภายในโครงการยังไม่ครบถ้วน', 'เอกสารถูกปรับตามการพัฒนาอย่างต่อเนื่อง', 'ทบทวนเอกสารทั้งหมดและแก้ไขส่วนที่ขาด', 'ThS', '99ae35d', 'TC-UN13.001'], + ['ISS-022', '2026-05-21', '2026-05-27', 'กลาง', 'เอกสารประกอบภายในโครงการยังไม่ครบถ้วน', 'เอกสารถูกปรับตามการพัฒนาอย่างต่อเนื่อง', 'ทบทวนเอกสารทั้งหมดและแก้ไขส่วนที่ขาด', 'ThS', '99ae35d', 'ทบทวนเอกสาร'], ['ISS-023', '2026-05-28', '2026-05-28', 'กลาง', 'การเปลี่ยนคำว่า Rack เป็น Bin ไม่ครบทุกจุด และ ReportManager ผิดพลาด', 'เปลี่ยนชื่อไม่ครบทุกไฟล์และป้ายกำกับหน้าจอ', 'เปลี่ยนชื่อไฟล์ ป้ายกำกับ และแก้คุณสมบัติของ ReportManager', 'ThS', '5df6736', 'TC-UN03.001'], ['ISS-024', '2026-05-22', '2026-05-28', 'สูง', 'การเข้าถึงตารางสต๊อกยังไม่จำกัดตามคลังของบริษัท', 'ขอบเขตสิทธิ์คลังสินค้ายังไม่ครบทุกคำสั่ง', 'จำกัดการเข้าถึงตารางสต๊อกตามคลังที่บริษัทได้รับสิทธิ์', 'ThS', '9a50238', 'TC-UN12.001'], - ['ISS-025', '2026-05-22', '2026-05-28', 'ต่ำ', 'แถบเลื่อนแนวนอนเกินขอบหน้าจอจากระยะขอบ Sidebar', 'ค่าระยะขอบเกินความกว้างของ Viewport', 'แก้ไขการจัดวาง Sidebar ให้อยู่ในขอบหน้าจอ', 'ThS', 'ed3dd2f', 'TC-UN01.002'], + ['ISS-025', '2026-05-22', '2026-05-28', 'ต่ำ', 'แถบเลื่อนแนวนอนเกินขอบหน้าจอจากระยะขอบ Sidebar', 'ค่าระยะขอบเกินความกว้างของ Viewport', 'แก้ไขการจัดวาง Sidebar ให้อยู่ในขอบหน้าจอ', 'ThS', 'ed3dd2f', 'ตรวจหน้าจอ'], ['ISS-026', '2026-05-22', '2026-05-28', 'สูง', 'ระบบยังรับการเข้าสู่ระบบใหม่ขณะบัญชีมี Session ทำงานอยู่', 'การบังคับ Session เดียวยังไม่ครอบคลุมทุกกรณี', 'ปฏิเสธการเข้าสู่ระบบใหม่เมื่อบัญชีมี Session ทำงานอยู่', 'ThS', 'fda211b', 'TC-UN01.003'], - ['ISS-027', '2026-05-23', '2026-05-29', 'ต่ำ', 'เมธอดของคลาสมีการทำงานซ้ำซ้อน', 'พัฒนาเพิ่มทีละส่วนทำให้เกิดความซ้ำซ้อน', 'ลดความซ้ำซ้อนของเมธอดในคลาส', 'ThS', 'a0677d6', 'TC-UN13.001'], - ['ISS-028', '2026-07-28', '2026-08-03', 'สูง', 'การเข้าสู่ระบบและค่าตั้งค่าสภาพแวดล้อมผิดพลาดหลัง Baseline', 'ค่าตั้งค่าของสภาพแวดล้อมใหม่ไม่ตรงกับที่ระบบคาดหวัง', 'แก้ไขการเข้าสู่ระบบและค่าตั้งค่าสภาพแวดล้อม', 'ThS', 'b2c4374', 'TC-UN12.004'], + ['ISS-027', '2026-05-23', '2026-05-29', 'ต่ำ', 'เมธอดของคลาสมีการทำงานซ้ำซ้อน', 'พัฒนาเพิ่มทีละส่วนทำให้เกิดความซ้ำซ้อน', 'ลดความซ้ำซ้อนของเมธอดในคลาส', 'ThS', 'a0677d6', 'ทดสอบถดถอยทั้งชุด'], + ['ISS-028', '2026-07-28', '2026-08-03', 'สูง', 'การเข้าสู่ระบบและค่าตั้งค่าสภาพแวดล้อมผิดพลาดหลัง Baseline', 'ค่าตั้งค่าของสภาพแวดล้อมใหม่ไม่ตรงกับที่ระบบคาดหวัง', 'แก้ไขการเข้าสู่ระบบและค่าตั้งค่าสภาพแวดล้อม', 'ThS', 'b2c4374', 'TC-UN01.002'], + ['ISS-029', '2026-08-11', null, 'สูง', 'ไฟล์แนบเปิดได้จาก URL โดยตรงโดยไม่ตรวจ Session และบริษัท', 'ไฟล์แนบเก็บใต้โฟลเดอร์ที่เว็บเปิดให้เรียกได้', 'ย้ายไฟล์แนบออกนอก Web Root และให้ดาวน์โหลดผ่านสคริปต์ที่ตรวจ Session และบริษัท', 'ThS', null, 'TC-UN04.006'], + ['ISS-030', '2026-08-12', null, 'สูง', 'เอกสารที่บันทึกแล้วไม่ถูก Rollback เมื่อการผ่าน GL ล้มเหลว', 'การผ่าน GL ทำใน Transaction แยกหลังบันทึกเอกสาร', 'รวมการบันทึกเอกสาร สต๊อก และ GL ไว้ใน Transaction เดียวตาม CR13:001', 'ThS', null, 'TC-UN08.002'], + ['ISS-031', '2026-08-12', null, 'สูง', 'Socket.IO รับรหัสบริษัท ผู้ใช้ และบทบาทจาก Browser ทำให้รับแจ้งเตือนของบริษัทอื่นได้', 'การเชื่อมต่อ Socket.IO ไม่ตรวจกับ Session ของผู้ใช้', 'ตรวจ Session ฝั่งเซิร์ฟเวอร์ก่อนเข้าห้องแจ้งเตือน และไม่รับค่าบริษัท/บทบาทจาก Browser', 'ThS', null, 'TC-UN11.001, TC-UN12.001'], + ['ISS-032', '2026-08-13', null, 'สูง', 'แม่แบบค่าตั้งค่ากำหนดกุญแจเข้ารหัสและ IV คงที่ และเชื่อมต่อฐานข้อมูลด้วยผู้ใช้ root', 'ค่าความลับบางส่วนยังไม่ได้แยกออกจาก Source Code', 'ย้ายกุญแจและ IV ไปเป็นความลับต่อการติดตั้ง ใช้ผู้ใช้ฐานข้อมูลสิทธิ์จำกัด และตั้งค่า HTTPS/TLS', 'ThS', null, 'TC-UN12.004'], ]; /** @@ -97,7 +101,7 @@ export const VERIFICATION_ROUNDS = [ { v: 'V0.1', date: '2026-03-17', no: 1, time: '09:00 – 12:00 น.', hours: 3, topic: 'ตรวจสอบเอกสารวางแผนโครงการและความต้องการ', wps: ['WP 1.0', 'WP 2.0'] }, { v: 'V0.2', date: '2026-05-29', no: 2, time: '09:00 – 12:00 น.', hours: 3, topic: 'ตรวจสอบเอกสารความต้องการซอฟต์แวร์และการออกแบบ', wps: ['WP 3.0', 'WP 4.0', 'WP 5.0'] }, { v: 'V0.3', date: '2026-07-31', no: 3, time: '09:00 – 12:00 น.', hours: 3, topic: 'ตรวจสอบชุดทดสอบและการสอบกลับ', wps: ['WP 6.0'] }, - { v: 'V1.0', date: '2026-08-17', no: 4, time: '09:00 – 16:00 น.', hours: 6, topic: 'User Acceptance Test (UAT) และตรวจสอบเอกสารส่งมอบทั้งหมด', wps: ['WP 1.0', 'WP 2.0', 'WP 3.0', 'WP 4.0', 'WP 5.0', 'WP 6.0', 'WP 7.0', 'WP 8.0', 'WP 9.0', 'WP 10.0', 'WP 11.0'] }, + { v: 'V1.0', date: '2026-08-17', no: 4, time: '09:00 – 16:00 น.', hours: 6, topic: 'ทบทวนผลการทดสอบระบบและ UAT และตรวจสอบเอกสารส่งมอบทั้งหมด', wps: ['WP 1.0', 'WP 2.0', 'WP 3.0', 'WP 4.0', 'WP 5.0', 'WP 6.0', 'WP 7.0', 'WP 8.0', 'WP 9.0', 'WP 10.0', 'WP 11.0'] }, ]; /** Rules every verification round follows (plan section and each Verification Results record). */ export const VERIFICATION_RULES = [ @@ -112,7 +116,7 @@ export const VERIFICATION_RULES = [ * [theme, issue ids, what happened, preventive action for the next project] */ export const LESSONS = [ - ['ความปลอดภัยและการควบคุมสิทธิ์', ['ISS-001', 'ISS-003', 'ISS-004', 'ISS-006', 'ISS-009', 'ISS-011', 'ISS-015', 'ISS-016', 'ISS-017', 'ISS-018', 'ISS-024', 'ISS-026'], + ['ความปลอดภัยและการควบคุมสิทธิ์', ['ISS-001', 'ISS-003', 'ISS-004', 'ISS-006', 'ISS-009', 'ISS-011', 'ISS-015', 'ISS-016', 'ISS-017', 'ISS-018', 'ISS-024', 'ISS-026', 'ISS-029', 'ISS-031', 'ISS-032'], 'ข้อบกพร่องกลุ่มใหญ่ที่สุดเกิดจากการเพิ่ม Role Guard การตรวจสิทธิ์ และการจำกัด Session ทีละส่วนระหว่างพัฒนา', 'กำหนด Secure Coding Checklist และรูปแบบการตรวจสิทธิ์กลางตั้งแต่ช่วงออกแบบ และทบทวนโค้ดด้านความปลอดภัยทุกโมดูลก่อนรวมเข้า Baseline'], ['ขั้นตอน Onboarding และการลงทะเบียน', ['ISS-007', 'ISS-008', 'ISS-013'], @@ -121,7 +125,7 @@ export const LESSONS = [ ['ความสอดคล้องระหว่างข้อกำหนดกับการพัฒนา', ['ISS-019', 'ISS-020', 'ISS-022'], 'ข้อกำหนดและเอกสารถูกปรับระหว่างพัฒนา ทำให้เกิดช่องว่างกับโค้ด', 'ปรับข้อกำหนดและ Traceability Record ในรอบเดียวกับการแก้โค้ด และตรวจความสอดคล้องในทุกรอบ Verification'], - ['ความถูกต้องของข้อมูลสต๊อกและบัญชี', ['ISS-002', 'ISS-012'], + ['ความถูกต้องของข้อมูลสต๊อกและบัญชี', ['ISS-002', 'ISS-012', 'ISS-030'], 'การแปลงชนิดข้อมูลและการตรวจสอบความสัมพันธ์ของข้อมูลไม่ครอบคลุม', 'ตรวจสอบข้อมูลนำเข้าและความสัมพันธ์ฝั่งเซิร์ฟเวอร์ทุกคำสั่งที่เปลี่ยนสต๊อกหรือ GL และเพิ่มชุดทดสอบวงจรเอกสาร'], ['มาตรฐานโค้ดและการตั้งค่าสภาพแวดล้อม', ['ISS-005', 'ISS-010', 'ISS-014', 'ISS-021', 'ISS-023', 'ISS-025', 'ISS-027', 'ISS-028'], @@ -146,8 +150,8 @@ export const PERIODS = [ ['2026-05-25', '2026-05-20', '2026-05-23', 10, [['3.7', 'Completed', 100, 'พัฒนาผังบัญชี GL สมุดรายวัน รายงานบัญชี ใบวางบิลและใบเสร็จครบตามแผน'], ['3.8', 'In Progress', 45, 'อยู่ระหว่างพัฒนา Socket.IO และตารางสรุปยอด'], ['3.9', 'In Progress', 60, 'เพิ่มการเชิญผู้ใช้ การควบคุมสิทธิ์แอปพลิเคชัน และโควตารายการ']], ['ISS-010', 'ISS-011', 'ISS-012', 'ISS-013', 'ISS-014', 'ISS-015'], [], { date: '2026-05-28', topic: 'ติดตามการพัฒนาบัญชี การเงิน และการควบคุมสิทธิ์ผู้ใช้' }], ['2026-05-29', '2026-05-24', '2026-05-29', 11, [['3.8', 'Completed', 100, 'พัฒนาบริการแจ้งเตือน Real-time ตารางสรุปยอด และงานตามกำหนดเวลาครบถ้วน'], ['3.9', 'Completed', 100, 'ทบทวนความปลอดภัย ขอบเขตบริษัท วงจรเอกสาร และปิดข้อบกพร่องที่พบ'], ['3.10', 'Completed', 100, 'ลดความซ้ำซ้อนของคลาสและตั้ง Baseline การพัฒนาเมื่อ 29 พ.ค. 69']], ['ISS-016', 'ISS-017', 'ISS-018', 'ISS-019', 'ISS-020', 'ISS-021', 'ISS-022', 'ISS-023', 'ISS-024', 'ISS-025', 'ISS-026', 'ISS-027'], [], { date: '2026-06-04', topic: 'สรุปผลการพัฒนาและตั้ง Baseline การพัฒนา' }], ['2026-08-03', '2026-06-01', '2026-08-03', 12, [['4.3', 'In Progress', 70, 'ตรวจสอบเอกสารความต้องการ ออกแบบ และการสอบกลับ รอบที่ 1–3'], ['4.5', 'In Progress', 80, 'จัดทำคู่มือผู้ใช้ คู่มือผู้ดูแลระบบ และคู่มือบำรุงรักษา'], ['4.6', 'Completed', 100, 'แก้ไขการเข้าสู่ระบบและค่าตั้งค่าสภาพแวดล้อมหลัง Baseline']], ['ISS-028'], [], { date: '2026-08-10', topic: 'ติดตามการแก้ไขหลัง Baseline การตรวจสอบเอกสาร และแผนการทดสอบ' }], - ['2026-08-14', '2026-08-04', '2026-08-14', 13, [['4.4', 'Completed', 100, `ทดสอบระบบ 45 Test Case และ UAT ครบ 14 หมวดความต้องการ (${CRS.length} รายการ) ผ่านทั้งหมดระหว่าง 10–14 ส.ค. 69`], ['4.7', 'In Progress', 60, 'จัดทำข้อมูลสาธิตเสร็จ อยู่ระหว่างปรับแบรนด์และชุดติดตั้ง Docker Compose'], ['5.1', 'In Progress', 70, 'ตรวจสอบความครบถ้วนของ Work Products']], [], [], { date: '2026-08-19', topic: 'สรุปผลการทดสอบระบบ UAT และข้อมูลสาธิต' }], - ['2026-08-17', '2026-08-15', '2026-08-17', 14, [['4.3', 'Completed', 100, 'ตรวจสอบ Work Products รอบที่ 4 ครบทุกรายการ ผลผ่านทั้งหมด'], ['4.5', 'Completed', 100, 'คู่มือผู้ใช้ คู่มือผู้ดูแลระบบ และคู่มือบำรุงรักษาเสร็จสมบูรณ์'], ['4.7', 'Completed', 100, 'ปรับแบรนด์และชุดติดตั้ง Docker Compose เสร็จ Baseline 6c39700'], ['5.1', 'Completed', 100, 'จัดทำ List of Evidence ครบทุก Work Product'], ['5.3', 'In Progress', 20, 'ส่งมอบสิ่งส่งมอบครบ นัดตรวจรับและปิดโครงการ 24 ส.ค. 69']], [], [], { date: '2026-08-24', topic: 'ตรวจรับส่งมอบระบบและปิดโครงการอย่างเป็นทางการ' }], + ['2026-08-14', '2026-08-04', '2026-08-14', 13, [['4.4', 'Completed', 100, `ทดสอบระบบ 45 Test Case ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 และ UAT ครบ 14 หมวดความต้องการ (${CRS.length} รายการ) ระหว่าง 10–14 ส.ค. 69 บันทึกข้อบกพร่องคงค้าง ISS-029–ISS-032`], ['4.7', 'In Progress', 60, 'จัดทำข้อมูลสาธิตเสร็จ อยู่ระหว่างปรับแบรนด์และชุดติดตั้ง Docker Compose'], ['5.1', 'In Progress', 70, 'ตรวจสอบความครบถ้วนของ Work Products']], ['ISS-029', 'ISS-030', 'ISS-031', 'ISS-032'], [], { date: '2026-08-19', topic: 'สรุปผลการทดสอบระบบ UAT และข้อมูลสาธิต' }], + ['2026-08-17', '2026-08-15', '2026-08-17', 14, [['4.3', 'Completed', 100, 'ตรวจสอบ Work Products รอบที่ 4 ครบทุกรายการ ไม่ผ่าน 2 รายการ คือผลการทดสอบที่มีข้อบกพร่องคงค้าง และชุดติดตั้ง Docker ที่ยังไม่ได้ทดสอบ'], ['4.5', 'Completed', 100, 'คู่มือผู้ใช้ คู่มือผู้ดูแลระบบ และคู่มือบำรุงรักษาเสร็จสมบูรณ์'], ['4.7', 'Completed', 100, 'ปรับแบรนด์และชุดติดตั้ง Docker Compose เสร็จ Baseline 6c39700'], ['5.1', 'Completed', 100, 'จัดทำ List of Evidence ครบทุก Work Product'], ['5.3', 'In Progress', 20, 'ส่งมอบสิ่งส่งมอบครบ นัดตรวจรับและปิดโครงการ 24 ส.ค. 69']], [], [], { date: '2026-08-24', topic: 'ตรวจรับส่งมอบระบบและปิดโครงการอย่างเป็นทางการ' }], ['2026-08-24', '2026-08-18', '2026-08-24', 15, [['5.2', 'Completed', 100, 'อบรมผู้ใช้งาน 6 คน เมื่อ 22 ส.ค. 69 ผ่านการทดลองใช้งานครบทุกขั้นตอน'], ['5.3', 'Completed', 100, 'ปิดงานควบคุมปฏิบัติการ 23 ส.ค. 69 ตรวจรับระบบและปิดโครงการอย่างเป็นทางการ 24 ส.ค. 69'], ['4.1', 'Completed', 100, 'บันทึกความก้าวหน้าและรายงานการประชุมครบตลอดโครงการ'], ['4.2', 'Completed', 100, 'ควบคุมเวอร์ชันและสำรองข้อมูลครบ']], [], [], null], ]; @@ -240,19 +244,19 @@ export const MEETINGS = [ { date: '2026-08-19', phase: 'Validation', taskId: '4.4', taskName: 'System Test & UAT', time: '09:00 – 11:00 น.', attachment: 'Test Report, Validation Results', - progress: [['Phase 4: Verification & Validation', 'เสร็จสมบูรณ์', 100, `ทดสอบ 45 Test Case และ UAT ครบ 14 หมวดความต้องการ (${CRS.length} รายการ) ผ่านทั้งหมด`], ['Phase 5: Project Close', 'กำลังดำเนินการ', 60, 'อยู่ระหว่างเตรียมอบรมผู้ใช้งาน ตรวจรับ และปิดโครงการ'], ['รวมความคืบหน้าทั้งโครงการ', 'ตามแผน', 92, 'เตรียมตรวจรับและปิดโครงการ']], + progress: [['Phase 4: Verification & Validation', 'กำลังดำเนินการ', 90, `ทดสอบ 45 Test Case ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 และ UAT ครบ 14 หมวดความต้องการ (${CRS.length} รายการ) มีข้อบกพร่องคงค้าง ISS-029–ISS-032`], ['Phase 5: Project Close', 'กำลังดำเนินการ', 60, 'อยู่ระหว่างเตรียมอบรมผู้ใช้งาน ตรวจรับ และปิดโครงการ'], ['รวมความคืบหน้าทั้งโครงการ', 'ตามแผน', 92, 'เตรียมตรวจรับและปิดโครงการ']], agenda: [['สรุปผลการทดสอบระบบ 45 Test Case', 'ยืนยันผลการทดสอบและข้อบกพร่องคงค้าง'], ['สรุปผลการทดสอบการยอมรับ (UAT) ตาม Customer Requirements CR01–CR14', 'ยืนยันความพร้อมใช้งานจริง'], ['ข้อมูลสาธิตสำหรับการตรวจรับ (Task 4.7)', 'ยืนยันความพร้อมของข้อมูลตั้งต้น'], ['แผนงานปิดโครงการ', 'ยืนยันงานที่เหลือถึง 24 ส.ค. 69']], - discussion: [['ผลการทดสอบระบบ', 'ทดสอบ 45 Test Case บน Internal Testing Server ผ่านทั้งหมด ไม่พบข้อบกพร่องคงค้าง', ['PaNg'], 'ผ่าน'], ['ผลการทดสอบการยอมรับ', `ตัวแทนลูกค้าทดสอบการยอมรับครบ 14 หมวดความต้องการ (${CRS.length} รายการ) บนสภาพแวดล้อมใช้งานจริง ผ่านทั้งหมด`, ['SeV'], 'ผ่าน'], ['ข้อมูลสาธิต', 'จัดเตรียมข้อมูลสาธิตสำหรับการตรวจรับรายงานและขั้นตอนการทำงานเสร็จแล้ว เป็นงานเตรียมการส่งมอบตาม Task 4.7 ไม่เปลี่ยนแปลงขอบเขตหรือสิ่งส่งมอบ', ['ApS', 'SeV'], 'เสร็จสิ้น'], ['งานที่เหลือ', 'อบรมผู้ใช้งาน ปิดงานควบคุมปฏิบัติการ ตรวจรับส่งมอบ และปิดโครงการ', ['ApS', 'YaB'], 'ดำเนินการ']], - actions: [['จัดอบรมผู้ใช้งานก่อนเปิดใช้งานจริง (Task 5.2)', ['ThS', 'PaNg'], '2026-08-22', 'Scheduled'], ['ปิดงานควบคุมการสำรองข้อมูลและการเฝ้าระวังระบบ', ['ThS'], '2026-08-23', 'Scheduled'], ['นัดตรวจรับส่งมอบระบบและปิดโครงการกับ Project Sponsor', ['ApS'], '2026-08-24', 'Scheduled']], + discussion: [['ผลการทดสอบระบบ', 'ทดสอบ 45 Test Case บน Internal Testing Server (Build b2c4374) ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 ข้อบกพร่องระดับสูงที่พบ ได้แก่ ไฟล์แนบเปิดได้จาก URL (ISS-029) การผ่าน GL ไม่อยู่ใน Transaction เดียวกับเอกสาร (ISS-030) Socket.IO ไม่ตรวจ Session (ISS-031) และค่าความลับในแม่แบบค่าตั้งค่า (ISS-032) ส่วนชุดติดตั้ง Docker ยังไม่ได้ทดสอบ', ['PaNg'], 'ไม่ผ่าน'], ['ผลการทดสอบการยอมรับ', `ตัวแทนลูกค้าทดสอบการยอมรับครบ 14 หมวดความต้องการ (${CRS.length} รายการ) บนสภาพแวดล้อมใช้งานจริง ความต้องการที่เกี่ยวข้องกับข้อบกพร่องคงค้างและชุดติดตั้ง Docker ยังไม่ผ่าน ผู้รับมอบรับทราบผลและขอแผนแก้ไขก่อนตรวจรับ`, ['SeV'], 'รับทราบ'], ['ข้อมูลสาธิต', 'จัดเตรียมข้อมูลสาธิตสำหรับการตรวจรับรายงานและขั้นตอนการทำงานเสร็จแล้ว เป็นงานเตรียมการส่งมอบตาม Task 4.7 ไม่เปลี่ยนแปลงขอบเขตหรือสิ่งส่งมอบ', ['ApS', 'SeV'], 'เสร็จสิ้น'], ['งานที่เหลือ', 'อบรมผู้ใช้งาน ปิดงานควบคุมปฏิบัติการ ตรวจรับส่งมอบ และปิดโครงการ', ['ApS', 'YaB'], 'ดำเนินการ']], + actions: [['จัดทำแผนแก้ไขข้อบกพร่องคงค้าง ISS-029–ISS-032 และการทดสอบชุดติดตั้ง Docker เสนอผู้รับมอบ', ['ApS', 'ThS'], '2026-08-24', 'Scheduled'], ['จัดอบรมผู้ใช้งานก่อนเปิดใช้งานจริง (Task 5.2)', ['ThS', 'PaNg'], '2026-08-22', 'Scheduled'], ['ปิดงานควบคุมการสำรองข้อมูลและการเฝ้าระวังระบบ', ['ThS'], '2026-08-23', 'Scheduled'], ['นัดตรวจรับส่งมอบระบบและปิดโครงการกับ Project Sponsor', ['ApS'], '2026-08-24', 'Scheduled']], next: { date: '2026-08-24', topic: 'ตรวจรับส่งมอบระบบและปิดโครงการอย่างเป็นทางการ' }, }, { date: '2026-08-24', phase: 'Project Close', taskId: '5.3', taskName: 'Acceptance & Project Closure', time: '09:00 – 12:00 น.', attachment: 'Acceptance Report, List of Evidence, Verification Results, Training Report, Product Operation Guide, Project Repository (Backup)', - progress: [['Phase 1: Project Initiation', 'เสร็จสมบูรณ์', 100, 'เปิดโครงการและอนุมัติกฎบัตรเรียบร้อย'], ['Phase 2: Project Planning', 'เสร็จสมบูรณ์', 100, 'อนุมัติแผนโครงการและ Baseline ความต้องการ'], ['Phase 3: Project Execution', 'เสร็จสมบูรณ์', 100, 'พัฒนาระบบครบตามขอบเขต Baseline 6c39700'], ['Phase 4: Verification & Validation', 'เสร็จสมบูรณ์', 100, 'ตรวจสอบ ทดสอบ และ UAT ผ่านครบทุกรายการ'], ['Phase 5: Project Close', 'เสร็จสมบูรณ์', 100, 'ตรวจรับ อบรม ปิดงานควบคุมปฏิบัติการ และปิดโครงการเรียบร้อย'], ['รวมความคืบหน้าทั้งโครงการ', 'ตามแผน', 100, 'โครงการเสร็จสมบูรณ์ ปิดโครงการอย่างเป็นทางการ']], + progress: [['Phase 1: Project Initiation', 'เสร็จสมบูรณ์', 100, 'เปิดโครงการและอนุมัติกฎบัตรเรียบร้อย'], ['Phase 2: Project Planning', 'เสร็จสมบูรณ์', 100, 'อนุมัติแผนโครงการและ Baseline ความต้องการ'], ['Phase 3: Project Execution', 'เสร็จสมบูรณ์', 100, 'พัฒนาระบบครบตามขอบเขต Baseline 6c39700'], ['Phase 4: Verification & Validation', 'เสร็จสมบูรณ์', 100, 'ตรวจสอบ ทดสอบ และ UAT ครบตามแผน ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 ข้อบกพร่องคงค้างส่งต่อการบำรุงรักษา'], ['Phase 5: Project Close', 'เสร็จสมบูรณ์', 100, 'ตรวจรับ อบรม ปิดงานควบคุมปฏิบัติการ และปิดโครงการเรียบร้อย'], ['รวมความคืบหน้าทั้งโครงการ', 'ตามแผน', 100, 'โครงการเสร็จสมบูรณ์ ปิดโครงการอย่างเป็นทางการ']], agenda: [['นำเสนอผลการดำเนินโครงการและสิ่งส่งมอบ', 'สรุปผลงานทั้งหมดเทียบกับแผนและผลลัพธ์จริง'], ['ตรวจสอบความครบถ้วนของเอกสารและหลักฐาน', 'ยืนยันเอกสารครบตามมาตรฐาน ISO/IEC 29110'], ['ชุดติดตั้งและอัตลักษณ์องค์กร (Task 4.7)', 'ยืนยันความพร้อมของชุดส่งมอบ'], ['พิจารณาตรวจรับส่งมอบระบบ', 'ลงมติผลการตรวจรับ'], ['สรุปผลการอบรมผู้ใช้งาน', 'ยืนยันความพร้อมของผู้ใช้ก่อนเปิดใช้งานจริง'], ['สรุปการปิดงานควบคุมการสำรองข้อมูลและการเฝ้าระวัง', 'ยืนยันการปิดรายการ OP-001 และ OP-002'], ['สรุปการสำรอง Repository และเอกสารโครงการ', 'ยืนยันการสำรองและกู้คืนได้จริง'], ['ปิดโครงการอย่างเป็นทางการ', 'ลงมติปิดโครงการและส่งมอบเอกสาร']], - discussion: [['ผลการดำเนินโครงการ', 'พัฒนาระบบครบตามขอบเขต 11 ระบบงาน ทดสอบและ UAT ผ่านทั้งหมด ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง', ['ApS', 'SeV'], 'ผ่านการรับรอง'], ['ความครบถ้วนของเอกสาร', 'ตรวจสอบ Work Products รอบที่ 4 ครบทุกรายการ ผลผ่านทั้งหมด และจัดทำ List of Evidence เรียบร้อย', ['YaB', 'PaNg'], 'สมบูรณ์'], ['ชุดติดตั้งและอัตลักษณ์องค์กร', 'จัดทำชุดติดตั้ง Docker Compose ตามความต้องการ CR10:002 และปรับอัตลักษณ์องค์กรในหน้าจอและเอกสารเสร็จแล้ว เป็นงานเตรียมการส่งมอบตาม Task 4.7 ไม่เปลี่ยนแปลงขอบเขตหรือสิ่งส่งมอบ', ['SeV', 'ApS'], 'เสร็จสิ้น'], ['ผลการตรวจรับ', 'Project Sponsor ตรวจรับสิ่งส่งมอบทั้งหมด ผลการตรวจรับ Accepted', ['SeV'], 'ตรวจรับแล้ว'], ['ผลการอบรม', 'อบรมผู้ใช้งาน 6 คน เมื่อ 22 ส.ค. 69 ผู้เข้าอบรมทดลองใช้งานครบทุกขั้นตอนได้สำเร็จ', ['ThS', 'PaNg'], 'เสร็จสิ้น'], ['การควบคุมปฏิบัติการ', 'ปิดรายการสำรองฐานข้อมูลอัตโนมัติ (OP-001) และการเฝ้าระวังพร้อมแจ้งเตือน (OP-002) เมื่อ 23 ส.ค. 69', ['ThS'], 'เสร็จสิ้น'], ['การสำรองข้อมูลโครงการ', 'ซิงก์ Branch `main` ไปยัง Backup Remote และทดสอบเรียกคืนสำเร็จ', ['ThS', 'YaB'], 'เสร็จสิ้น'], ['การปิดโครงการ', 'ที่ประชุมมีมติปิดโครงการอย่างเป็นทางการเมื่อ 24 ส.ค. 69', ['SeV', 'ApS'], 'ปิดโครงการ']], - actions: [['จัดเก็บเอกสารโครงการทั้งหมดเข้าระบบควบคุมเอกสาร', ['YaB'], '2026-08-24', 'เสร็จสมบูรณ์'], ['ติดตามการตรวจนับสต๊อกสิ้นเดือนแรกหลังเปิดใช้งานจริง', ['ApS'], '2026-09-30', 'Scheduled']], + discussion: [['ผลการดำเนินโครงการ', 'พัฒนาระบบครบตามขอบเขต 11 ระบบงาน ทดสอบ 45 Test Case ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 มีข้อบกพร่องระดับสูงคงค้าง ISS-029–ISS-032 และชุดติดตั้ง Docker ที่ยังไม่ได้ทดสอบ', ['ApS', 'SeV'], 'รับทราบ'], ['ความครบถ้วนของเอกสาร', 'ตรวจสอบ Work Products รอบที่ 4 ครบทุกรายการ ไม่ผ่าน 2 รายการตามผลการทดสอบ และจัดทำ List of Evidence เรียบร้อย', ['YaB', 'PaNg'], 'สมบูรณ์'], ['ชุดติดตั้งและอัตลักษณ์องค์กร', 'จัดทำชุดติดตั้ง Docker Compose ตามความต้องการ CR10:002 และปรับอัตลักษณ์องค์กรในหน้าจอและเอกสารเสร็จแล้ว เป็นงานเตรียมการส่งมอบตาม Task 4.7 ไม่เปลี่ยนแปลงขอบเขตหรือสิ่งส่งมอบ', ['SeV', 'ApS'], 'เสร็จสิ้น'], ['ผลการตรวจรับ', 'Project Sponsor ตรวจรับสิ่งส่งมอบแบบมีเงื่อนไข (Accepted with conditions): แก้ไข ISS-029–ISS-032 และทดสอบซ้ำภายใต้การบำรุงรักษาแบบแก้ไข และทดสอบ TC-UN13.002–TC-UN13.003 ก่อนใช้ชุดติดตั้ง Docker ในสภาพแวดล้อมใช้งานจริง', ['SeV'], 'ตรวจรับแบบมีเงื่อนไข'], ['ผลการอบรม', 'อบรมผู้ใช้งาน 6 คน เมื่อ 22 ส.ค. 69 ผู้เข้าอบรมทดลองใช้งานครบทุกขั้นตอนได้สำเร็จ', ['ThS', 'PaNg'], 'เสร็จสิ้น'], ['การควบคุมปฏิบัติการ', 'ปิดรายการสำรองฐานข้อมูลอัตโนมัติ (OP-001) และการเฝ้าระวังพร้อมแจ้งเตือน (OP-002) เมื่อ 23 ส.ค. 69', ['ThS'], 'เสร็จสิ้น'], ['การสำรองข้อมูลโครงการ', 'ซิงก์ Branch `main` ไปยัง Backup Remote และทดสอบเรียกคืนสำเร็จ', ['ThS', 'YaB'], 'เสร็จสิ้น'], ['การปิดโครงการ', 'ที่ประชุมมีมติปิดโครงการอย่างเป็นทางการเมื่อ 24 ส.ค. 69', ['SeV', 'ApS'], 'ปิดโครงการ']], + actions: [['แก้ไขข้อบกพร่องคงค้าง ISS-029–ISS-032 และทดสอบซ้ำภายใต้การบำรุงรักษาแบบแก้ไข', ['ThS', 'PaNg'], '2026-09-30', 'Scheduled'], ['ทดสอบชุดติดตั้ง Docker (TC-UN13.002–TC-UN13.003) ก่อนใช้งานจริง', ['ThS', 'PaNg'], '2026-09-30', 'Scheduled'], ['จัดเก็บเอกสารโครงการทั้งหมดเข้าระบบควบคุมเอกสาร', ['YaB'], '2026-08-24', 'เสร็จสมบูรณ์'], ['ติดตามการตรวจนับสต๊อกสิ้นเดือนแรกหลังเปิดใช้งานจริง', ['ApS'], '2026-09-30', 'Scheduled']], next: null, }, ]; diff --git a/scripts/sdlc-seed/project.mjs b/scripts/sdlc-seed/project.mjs index ad27332..6137af6 100644 --- a/scripts/sdlc-seed/project.mjs +++ b/scripts/sdlc-seed/project.mjs @@ -14,7 +14,7 @@ export const TRAINING_DATE = '2026-08-22'; export const OPS_CLOSE_DATE = '2026-08-23'; export const RELEASE_DATE = '2026-08-17'; // date stamped on the consolidated V1.0 issue export const BASELINE_COMMIT = '6c39700'; // delivered software baseline on main -export const TEST_STATE_COMMIT = 'dd48a8b'; // closest retained repository state at end of test window +export const TEST_STATE_COMMIT = 'b2c4374'; // build under test 10–14 Aug: last code change before the run (demo data dd48a8b followed on 14 Aug) export const TAG = 'sdlc-v1.0-final'; export const ORIGIN = 'git@188.166.228.62:nok/wms-app.git'; export const BACKUP = 'git@github.com:thanakorninbox-dev/wms-app.git'; diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.docx index c06a1cf..0dd2cd6 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.pdf index 16544e1..b9555fc 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.docx index 2d11aac..4119357 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.pdf index 065a289..444841e 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.docx index 7d6ad29..72f98fa 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.pdf index 367d783..2aaa758 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.docx index 0877678..391bd4d 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.pdf index 9fac995..9203ee8 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.docx b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.docx index 1bb03f9..edfea2c 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.pdf index 7f246c4..eab4bb1 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.docx index 73c217c..838681f 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.pdf index adc4756..7237feb 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.docx index c74d7d4..c005a0e 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.pdf index 8422a12..a3eef4a 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.docx index 27c245b..64aa1ce 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.pdf index 35eea68..39cecb9 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.docx index e1337f2..a6f75f8 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.pdf index 976d9b5..088de1a 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.docx index cf9e024..031f728 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.pdf index 9fc94fb..479cae6 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.docx index 33592a7..cb29101 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.pdf index 6d5181b..63f0091 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.docx index 03dffa5..03f8ed4 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.pdf index 40e85cf..40fc42b 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.docx index 71ae1c8..492b4fb 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.pdf index 0d9fddc..edd9061 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.docx index 1c671b9..cd1eddc 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.pdf index 6461cf9..52c7196 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690525 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690525 V1.0 ApS.docx index 9be4dbd..a038a4a 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690525 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690525 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690525 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690525 V1.0 ApS.pdf index cc75c30..de30511 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690525 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690525 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.docx index 525faf1..f0367f2 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.pdf index 8bf9193..8202f3a 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.docx index 14e7b1e..9ffa365 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.pdf index c762ac6..9be5d3e 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.docx index f644f5e..ad144a9 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.pdf index c0405c9..f44b98e 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.docx index cdd415a..d3facdc 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.pdf index eb10f0e..f392937 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.docx index 2bbacb8..b4ed92a 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.pdf index 9a5316a..a5d2da1 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.docx index e8bfa62..09e998d 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.pdf index 7b31242..fb7257d 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.docx index 898cd52..3e288be 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.pdf index 867f057..070e3eb 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690824 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690824 V1.0 ApS.docx index a78bc4b..34c0262 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690824 V1.0 ApS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690824 V1.0 ApS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690824 V1.0 ApS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690824 V1.0 ApS.pdf index 97d1d8f..5e96efa 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690824 V1.0 ApS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690824 V1.0 ApS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.docx index 62da4fc..57beab8 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.pdf index 82bee88..d0590bb 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.docx index 0b6c847..425e032 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.pdf index 43c1ea9..fc51f28 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.docx index ec19e92..efb7a57 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.pdf index a183936..40fea5a 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690323 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690323 V1.0 YaB.docx index de09c3c..08e7d4b 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690323 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690323 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690323 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690323 V1.0 YaB.pdf index dcc14e4..2a3a5b1 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690323 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690323 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690504 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690504 V1.0 YaB.docx index eb6c1df..8766945 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690504 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690504 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690504 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690504 V1.0 YaB.pdf index 27e629d..9b2ac7d 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690504 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690504 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690518 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690518 V1.0 YaB.docx index cee317d..15cd7e9 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690518 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690518 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690518 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690518 V1.0 YaB.pdf index 3350547..3775910 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690518 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690518 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690528 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690528 V1.0 YaB.docx index f17e436..5e3e8dc 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690528 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690528 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690528 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690528 V1.0 YaB.pdf index 2c04909..9f530dc 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690528 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690528 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690604 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690604 V1.0 YaB.docx index 1ebaf63..a517d41 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690604 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690604 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690604 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690604 V1.0 YaB.pdf index 1d18839..4b6dc28 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690604 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690604 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690810 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690810 V1.0 YaB.docx index cb11017..3bdd5b9 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690810 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690810 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690810 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690810 V1.0 YaB.pdf index c9d2ebd..8039007 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690810 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690810 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.docx index ebe9533..a2f2a23 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.pdf index 9e589e2..6b1a0da 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.docx index a12692e..ba4df46 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.pdf index 3e0b5cf..e10b743 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.docx index 5778e4d..a7f19c7 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.pdf index fd0ae24..e49c01f 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.pdf differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.docx index 8cb5f05..76ad0f7 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.docx and b/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.docx differ diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.pdf b/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.pdf index f4a8429..d09c4ad 100644 Binary files a/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.pdf and b/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.docx b/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.docx index 3a70fd8..ea26f3f 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.pdf index 38ee693..1fc44a7 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.docx b/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.docx index 4720997..ff6bf14 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.pdf index e3ca405..aaf6f08 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.docx b/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.docx index 5bd0555..302a935 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.pdf index 2e0bf93..3c8a748 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.docx index 8fb5610..2cc76b5 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.pdf index d81081c..be37e1c 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.docx index 5e9647d..2b8d53a 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.pdf index 7ca4816..f4fec3c 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.docx index 7c53ee2..75ba078 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.pdf index 51ffcd2..c2aedee 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.docx index 234b3f3..7dc5d78 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.pdf index d19fea9..286e327 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.docx index 34ed91f..08d82c8 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.pdf index d27e122..4d68783 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.docx index 8e3bc13..f583a6b 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.pdf index 4fbee28..2cf2d27 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.docx index e419f6b..86f70ec 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.pdf index d84c176..883f6d5 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.docx index 70c6542..f0b04d0 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.pdf index 2b85cc1..124c469 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.docx index f88c669..78d2e0e 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.pdf index 485eb8f..bfe9615 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.docx index cdcf672..d359797 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.pdf index 8fcce04..3caab5b 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.docx index f03b2f8..e8ab209 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.pdf index 6e248ff..f9f44ed 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.pdf differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.docx index 8176ddb..8fa8fc7 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.docx and b/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.docx differ diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.pdf b/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.pdf index 34008bf..dc72f24 100644 Binary files a/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.pdf and b/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.pdf differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.docx index 29f10e6..3c6f462 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.docx and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.docx differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.pdf b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.pdf index 1f88eed..6577099 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.pdf and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.docx index 5e8b074..e37c7c8 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.docx and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.docx differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.pdf b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.pdf index 94fb581..6c9b08a 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.pdf and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.docx index c25af3b..585451b 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.docx and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.docx differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.pdf b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.pdf index bcf080e..7616a0f 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.pdf and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.pdf differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.docx index aa50eda..e2bb40f 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.docx and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.docx differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.pdf b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.pdf index de7ca02..07a8551 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.pdf and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.pdf differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.docx index e7bc059..06f1f03 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.docx and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.docx differ diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.pdf b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.pdf index f518e48..2c6cd9c 100644 Binary files a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.pdf and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.pdf differ diff --git a/sdlc/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.md b/sdlc/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.md index f236bb4..5236ea2 100644 --- a/sdlc/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.md +++ b/sdlc/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.md @@ -209,7 +209,7 @@ | 1 | 17 มีนาคม 2569 | 09:00 – 12:00 น. | 3 | ตรวจสอบเอกสารวางแผนโครงการและความต้องการ | WP 1.0, WP 2.0 | | 2 | 29 พฤษภาคม 2569 | 09:00 – 12:00 น. | 3 | ตรวจสอบเอกสารความต้องการซอฟต์แวร์และการออกแบบ | WP 3.0, WP 4.0, WP 5.0 | | 3 | 31 กรกฎาคม 2569 | 09:00 – 12:00 น. | 3 | ตรวจสอบชุดทดสอบและการสอบกลับ | WP 6.0 | -| 4 | 17 สิงหาคม 2569 | 09:00 – 16:00 น. | 6 | User Acceptance Test (UAT) และตรวจสอบเอกสารส่งมอบทั้งหมด | WP 1.0, WP 2.0, WP 3.0, WP 4.0, WP 5.0, WP 6.0, WP 7.0, WP 8.0, WP 9.0, WP 10.0, WP 11.0 | +| 4 | 17 สิงหาคม 2569 | 09:00 – 16:00 น. | 6 | ทบทวนผลการทดสอบระบบและ UAT และตรวจสอบเอกสารส่งมอบทั้งหมด | WP 1.0, WP 2.0, WP 3.0, WP 4.0, WP 5.0, WP 6.0, WP 7.0, WP 8.0, WP 9.0, WP 10.0, WP 11.0 | | หัวข้อ | รายละเอียด | | --- | --- | diff --git a/sdlc/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.md b/sdlc/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.md index d6281ea..bf9cfe7 100644 --- a/sdlc/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.md +++ b/sdlc/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.md @@ -14,7 +14,7 @@ | Task ID | Task Name | Period | Responsible | Status | Progress (%) | Remarks | | :---: | --- | :---: | :---: | :---: | ---: | --- | -| 4.4 | System Test & UAT | 10–14 ส.ค. 69 | PaNg, SeV | Completed | 100 | ทดสอบระบบ 45 Test Case และ UAT ครบ 14 หมวดความต้องการ (80 รายการ) ผ่านทั้งหมดระหว่าง 10–14 ส.ค. 69 | +| 4.4 | System Test & UAT | 10–14 ส.ค. 69 | PaNg, SeV | Completed | 100 | ทดสอบระบบ 45 Test Case ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 และ UAT ครบ 14 หมวดความต้องการ (80 รายการ) ระหว่าง 10–14 ส.ค. 69 บันทึกข้อบกพร่องคงค้าง ISS-029–ISS-032 | | 4.7 | Demonstration Data & Delivery Package | 14–17 ส.ค. 69 | ThS | In Progress | 60 | จัดทำข้อมูลสาธิตเสร็จ อยู่ระหว่างปรับแบรนด์และชุดติดตั้ง Docker Compose | | 5.1 | Final Work-product Review | 10–17 ส.ค. 69 | ApS, YaB | In Progress | 70 | ตรวจสอบความครบถ้วนของ Work Products | @@ -22,7 +22,10 @@ | ลำดับ | ประเด็น / ความเสี่ยง | รายละเอียด | ผู้รับผิดชอบ | สถานะ | | :---: | --- | --- | :---: | :---: | -| - | ไม่พบประเด็นความเสี่ยงหรืออุปสรรคในงวดนี้ | - | - | - | +| 1 | ISS-029 : ไฟล์แนบเปิดได้จาก URL โดยตรงโดยไม่ตรวจ Session และบริษัท | ไฟล์แนบเก็บใต้โฟลเดอร์ที่เว็บเปิดให้เรียกได้ แนวทางแก้ไข: ย้ายไฟล์แนบออกนอก Web Root และให้ดาวน์โหลดผ่านสคริปต์ที่ตรวจ Session และบริษัท | ThS | คงค้าง | +| 2 | ISS-030 : เอกสารที่บันทึกแล้วไม่ถูก Rollback เมื่อการผ่าน GL ล้มเหลว | การผ่าน GL ทำใน Transaction แยกหลังบันทึกเอกสาร แนวทางแก้ไข: รวมการบันทึกเอกสาร สต๊อก และ GL ไว้ใน Transaction เดียวตาม CR13:001 | ThS | คงค้าง | +| 3 | ISS-031 : Socket.IO รับรหัสบริษัท ผู้ใช้ และบทบาทจาก Browser ทำให้รับแจ้งเตือนของบริษัทอื่นได้ | การเชื่อมต่อ Socket.IO ไม่ตรวจกับ Session ของผู้ใช้ แนวทางแก้ไข: ตรวจ Session ฝั่งเซิร์ฟเวอร์ก่อนเข้าห้องแจ้งเตือน และไม่รับค่าบริษัท/บทบาทจาก Browser | ThS | คงค้าง | +| 4 | ISS-032 : แม่แบบค่าตั้งค่ากำหนดกุญแจเข้ารหัสและ IV คงที่ และเชื่อมต่อฐานข้อมูลด้วยผู้ใช้ root | ค่าความลับบางส่วนยังไม่ได้แยกออกจาก Source Code แนวทางแก้ไข: ย้ายกุญแจและ IV ไปเป็นความลับต่อการติดตั้ง ใช้ผู้ใช้ฐานข้อมูลสิทธิ์จำกัด และตั้งค่า HTTPS/TLS | ThS | คงค้าง | ## สรุป CR/Change (ถ้ามี) diff --git a/sdlc/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.md b/sdlc/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.md index e238576..5ffb985 100644 --- a/sdlc/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.md +++ b/sdlc/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.md @@ -14,7 +14,7 @@ | Task ID | Task Name | Period | Responsible | Status | Progress (%) | Remarks | | :---: | --- | :---: | :---: | :---: | ---: | --- | -| 4.3 | Verify Work Products | 30 พ.ค.–17 ส.ค. 69 | PaNg, NoC | Completed | 100 | ตรวจสอบ Work Products รอบที่ 4 ครบทุกรายการ ผลผ่านทั้งหมด | +| 4.3 | Verify Work Products | 30 พ.ค.–17 ส.ค. 69 | PaNg, NoC | Completed | 100 | ตรวจสอบ Work Products รอบที่ 4 ครบทุกรายการ ไม่ผ่าน 2 รายการ คือผลการทดสอบที่มีข้อบกพร่องคงค้าง และชุดติดตั้ง Docker ที่ยังไม่ได้ทดสอบ | | 4.5 | Operational Documentation | 1 มิ.ย.–17 ส.ค. 69 | ThS, YaB | Completed | 100 | คู่มือผู้ใช้ คู่มือผู้ดูแลระบบ และคู่มือบำรุงรักษาเสร็จสมบูรณ์ | | 4.7 | Demonstration Data & Delivery Package | 14–17 ส.ค. 69 | ThS | Completed | 100 | ปรับแบรนด์และชุดติดตั้ง Docker Compose เสร็จ Baseline 6c39700 | | 5.1 | Final Work-product Review | 10–17 ส.ค. 69 | ApS, YaB | Completed | 100 | จัดทำ List of Evidence ครบทุก Work Product | diff --git a/sdlc/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.md b/sdlc/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.md index 05da1f1..271bf23 100644 --- a/sdlc/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.md +++ b/sdlc/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.md @@ -42,19 +42,23 @@ | 26 | ISS-026 | 22 พ.ค. 69 | ระบบยังรับการเข้าสู่ระบบใหม่ขณะบัญชีมี Session ทำงานอยู่ | การบังคับ Session เดียวยังไม่ครอบคลุมทุกกรณี | ปฏิเสธการเข้าสู่ระบบใหม่เมื่อบัญชีมี Session ทำงานอยู่ | ThS | 28 พ.ค. 69 | เสร็จสิ้น | | 27 | ISS-027 | 23 พ.ค. 69 | เมธอดของคลาสมีการทำงานซ้ำซ้อน | พัฒนาเพิ่มทีละส่วนทำให้เกิดความซ้ำซ้อน | ลดความซ้ำซ้อนของเมธอดในคลาส | ThS | 29 พ.ค. 69 | เสร็จสิ้น | | 28 | ISS-028 | 28 ก.ค. 69 | การเข้าสู่ระบบและค่าตั้งค่าสภาพแวดล้อมผิดพลาดหลัง Baseline | ค่าตั้งค่าของสภาพแวดล้อมใหม่ไม่ตรงกับที่ระบบคาดหวัง | แก้ไขการเข้าสู่ระบบและค่าตั้งค่าสภาพแวดล้อม | ThS | 3 ส.ค. 69 | เสร็จสิ้น | +| 29 | ISS-029 | 11 ส.ค. 69 | ไฟล์แนบเปิดได้จาก URL โดยตรงโดยไม่ตรวจ Session และบริษัท | ไฟล์แนบเก็บใต้โฟลเดอร์ที่เว็บเปิดให้เรียกได้ | ย้ายไฟล์แนบออกนอก Web Root และให้ดาวน์โหลดผ่านสคริปต์ที่ตรวจ Session และบริษัท | ThS | - | คงค้าง | +| 30 | ISS-030 | 12 ส.ค. 69 | เอกสารที่บันทึกแล้วไม่ถูก Rollback เมื่อการผ่าน GL ล้มเหลว | การผ่าน GL ทำใน Transaction แยกหลังบันทึกเอกสาร | รวมการบันทึกเอกสาร สต๊อก และ GL ไว้ใน Transaction เดียวตาม CR13:001 | ThS | - | คงค้าง | +| 31 | ISS-031 | 12 ส.ค. 69 | Socket.IO รับรหัสบริษัท ผู้ใช้ และบทบาทจาก Browser ทำให้รับแจ้งเตือนของบริษัทอื่นได้ | การเชื่อมต่อ Socket.IO ไม่ตรวจกับ Session ของผู้ใช้ | ตรวจ Session ฝั่งเซิร์ฟเวอร์ก่อนเข้าห้องแจ้งเตือน และไม่รับค่าบริษัท/บทบาทจาก Browser | ThS | - | คงค้าง | +| 32 | ISS-032 | 13 ส.ค. 69 | แม่แบบค่าตั้งค่ากำหนดกุญแจเข้ารหัสและ IV คงที่ และเชื่อมต่อฐานข้อมูลด้วยผู้ใช้ root | ค่าความลับบางส่วนยังไม่ได้แยกออกจาก Source Code | ย้ายกุญแจและ IV ไปเป็นความลับต่อการติดตั้ง ใช้ผู้ใช้ฐานข้อมูลสิทธิ์จำกัด และตั้งค่า HTTPS/TLS | ThS | - | คงค้าง | ## สรุปผลการแก้ไข | รายการ | จำนวน | | --- | ---: | -| ปัญหาที่บันทึกทั้งหมด | 28 | -| ระดับความรุนแรงสูง | 17 | +| ปัญหาที่บันทึกทั้งหมด | 32 | +| ระดับความรุนแรงสูง | 21 | | ระดับความรุนแรงกลาง | 9 | | ระดับความรุนแรงต่ำ | 2 | | แก้ไขแล้วเสร็จและตรวจสอบผลแล้ว | 28 | -| คงค้าง | 0 | +| คงค้าง | 4 | -ปัญหาทุกรายการได้รับการแก้ไขและตรวจสอบผลด้วย Test Case ที่เกี่ยวข้อง โดยผลการทดสอบผ่านทั้งหมดในรอบทดสอบระหว่าง 10 สิงหาคม 2569 – 14 สิงหาคม 2569 ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง ณ วันตรวจรับ +ปัญหาที่พบระหว่างพัฒนา 28 รายการได้รับการแก้ไขและตรวจสอบผลแล้ว รอบทดสอบระหว่าง 10 สิงหาคม 2569 – 14 สิงหาคม 2569 พบข้อบกพร่องระดับสูงคงค้าง 4 รายการ (ISS-029, ISS-030, ISS-031, ISS-032) ซึ่งต้องแจ้งผู้รับมอบและกำหนดการแก้ไขก่อนตรวจรับ ## บทเรียนและแนวทางป้องกันสำหรับโครงการถัดไป (Lessons Learned) @@ -62,10 +66,10 @@ | ลำดับ | กลุ่มปัญหา | เลขที่ปัญหา | จำนวน | สิ่งที่เกิดขึ้น | แนวทางป้องกัน (Preventive Action) | | :---: | --- | --- | ---: | --- | --- | -| 1 | ความปลอดภัยและการควบคุมสิทธิ์ | ISS-001, ISS-003, ISS-004, ISS-006, ISS-009, ISS-011, ISS-015, ISS-016, ISS-017, ISS-018, ISS-024, ISS-026 | 12 | ข้อบกพร่องกลุ่มใหญ่ที่สุดเกิดจากการเพิ่ม Role Guard การตรวจสิทธิ์ และการจำกัด Session ทีละส่วนระหว่างพัฒนา | กำหนด Secure Coding Checklist และรูปแบบการตรวจสิทธิ์กลางตั้งแต่ช่วงออกแบบ และทบทวนโค้ดด้านความปลอดภัยทุกโมดูลก่อนรวมเข้า Baseline | +| 1 | ความปลอดภัยและการควบคุมสิทธิ์ | ISS-001, ISS-003, ISS-004, ISS-006, ISS-009, ISS-011, ISS-015, ISS-016, ISS-017, ISS-018, ISS-024, ISS-026, ISS-029, ISS-031, ISS-032 | 15 | ข้อบกพร่องกลุ่มใหญ่ที่สุดเกิดจากการเพิ่ม Role Guard การตรวจสิทธิ์ และการจำกัด Session ทีละส่วนระหว่างพัฒนา | กำหนด Secure Coding Checklist และรูปแบบการตรวจสิทธิ์กลางตั้งแต่ช่วงออกแบบ และทบทวนโค้ดด้านความปลอดภัยทุกโมดูลก่อนรวมเข้า Baseline | | 2 | ขั้นตอน Onboarding และการลงทะเบียน | ISS-007, ISS-008, ISS-013 | 3 | เส้นทางการรับคำเชิญมีหลายเงื่อนไขที่ไม่ได้ระบุครบในการออกแบบ | เขียน Test Case ครบทุกเส้นทางของขั้นตอนหลายสถานะก่อนพัฒนา และทดสอบซ้ำทุกครั้งที่แก้ไข | | 3 | ความสอดคล้องระหว่างข้อกำหนดกับการพัฒนา | ISS-019, ISS-020, ISS-022 | 3 | ข้อกำหนดและเอกสารถูกปรับระหว่างพัฒนา ทำให้เกิดช่องว่างกับโค้ด | ปรับข้อกำหนดและ Traceability Record ในรอบเดียวกับการแก้โค้ด และตรวจความสอดคล้องในทุกรอบ Verification | -| 4 | ความถูกต้องของข้อมูลสต๊อกและบัญชี | ISS-002, ISS-012 | 2 | การแปลงชนิดข้อมูลและการตรวจสอบความสัมพันธ์ของข้อมูลไม่ครอบคลุม | ตรวจสอบข้อมูลนำเข้าและความสัมพันธ์ฝั่งเซิร์ฟเวอร์ทุกคำสั่งที่เปลี่ยนสต๊อกหรือ GL และเพิ่มชุดทดสอบวงจรเอกสาร | +| 4 | ความถูกต้องของข้อมูลสต๊อกและบัญชี | ISS-002, ISS-012, ISS-030 | 3 | การแปลงชนิดข้อมูลและการตรวจสอบความสัมพันธ์ของข้อมูลไม่ครอบคลุม | ตรวจสอบข้อมูลนำเข้าและความสัมพันธ์ฝั่งเซิร์ฟเวอร์ทุกคำสั่งที่เปลี่ยนสต๊อกหรือ GL และเพิ่มชุดทดสอบวงจรเอกสาร | | 5 | มาตรฐานโค้ดและการตั้งค่าสภาพแวดล้อม | ISS-005, ISS-010, ISS-014, ISS-021, ISS-023, ISS-025, ISS-027, ISS-028 | 8 | พัฒนาหลายโมดูลคู่ขนานโดยไม่มีมาตรฐานการตั้งชื่อ เส้นทางไฟล์ และค่าตั้งค่ากลาง | กำหนด Coding Standard และแม่แบบค่าตั้งค่าตั้งแต่ต้นโครงการ และทดสอบการติดตั้งบนสภาพแวดล้อมใหม่ทุกครั้งก่อนตั้ง Baseline | ## การเชื่อมโยงกับหลักฐานการทดสอบ @@ -73,7 +77,7 @@ | เลขที่ | การแก้ไขอ้างอิง (Commit) | Test Case ที่ใช้ตรวจสอบ | ผลการทดสอบ | | :---: | --- | :---: | :---: | | ISS-001 | `7cb78d0` | TC-UN12.002 | Passed | -| ISS-002 | `92d116f` | TC-UN08.002 | Passed | +| ISS-002 | `92d116f` | TC-UN04.002 | Passed | | ISS-003 | `2eb6a1a` | TC-UN01.002 | Passed | | ISS-004 | `a75d37e` | TC-UN12.002 | Passed | | ISS-005 | `304848d` | TC-UN01.003 | Passed | @@ -81,25 +85,29 @@ | ISS-007 | `8f1c5c4` | TC-UN01.001 | Passed | | ISS-008 | `4433ef1` | TC-UN01.001 | Passed | | ISS-009 | `8cf1d93` | TC-UN12.001 | Passed | -| ISS-010 | `91f8bb8` | TC-UN13.001 | Passed | -| ISS-011 | `6eeebfe` | TC-UN12.003 | Passed | +| ISS-010 | `91f8bb8` | ทดสอบถดถอยทั้งชุด | Passed | +| ISS-011 | `6eeebfe` | TC-UN01.001, TC-UN01.004, TC-UN12.003 | Passed | | ISS-012 | `94032dd` | TC-UN04.004 | Passed | | ISS-013 | `b76dc67` | TC-UN01.001 | Passed | | ISS-014 | `59037b5, f4ef776` | TC-UN13.001 | Passed | -| ISS-015 | `b07882e` | TC-UN01.002 | Passed | +| ISS-015 | `b07882e` | TC-UN01.002, TC-UN04.002 | Passed | | ISS-016 | `2930973` | TC-UN01.003 | Passed | | ISS-017 | `4733c78` | TC-UN01.002 | Passed | | ISS-018 | `b4b1f5c` | TC-UN01.001 | Passed | | ISS-019 | `cb36d3b` | TC-UN10.002 | Passed | | ISS-020 | `dfeb575` | TC-UN03.001 | Passed | | ISS-021 | `f3c0e3c, 714b70d` | TC-UN11.002 | Passed | -| ISS-022 | `99ae35d` | TC-UN13.001 | Passed | +| ISS-022 | `99ae35d` | ทบทวนเอกสาร | Passed | | ISS-023 | `5df6736` | TC-UN03.001 | Passed | | ISS-024 | `9a50238` | TC-UN12.001 | Passed | -| ISS-025 | `ed3dd2f` | TC-UN01.002 | Passed | +| ISS-025 | `ed3dd2f` | ตรวจหน้าจอ | Passed | | ISS-026 | `fda211b` | TC-UN01.003 | Passed | -| ISS-027 | `a0677d6` | TC-UN13.001 | Passed | -| ISS-028 | `b2c4374` | TC-UN12.004 | Passed | +| ISS-027 | `a0677d6` | ทดสอบถดถอยทั้งชุด | Passed | +| ISS-028 | `b2c4374` | TC-UN01.002 | Passed | +| ISS-029 | - | TC-UN04.006 | Failed (คงค้าง) | +| ISS-030 | - | TC-UN08.002 | Failed (คงค้าง) | +| ISS-031 | - | TC-UN11.001, TC-UN12.001 | Failed (คงค้าง) | +| ISS-032 | - | TC-UN12.004 | Failed (คงค้าง) | ## ผู้จัดทำเอกสาร (Secretary) diff --git a/sdlc/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.md b/sdlc/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.md index 9424daf..92d5b3b 100644 --- a/sdlc/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.md +++ b/sdlc/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690824 V1.0 ApS.md @@ -23,7 +23,7 @@ | 6 | WP 6.0 | เอกสาร 200-WMS-26-001-00 Test Case and Test Procedures | ส่งเอกสารจำนวน 1 ชุด | Accepted | | 7 | WP 7.0 | เอกสาร 200-WMS-26-001-00 Validation Results | ส่งเอกสารจำนวน 1 ชุด | Accepted | | 8 | WP 8.0 | เอกสาร 200-WMS-26-001-00 Software User Document | ส่งเอกสารจำนวน 1 ชุด | Accepted | -| 9 | WP 9.0 | ระบบ BRN WMS ที่ผ่านการทดสอบพร้อมนำไปใช้งานจริง | ส่ง Source Code ผ่าน Git Repository และติดตั้ง (Git baseline `6c39700`) | Accepted | +| 9 | WP 9.0 | ระบบ BRN WMS ที่ผ่านการทดสอบพร้อมนำไปใช้งานจริง | ส่ง Source Code ผ่าน Git Repository และติดตั้ง (Git baseline `6c39700`) | Accepted (มีเงื่อนไข) | | 10 | WP 10.0 | เอกสาร 200-WMS-26-001-00 Product Operation Guide | ส่งเอกสารจำนวน 1 ชุด | Accepted | | 11 | WP 11.0 | เอกสาร 200-WMS-26-001-00 Maintenance Document | ส่งเอกสารจำนวน 1 ชุด | Accepted | @@ -31,25 +31,26 @@ | ลำดับ | เกณฑ์การตรวจรับ | หลักฐานอ้างอิง | ผลการตรวจสอบ | | :---: | --- | --- | :---: | -| 1 | ฟังก์ชันในขอบเขตทำงานตรงตาม Customer Requirements ครบทุกรายการ | Traceability Record, Test Report | ผ่าน | -| 2 | ทดสอบระบบตาม Test Case ครบถ้วน | Test Report 45 Test Case ผ่านทั้งหมด (10 สิงหาคม 2569 – 14 สิงหาคม 2569) | ผ่าน | -| 3 | ทดสอบการยอมรับโดยผู้ใช้ (UAT) | Validation Results ครบ 14 หมวดความต้องการ (80 รายการ) ผ่านทั้งหมด | ผ่าน | -| 4 | ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง | Correction Register 28 รายการ แก้ไขและตรวจสอบครบ | ผ่าน | +| 1 | ฟังก์ชันในขอบเขตทำงานตรงตาม Customer Requirements ครบทุกรายการ | Traceability Record Table, Validation Results: ไม่ผ่าน 11 รายการ ยังไม่ได้ทดสอบ 5 รายการ | ไม่ผ่าน (มีเงื่อนไข) | +| 2 | ทดสอบระบบตาม Test Case ครบถ้วน | Test Report ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 จาก 45 Test Case (10 สิงหาคม 2569 – 14 สิงหาคม 2569) | ไม่ผ่าน (มีเงื่อนไข) | +| 3 | ทดสอบการยอมรับโดยผู้ใช้ (UAT) | Validation Results ทดสอบครบ 80 รายการ ผลตามข้อ 1 | ไม่ผ่าน (มีเงื่อนไข) | +| 4 | ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง | Correction Register ข้อบกพร่องระดับสูงคงค้าง ISS-029, ISS-030, ISS-031, ISS-032 | ไม่ผ่าน (มีเงื่อนไข) | | 5 | เอกสารคู่มือผู้ใช้ ผู้ดูแลระบบ และการบำรุงรักษาครบถ้วน | Software User Document, Product Operation Guide, Maintenance Document | ผ่าน | | 6 | Source Code และเอกสารจัดเก็บใน Repository พร้อมชุดสำรอง | Project Repository, Project Repository (Backup) | ผ่าน | -| 7 | ผลการตรวจสอบ Work Products (Verification) | Verification Results รอบที่ 4 | ผ่าน | +| 7 | ผลการตรวจสอบ Work Products (Verification) | Verification Results รอบที่ 4: ไม่ผ่าน 2 รายการ (ผลการทดสอบ และชุดติดตั้ง Docker) | ไม่ผ่าน (มีเงื่อนไข) | ## สรุปผลการตรวจรับ | รายการ | ผลสรุป | | --- | --- | | จำนวนสิ่งส่งมอบทั้งหมด | 11 รายการ | -| ตรวจรับแล้ว (Accepted) | 11 รายการ | +| ตรวจรับแล้ว (Accepted) | 10 รายการ | +| ตรวจรับแบบมีเงื่อนไข | 1 รายการ (WP 9.0 Software) | | ไม่ผ่านการตรวจรับ (Not Accepted) | 0 รายการ | -| ข้อบกพร่องคงค้าง | ไม่มี | -| ผลการตรวจรับโดยรวม | **Accepted** — ตรวจรับส่งมอบระบบครบถ้วน | +| ข้อบกพร่องคงค้าง | 4 รายการ (ISS-029, ISS-030, ISS-031, ISS-032) | +| ผลการตรวจรับโดยรวม | **Accepted with conditions** — ตรวจรับพร้อมเงื่อนไขแก้ไขข้อบกพร่องคงค้าง | -ผู้รับมอบได้ตรวจสอบสิ่งส่งมอบทั้งหมดตามเกณฑ์การตรวจรับที่กำหนดในเอกสาร Statement of Work และ Software Project Plan แล้วเห็นว่าครบถ้วนถูกต้อง จึงมีมติตรวจรับส่งมอบระบบเมื่อวันที่ 24 สิงหาคม 2569 โดยงานอบรมผู้ใช้งานและการปิดงานควบคุมปฏิบัติการจะดำเนินการให้แล้วเสร็จภายในวันที่ 24 สิงหาคม 2569 ตามแผนปิดโครงการ +ผู้รับมอบได้ตรวจสอบสิ่งส่งมอบทั้งหมดตามเกณฑ์การตรวจรับในเอกสาร Statement of Work และ Software Project Plan แล้ว รับทราบว่ามีข้อบกพร่องระดับสูงคงค้าง 4 รายการ และชุดติดตั้ง Docker ที่ยังไม่ได้ทดสอบ จึงมีมติตรวจรับส่งมอบระบบแบบมีเงื่อนไขเมื่อวันที่ 24 สิงหาคม 2569 โดยเงื่อนไขคือ (1) แก้ไข ISS-029, ISS-030, ISS-031, ISS-032 และทดสอบซ้ำภายใต้การบำรุงรักษาแบบแก้ไข (Corrective) ตาม Maintenance Document และ (2) ทดสอบ TC-UN13.002 และ TC-UN13.003 บน Baseline ก่อนใช้ชุดติดตั้ง Docker ในสภาพแวดล้อมใช้งานจริง ## ผู้จัดทำเอกสาร (Secretary) diff --git a/sdlc/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.md b/sdlc/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.md index 84530ea..76dc7a1 100644 --- a/sdlc/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.md +++ b/sdlc/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690819 V1.0 YaB.md @@ -30,7 +30,7 @@ | หมวดงาน | สถานะ | ความคืบหน้า (%) | รายละเอียด | | --- | :---: | ---: | --- | -| Phase 4: Verification & Validation | เสร็จสมบูรณ์ | 100 | ทดสอบ 45 Test Case และ UAT ครบ 14 หมวดความต้องการ (80 รายการ) ผ่านทั้งหมด | +| Phase 4: Verification & Validation | กำลังดำเนินการ | 90 | ทดสอบ 45 Test Case ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 และ UAT ครบ 14 หมวดความต้องการ (80 รายการ) มีข้อบกพร่องคงค้าง ISS-029–ISS-032 | | Phase 5: Project Close | กำลังดำเนินการ | 60 | อยู่ระหว่างเตรียมอบรมผู้ใช้งาน ตรวจรับ และปิดโครงการ | | รวมความคืบหน้าทั้งโครงการ | ตามแผน | 92 | เตรียมตรวจรับและปิดโครงการ | @@ -47,8 +47,8 @@ | ลำดับ | ประเด็น | รายละเอียด / มติที่ได้ | ผู้รับผิดชอบ | สถานะ | | :---: | --- | --- | :---: | :---: | -| 1 | ผลการทดสอบระบบ | ทดสอบ 45 Test Case บน Internal Testing Server ผ่านทั้งหมด ไม่พบข้อบกพร่องคงค้าง | PaNg | ผ่าน | -| 2 | ผลการทดสอบการยอมรับ | ตัวแทนลูกค้าทดสอบการยอมรับครบ 14 หมวดความต้องการ (80 รายการ) บนสภาพแวดล้อมใช้งานจริง ผ่านทั้งหมด | SeV | ผ่าน | +| 1 | ผลการทดสอบระบบ | ทดสอบ 45 Test Case บน Internal Testing Server (Build b2c4374) ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 ข้อบกพร่องระดับสูงที่พบ ได้แก่ ไฟล์แนบเปิดได้จาก URL (ISS-029) การผ่าน GL ไม่อยู่ใน Transaction เดียวกับเอกสาร (ISS-030) Socket.IO ไม่ตรวจ Session (ISS-031) และค่าความลับในแม่แบบค่าตั้งค่า (ISS-032) ส่วนชุดติดตั้ง Docker ยังไม่ได้ทดสอบ | PaNg | ไม่ผ่าน | +| 2 | ผลการทดสอบการยอมรับ | ตัวแทนลูกค้าทดสอบการยอมรับครบ 14 หมวดความต้องการ (80 รายการ) บนสภาพแวดล้อมใช้งานจริง ความต้องการที่เกี่ยวข้องกับข้อบกพร่องคงค้างและชุดติดตั้ง Docker ยังไม่ผ่าน ผู้รับมอบรับทราบผลและขอแผนแก้ไขก่อนตรวจรับ | SeV | รับทราบ | | 3 | ข้อมูลสาธิต | จัดเตรียมข้อมูลสาธิตสำหรับการตรวจรับรายงานและขั้นตอนการทำงานเสร็จแล้ว เป็นงานเตรียมการส่งมอบตาม Task 4.7 ไม่เปลี่ยนแปลงขอบเขตหรือสิ่งส่งมอบ | ApS, SeV | เสร็จสิ้น | | 4 | งานที่เหลือ | อบรมผู้ใช้งาน ปิดงานควบคุมปฏิบัติการ ตรวจรับส่งมอบ และปิดโครงการ | ApS, YaB | ดำเนินการ | @@ -56,9 +56,10 @@ | ลำดับ | งาน | ผู้รับผิดชอบ | วันครบกำหนด | สถานะ | | :---: | --- | :---: | :---: | :---: | -| 1 | จัดอบรมผู้ใช้งานก่อนเปิดใช้งานจริง (Task 5.2) | ThS, PaNg | 22 สิงหาคม 2569 | Scheduled | -| 2 | ปิดงานควบคุมการสำรองข้อมูลและการเฝ้าระวังระบบ | ThS | 23 สิงหาคม 2569 | Scheduled | -| 3 | นัดตรวจรับส่งมอบระบบและปิดโครงการกับ Project Sponsor | ApS | 24 สิงหาคม 2569 | Scheduled | +| 1 | จัดทำแผนแก้ไขข้อบกพร่องคงค้าง ISS-029–ISS-032 และการทดสอบชุดติดตั้ง Docker เสนอผู้รับมอบ | ApS, ThS | 24 สิงหาคม 2569 | Scheduled | +| 2 | จัดอบรมผู้ใช้งานก่อนเปิดใช้งานจริง (Task 5.2) | ThS, PaNg | 22 สิงหาคม 2569 | Scheduled | +| 3 | ปิดงานควบคุมการสำรองข้อมูลและการเฝ้าระวังระบบ | ThS | 23 สิงหาคม 2569 | Scheduled | +| 4 | นัดตรวจรับส่งมอบระบบและปิดโครงการกับ Project Sponsor | ApS | 24 สิงหาคม 2569 | Scheduled | ## งานประชุมครั้งถัดไป (Next Meeting) diff --git a/sdlc/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.md b/sdlc/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.md index 15b7320..a58626c 100644 --- a/sdlc/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.md +++ b/sdlc/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.md @@ -33,7 +33,7 @@ | Phase 1: Project Initiation | เสร็จสมบูรณ์ | 100 | เปิดโครงการและอนุมัติกฎบัตรเรียบร้อย | | Phase 2: Project Planning | เสร็จสมบูรณ์ | 100 | อนุมัติแผนโครงการและ Baseline ความต้องการ | | Phase 3: Project Execution | เสร็จสมบูรณ์ | 100 | พัฒนาระบบครบตามขอบเขต Baseline 6c39700 | -| Phase 4: Verification & Validation | เสร็จสมบูรณ์ | 100 | ตรวจสอบ ทดสอบ และ UAT ผ่านครบทุกรายการ | +| Phase 4: Verification & Validation | เสร็จสมบูรณ์ | 100 | ตรวจสอบ ทดสอบ และ UAT ครบตามแผน ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 ข้อบกพร่องคงค้างส่งต่อการบำรุงรักษา | | Phase 5: Project Close | เสร็จสมบูรณ์ | 100 | ตรวจรับ อบรม ปิดงานควบคุมปฏิบัติการ และปิดโครงการเรียบร้อย | | รวมความคืบหน้าทั้งโครงการ | ตามแผน | 100 | โครงการเสร็จสมบูรณ์ ปิดโครงการอย่างเป็นทางการ | @@ -54,10 +54,10 @@ | ลำดับ | ประเด็น | รายละเอียด / มติที่ได้ | ผู้รับผิดชอบ | สถานะ | | :---: | --- | --- | :---: | :---: | -| 1 | ผลการดำเนินโครงการ | พัฒนาระบบครบตามขอบเขต 11 ระบบงาน ทดสอบและ UAT ผ่านทั้งหมด ไม่มีข้อบกพร่องระดับวิกฤตคงค้าง | ApS, SeV | ผ่านการรับรอง | -| 2 | ความครบถ้วนของเอกสาร | ตรวจสอบ Work Products รอบที่ 4 ครบทุกรายการ ผลผ่านทั้งหมด และจัดทำ List of Evidence เรียบร้อย | YaB, PaNg | สมบูรณ์ | +| 1 | ผลการดำเนินโครงการ | พัฒนาระบบครบตามขอบเขต 11 ระบบงาน ทดสอบ 45 Test Case ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 มีข้อบกพร่องระดับสูงคงค้าง ISS-029–ISS-032 และชุดติดตั้ง Docker ที่ยังไม่ได้ทดสอบ | ApS, SeV | รับทราบ | +| 2 | ความครบถ้วนของเอกสาร | ตรวจสอบ Work Products รอบที่ 4 ครบทุกรายการ ไม่ผ่าน 2 รายการตามผลการทดสอบ และจัดทำ List of Evidence เรียบร้อย | YaB, PaNg | สมบูรณ์ | | 3 | ชุดติดตั้งและอัตลักษณ์องค์กร | จัดทำชุดติดตั้ง Docker Compose ตามความต้องการ CR10:002 และปรับอัตลักษณ์องค์กรในหน้าจอและเอกสารเสร็จแล้ว เป็นงานเตรียมการส่งมอบตาม Task 4.7 ไม่เปลี่ยนแปลงขอบเขตหรือสิ่งส่งมอบ | SeV, ApS | เสร็จสิ้น | -| 4 | ผลการตรวจรับ | Project Sponsor ตรวจรับสิ่งส่งมอบทั้งหมด ผลการตรวจรับ Accepted | SeV | ตรวจรับแล้ว | +| 4 | ผลการตรวจรับ | Project Sponsor ตรวจรับสิ่งส่งมอบแบบมีเงื่อนไข (Accepted with conditions): แก้ไข ISS-029–ISS-032 และทดสอบซ้ำภายใต้การบำรุงรักษาแบบแก้ไข และทดสอบ TC-UN13.002–TC-UN13.003 ก่อนใช้ชุดติดตั้ง Docker ในสภาพแวดล้อมใช้งานจริง | SeV | ตรวจรับแบบมีเงื่อนไข | | 5 | ผลการอบรม | อบรมผู้ใช้งาน 6 คน เมื่อ 22 ส.ค. 69 ผู้เข้าอบรมทดลองใช้งานครบทุกขั้นตอนได้สำเร็จ | ThS, PaNg | เสร็จสิ้น | | 6 | การควบคุมปฏิบัติการ | ปิดรายการสำรองฐานข้อมูลอัตโนมัติ (OP-001) และการเฝ้าระวังพร้อมแจ้งเตือน (OP-002) เมื่อ 23 ส.ค. 69 | ThS | เสร็จสิ้น | | 7 | การสำรองข้อมูลโครงการ | ซิงก์ Branch `main` ไปยัง Backup Remote และทดสอบเรียกคืนสำเร็จ | ThS, YaB | เสร็จสิ้น | @@ -67,8 +67,10 @@ | ลำดับ | งาน | ผู้รับผิดชอบ | วันครบกำหนด | สถานะ | | :---: | --- | :---: | :---: | :---: | -| 1 | จัดเก็บเอกสารโครงการทั้งหมดเข้าระบบควบคุมเอกสาร | YaB | 24 สิงหาคม 2569 | เสร็จสมบูรณ์ | -| 2 | ติดตามการตรวจนับสต๊อกสิ้นเดือนแรกหลังเปิดใช้งานจริง | ApS | 30 กันยายน 2569 | Scheduled | +| 1 | แก้ไขข้อบกพร่องคงค้าง ISS-029–ISS-032 และทดสอบซ้ำภายใต้การบำรุงรักษาแบบแก้ไข | ThS, PaNg | 30 กันยายน 2569 | Scheduled | +| 2 | ทดสอบชุดติดตั้ง Docker (TC-UN13.002–TC-UN13.003) ก่อนใช้งานจริง | ThS, PaNg | 30 กันยายน 2569 | Scheduled | +| 3 | จัดเก็บเอกสารโครงการทั้งหมดเข้าระบบควบคุมเอกสาร | YaB | 24 สิงหาคม 2569 | เสร็จสมบูรณ์ | +| 4 | ติดตามการตรวจนับสต๊อกสิ้นเดือนแรกหลังเปิดใช้งานจริง | ApS | 30 กันยายน 2569 | Scheduled | ## งานประชุมครั้งถัดไป (Next Meeting) diff --git a/sdlc/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.md b/sdlc/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.md index 94bd8dd..af84e51 100644 --- a/sdlc/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.md +++ b/sdlc/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.md @@ -54,7 +54,7 @@ ## การเชื่อมโยงกับการเปลี่ยนแปลง -การเปลี่ยนแปลง Configuration Item ต้องพิจารณาตามเกณฑ์ใน Change Report และการแก้ไขข้อบกพร่องต้องบันทึกใน Correction Register (ISS-001–ISS-028) โดยทุกรายการเชื่อมโยงกับ Commit ที่ตรวจสอบได้ใน Repository +การเปลี่ยนแปลง Configuration Item ต้องพิจารณาตามเกณฑ์ใน Change Report และการแก้ไขข้อบกพร่องต้องบันทึกใน Correction Register (ISS-001–ISS-032) โดยทุกรายการเชื่อมโยงกับ Commit ที่ตรวจสอบได้ใน Repository ## ผู้จัดทำเอกสาร (Secretary) diff --git a/sdlc/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.md b/sdlc/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.md index 9854ed1..fc34803 100644 --- a/sdlc/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.md +++ b/sdlc/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.md @@ -27,7 +27,7 @@ | Actor | คำอธิบาย | การใช้งานหลัก | | --- | --- | --- | | Owner | เจ้าของบริษัท สิทธิ์สูงสุดภายในบริษัท | ตั้งค่าบริษัท จัดการผู้ใช้ และใช้งานทุกโมดูล | -| Admin | ผู้ดูแลระบบภายในบริษัท | จัดการข้อมูลหลัก ผู้ใช้ สิทธิ์ และใช้งานทุกโมดูลปฏิบัติการ | +| Admin | ผู้ดูแลระบบภายในบริษัท | จัดการข้อมูลหลักและใช้งานทุกโมดูลปฏิบัติการ (การจัดการผู้ใช้และสิทธิ์เป็นของ Owner) | | Staff | ผู้ปฏิบัติงาน | บันทึกรายการคลังสินค้า ขาย จัดซื้อ และการเงินตามสิทธิ์ | | Viewer | ผู้ใช้แบบอ่านอย่างเดียว | ดูหน้าจอและรายงานที่ได้รับสิทธิ์ | | System Scheduler | ผู้กระทำอัตโนมัติ (Node.js) | สรุปยอดสต๊อก/GL และแจ้งเตือนตามกำหนดเวลา | @@ -126,7 +126,7 @@ Wireframe แสดงโครงร่างหน้าจอหลักท | UN01.001 | Identity – Register & Onboarding | ลงทะเบียนเจ้าของบริษัท, ยืนยันอีเมล, เชิญผู้ใช้และรับคำเชิญเข้าบริษัทที่ถูกต้อง | SR03:001, SR08:001 | app/login/, UserManager.php | | UN01.002 | Identity – Login & Role Guard | เข้าสู่ระบบด้วย Username/Password, ตรวจบทบาทและสิทธิ์แอปพลิเคชันฝั่งเซิร์ฟเวอร์ก่อนเข้าทุกหน้า | SR03:001, SR04:001, SR07:005 | app/login/, UserManager.php, app/assets/utils/ | | UN01.003 | Identity – Password Recovery / OTP / Session | ลืมรหัสผ่านผ่านอีเมล, OTP, Hash รหัสผ่าน bcrypt, บล็อก Concurrent Login | SR03:001, SR01:004, SR07:003 | PasswordManager.php, PasswordResetManager.php | -| UN01.004 | Identity – User & App-Access Administration | เพิ่ม/แก้ไข/ปิดใช้ผู้ใช้, กำหนดบทบาทและสิทธิ์การเข้าถึงแอปพลิเคชัน | SR03:001, SR08:001 | app/setting/, UserManager.php | +| UN01.004 | Identity – User & App-Access Administration | Owner เชิญ/แก้ไขบทบาทและสิทธิ์แอปพลิเคชัน/ลบผู้ใช้ และส่งคำเชิญซ้ำ | SR03:001, SR08:001 | app/setting/api/engine/manage_users.php, UserManager.php | | UN02 — ตั้งค่าบริษัท (Company Settings) | | | | | | UN02.001 | Company – Profile & System Settings | แก้ไขข้อมูลบริษัท, โลโก้, ค่าตั้งค่าระบบต่อบริษัท | SR03:002 | CompanyProfileManager.php, CompanySettingManager.php | | UN02.002 | Company – SMTP & Mail Dispatch | ตั้งค่า SMTP ต่อบริษัท และส่งอีเมล Onboarding/กู้คืนรหัสผ่าน/แจ้งเตือน | SR03:002, SR06:004 | SmtpManager.php | @@ -137,7 +137,7 @@ Wireframe แสดงโครงร่างหน้าจอหลักท | UN03.004 | Master – Warehouse Layer Configuration | สลับโครงสร้างคลังแบบชั้นเดียว/หลายชั้นต่อบริษัท | SR03:003 | CompanySettingManager.php, WarehouseManager.php | | UN04 — ควบคุมสินค้าคงคลัง (Inventory Control) | | | | | | UN04.001 | ICS – Stock-in | รับสินค้าเข้าตามสินค้า จำนวน ตำแหน่ง เอกสารอ้างอิง สร้างความเคลื่อนไหวและยอดคงเหลือ | SR03:004, SR08:003 | app/ics/, StockManager.php, StockTablesTrait.php | -| UN04.002 | ICS – Stock-out | จ่ายสินค้าออกโดยตรวจสิทธิ์และยอดคงเหลือ ปฏิเสธจำนวนเกิน | SR03:004, SR09:003 | StockManager.php | +| UN04.002 | ICS – Stock-out | จ่ายสินค้าออกทั้งยอดของช่องจัดเก็บโดยตรวจสิทธิ์ ยอดคงเหลือไม่ติดลบ | SR03:004, SR09:003 | StockManager.php, OrderManager.php | | UN04.003 | ICS – Stock Transfer | โอนย้ายระหว่างตำแหน่ง ต้นทาง/ปลายทางผูกเป็นรายการเดียว | SR03:004 | StockManager.php | | UN04.004 | ICS – Lot / Serial / Expiry | บันทึกและสอบกลับ Lot, Serial Number, วันหมดอายุ | SR03:004, SR08:002 | StockSourceManager.php, md_lot | | UN04.005 | ICS – Barcode Label & Scan | พิมพ์ฉลากบาร์โค้ด SKU/ตำแหน่ง และรับค่าจากเครื่องสแกน | SR03:004 | BarcodeManager.php, location_barcode_label.php | @@ -150,36 +150,36 @@ Wireframe แสดงโครงร่างหน้าจอหลักท | UN06 — จัดซื้อ (Purchasing) | | | | | | UN06.001 | Purchasing – Purchase Request | สร้างและอนุมัติใบขอซื้อ | SR03:006 | app/po/, PurchaseRequestManager.php | | UN06.002 | Purchasing – Purchase Order | แปลงใบขอซื้อเป็นใบสั่งซื้อ และติดตามสถานะ | SR03:006, SR04:002 | PurchaseOrderManager.php | -| UN06.003 | Purchasing – Purchase Invoice | บันทึกใบแจ้งหนี้ซื้อ รับสินค้าเข้า และบันทึก GL | SR03:006, SR04:002 | PurchaseOrderManager.php, StockManager.php | +| UN06.003 | Purchasing – Purchase Invoice | รับสินค้าตามใบสั่งซื้อ และบันทึกใบแจ้งหนี้ซื้อพร้อมผ่าน GL | SR03:006, SR04:002 | PurchaseOrderManager.php, app/expense/purchase_invoice.php, PurchaseInvoicePosting.php | | UN06.004 | Purchasing – Supplier Return | คืนสินค้าผู้ขาย พร้อมปรับสต๊อก/บัญชี | SR03:006, SR04:002 | SupplierReturnManager.php | | UN07 — การเงิน (Finance) | | | | | | UN07.001 | Finance – Receipt Billing & Receipt | วางบิลรับและบันทึกใบเสรจรับเงินผูกกับใบแจ้งหนี้ | SR03:007, SR04:002 | app/finance/, ReceiptBillingManager.php, ReceiptManager.php | | UN07.002 | Finance – Payment Billing & Payment | วางบิลจ่ายและบันทึกใบสำคัญจ่ายผูกกับใบแจ้งหนี้ซื้อ | SR03:007, SR04:002 | PaymentBillingManager.php, PaymentManager.php | | UN08 — บัญชี (Accounting) | | | | | -| UN08.001 | Accounting – Chart of Accounts / Departments / Formulas | จัดการผังบัญชี แผนก และสูตรบัญชีอัตโนมัติ | SR03:008, SR08:002 | app/accounting/, PostingManager.php | -| UN08.002 | Accounting – Journal & GL Posting | บันทึกสมุดรายวันและผ่านรายการ GL แบบสมดุลภายใน Transaction | SR03:008, SR09:003 | app/journal/, PostingManager.php | +| UN08.001 | Accounting – Chart of Accounts / Departments / Formulas | จัดการผังบัญชี แผนก และสูตรบัญชีอัตโนมัติ | SR03:008, SR08:002 | app/accounting/, GlManager.php | +| UN08.002 | Accounting – Journal & GL Posting | บันทึกสมุดรายวันและผ่านรายการ GL ตามช่วงเวลาที่เปิดผ่านรายการ | SR03:008, SR09:003 | app/accounting/api/engine/save_manual_journal.php, GlManager.php, BasePosting.php, PostingWindowGuard.php | | UN09 — รายงานและแดชบอร์ด (Reports & Dashboard) | | | | | | UN09.001 | Reports – Dashboard & Aggregates | แดชบอร์ดคลังสินค้าและบัญชีจากตารางสรุปยอด | SR03:009, SR05:001, SR05:002 | app/dashboard/, app/ac_dashboard/, EtlStockManager.php | | UN09.002 | Reports – Stock Reports | ภาพรวมสต๊อก, ความเคลื่อนไหว, ความจุ, สินค้าใกล้หมด, หมดอายุ, Lot | SR03:009 | app/reports/, ReportManager.php | -| UN09.003 | Reports – Financial Reports | งบทดลอง, งบกำไรขาดทุน, งบดุล, VAT, สมุดรายวัน, ความเคลื่อนไหว GL | SR03:009 | ReportManager.php | +| UN09.003 | Reports – Financial Reports | งบทดลอง, งบกำไรขาดทุน, งบดุล, VAT, สมุดรายวัน, ความเคลื่อนไหว GL | SR03:009 | app/accounting/ (trial_balance, pl_statement, balance_sheet, vat_report, journal_listing, gl_movement) | | UN09.004 | Reports – Filter / Print / Export | กรอง ดู พิมพ์ และส่งออกรายงานตามขอบเขตสิทธิ์ | SR03:009, SR04:003 | app/reports/ | | UN10 — ควบคุมเอกสาร (Document Control) | | | | | | UN10.001 | Document – Numbering | ออกเลขที่เอกสารตามลำดับที่กำหนด (document_number_sequences) | SR03:010, SR04:005, SR08:004 | DocumentNumberManager.php | | UN10.002 | Document – Lifecycle & Status | ควบคุมสถานะเอกสาร ปฏิเสธการเปลี่ยนสถานะที่ไม่ถูกต้อง พร้อม Confirm Dialog และข้อความข้อผิดพลาด | SR03:010, SR09:001, SR09:002 | BatchActionManager.php, Manager classes | -| UN10.003 | Document – Audit Fields & History | บันทึกผู้สร้าง ผู้แก้ไข วันที่ และประวัติรายการ | SR03:010, SR09:001 | td_* tables, td_bin_log | +| UN10.003 | Document – Audit Fields & History | บันทึกผู้ทำรายการ วันเวลา และข้อมูลที่ส่งในคอลัมน์ log ของรายการ และประวัติช่องจัดเก็บ | SR03:010, SR09:001 | db_auth.php (log), td_* tables, td_bin_log | | UN11 — แจ้งเตือนและงานตามกำหนดเวลา (Notification & Scheduler) | | | | | | UN11.001 | Node – Socket.IO Notification Server | รับเหตุการณ์จาก PHP ผ่าน Endpoint ที่ป้องกันด้วย Secret และส่งต่อไปยัง Browser ของผู้ใช้ที่เกี่ยวข้อง | SR03:011, SR04:004, SR06:004, SR06:005 | nodejs/server.js | | UN11.002 | Node – Scheduler (ETL & Alerts) | สรุปยอดสต๊อก/GL, แจ้งเตือนสินค้าใกล้หมดและใบแจ้งหนี้ค้างชำระ ตามกำหนดเวลา Asia/Bangkok | SR03:011, SR05:002, SR01:006 | nodejs/scheduler.js, app/cron/ | | UN12 — ความปลอดภัยและการแยกข้อมูล (Security & Tenant Scope) | | | | | | UN12.001 | Security – Tenant Scope Guard | จำกัดทุก Query และ Action ให้อยู่ในบริษัท/คลังที่ผู้ใช้ได้รับอนุญาต | SR04:001, SR04:003, SR07:002 | StockTablesTrait.php, Manager classes | | UN12.002 | Security – Server-side Validation | ตรวจสอบข้อมูลนำเข้า, Prepared Statements, Escape Output ป้องกัน SQLi/XSS | SR07:002, SR07:004 | Manager classes, app/assets/utils/ | -| UN12.003 | Security – Operation Lock & Usage Guard | ล็อกช่วงเวลาผ่านรายการ และจำกัดโควตารายการต่อบริษัท | SR07:002, SR09:003 | OperationLockManager.php, UsageGuard.php | +| UN12.003 | Security – Posting Window & Usage Guard | ปฏิเสธการผ่านรายการนอกช่วงเวลาที่เปิด และล็อกแดชบอร์ด/รายงานเมื่อใช้งานเกินแพ็กเกจ | SR07:002, SR09:003 | PostingWindowGuard.php, UsageGuard.php | | UN12.004 | Security – TLS & Secret Configuration | ค่าตั้งค่า TLS, NODE_EMIT_SECRET และ Secrets ที่สร้างตอนติดตั้ง | SR07:001, SR01:005 | docker/php/config.php.template, .env | | UN13 — ติดตั้งและสำรองข้อมูล (Deployment & Backup) | | | | | | UN13.001 | Deploy – setup.php Schema Installer | สร้างฐานข้อมูล wms/wms2 และตารางทั้งหมดในขั้นตอนเดียว | SR01:003, SR08:005, SR06:001 | setup.php, docker/mariadb/init-wms2.sql | -| UN13.002 | Deploy – Docker Compose Stack | Container php-apache, mariadb, node/pm2 พร้อม Entrypoint สร้าง config.php | SR02:005, SR01:003 | docker-compose.yml, docker/ | +| UN13.002 | Deploy – Docker Compose Stack | Service db, php, node พร้อม Entrypoint สร้าง config.php | SR02:005, SR01:003 | docker-compose.yml, docker/ | | UN13.003 | Deploy – .env Generator | สร้าง .env และความลับอัตโนมัติ ไม่เก็บใน Git | SR01:005 | docker/init-env.sh, .env.example | -| UN13.004 | Deploy – Backup & Restore | สำรอง Git 2 Remote, mysqldump รายวัน, ขั้นตอนกู้คืน | SR01:003 | Product Operation Guide, backup remote | +| UN13.004 | Deploy – Backup & Restore | สำรอง Git 2 Remote, สำรองฐานข้อมูลด้วย mysqldump และขั้นตอนกู้คืน | SR01:003 | Product Operation Guide, backup remote | ## ผู้จัดทำเอกสาร (Secretary) diff --git a/sdlc/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.md b/sdlc/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.md index f1087d6..8b46371 100644 --- a/sdlc/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.md +++ b/sdlc/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690731 V1.0 NoC.md @@ -67,7 +67,7 @@ | CR06: Security Considerations | | | | | | | | CR06:001 | การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องเข้ารหัสด้วย HTTPS/TLS | SR07:001 | การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องผ่าน HTTPS/TLS | UN12.004 | Security – TLS & Secret Configuration | TC-UN12.004 | | CR06:002 | ค่าตั้งค่าและความลับของระบบต้องไม่ถูกเก็บใน Source Control และไม่เข้าถึงได้จากเว็บสาธารณะ | SR01:005 | ค่าตั้งค่าและความลับ (app/config.php, .env) ต้องถูกยกเว้นจาก Source Control และสร้างขึ้นตอนติดตั้ง | UN13.003, UN12.004 | Deploy – .env Generator / Security – TLS & Secret Configuration | TC-UN13.003, TC-UN12.004 | -| CR06:003 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | SR07:002 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | UN12.002 | Security – Server-side Validation | TC-UN12.002 | +| CR06:003 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | SR07:002 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | UN12.002, UN12.003 | Security – Server-side Validation / Security – Posting Window & Usage Guard | TC-UN12.002, TC-UN12.003 | | CR06:004 | ระบบต้องจำกัดสิทธิ์การเข้าถึงตามบทบาท (Role-based Access Control) ทั้งใน UI และฝั่งเซิร์ฟเวอร์ | SR07:005 | RBAC (Owner/Admin/Staff/Viewer) ต้องบังคับใช้ที่ฝั่งเซิร์ฟเวอร์ ไม่ใช่เพียงการซ่อนเมนู | UN01.002 | Identity – Login & Role Guard | TC-UN01.002 | | CR06:005 | ระบบต้องป้องกัน SQL Injection และ Cross-Site Scripting | SR07:004 | ระบบต้องป้องกัน SQL Injection และ Cross-Site Scripting ทั้งด้านรับข้อมูลและแสดงผล | UN12.002 | Security – Server-side Validation | TC-UN12.002 | | CR06:006 | ระบบต้องบล็อกการเข้าสู่ระบบซ้ำซ้อน (Concurrent Login) ของบัญชีเดียวกัน | SR07:003 | ระบบต้องอนุญาต Session ที่ใช้งานอยู่เพียงหนึ่งต่อบัญชี (บล็อก Concurrent Login) | UN01.003 | Identity – Password Recovery / OTP / Session | TC-UN01.003 | diff --git a/sdlc/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.md b/sdlc/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.md index 5ea9ba7..3e6bb6b 100644 --- a/sdlc/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.md +++ b/sdlc/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.md @@ -65,7 +65,7 @@ | แจ้งเตือนและงานตามกำหนดเวลา (Notification & Scheduler) | UN11.002 | Node – Scheduler (ETL & Alerts) | พัฒนาแล้ว | | ความปลอดภัยและการแยกข้อมูล (Security & Tenant Scope) | UN12.001 | Security – Tenant Scope Guard | พัฒนาแล้ว | | ความปลอดภัยและการแยกข้อมูล (Security & Tenant Scope) | UN12.002 | Security – Server-side Validation | พัฒนาแล้ว | -| ความปลอดภัยและการแยกข้อมูล (Security & Tenant Scope) | UN12.003 | Security – Operation Lock & Usage Guard | พัฒนาแล้ว | +| ความปลอดภัยและการแยกข้อมูล (Security & Tenant Scope) | UN12.003 | Security – Posting Window & Usage Guard | พัฒนาแล้ว | | ความปลอดภัยและการแยกข้อมูล (Security & Tenant Scope) | UN12.004 | Security – TLS & Secret Configuration | พัฒนาแล้ว | | ติดตั้งและสำรองข้อมูล (Deployment & Backup) | UN13.001 | Deploy – setup.php Schema Installer | พัฒนาแล้ว | | ติดตั้งและสำรองข้อมูล (Deployment & Backup) | UN13.002 | Deploy – Docker Compose Stack | พัฒนาแล้ว | diff --git a/sdlc/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.md b/sdlc/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.md index 9b7fbee..8d137ed 100644 --- a/sdlc/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.md +++ b/sdlc/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.md @@ -31,7 +31,7 @@ | 1 | TC-UN01.001 | UN01.001 Identity – Register & Onboarding | ลงทะเบียนเจ้าของบริษัทใหม่ → ยืนยันอีเมล → เชิญผู้ใช้ → ผู้ใช้กดลิงก์เชิญ | สร้างบริษัท/บัญชีเจ้าของสำเร็จ ผู้ใช้ที่ถูกเชิญเข้าบริษัทที่ถูกต้อง | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server, SMTP ทดสอบ | ต้องส่งอีเมลได้จริง | - | Ready | ตามแผน 10–14 ส.ค. 69 | | 2 | TC-UN01.002 | UN01.002 Identity – Login & Role Guard | เข้าสู่ระบบด้วยบัญชี Owner/Admin/Staff/Viewer แล้วเรียกหน้าและ Action ที่ไม่ได้รับสิทธิ์ | แต่ละบทบาทเข้าถึงได้เฉพาะหน้าจอ/คำสั่งที่อนุญาต คำสั่งที่ไม่ได้รับสิทธิ์ถูกปฏิเสธฝั่งเซิร์ฟเวอร์ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | ต้องมีบัญชีทดสอบครบ 4 บทบาท | TC-UN01.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 3 | TC-UN01.003 | UN01.003 Identity – Password Recovery / OTP / Session | ขอรีเซ็ตรหัสผ่าน → กรอก OTP → ตั้งรหัสใหม่; เข้าสู่ระบบบัญชีเดิมจาก 2 อุปกรณ์ | รีเซ็ตสำเร็จโดยไม่เปิดเผยรหัสผ่านเดิม Session ที่สองถูกปฏิเสธ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server, SMTP ทดสอบ | - | TC-UN01.002 | Ready | ตามแผน 10–14 ส.ค. 69 | -| 4 | TC-UN01.004 | UN01.004 Identity – User & App-Access Administration | Admin เพิ่มผู้ใช้ เปลี่ยนบทบาท และปิดสิทธิ์แอปพลิเคชัน; Staff ลองทำรายการเดียวกัน | การเปลี่ยนแปลงของ Admin ถูกบันทึก Staff ถูกปฏิเสธ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN01.002 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 4 | TC-UN01.004 | UN01.004 Identity – User & App-Access Administration | Owner เชิญผู้ใช้ แก้ไขบทบาทและสิทธิ์แอปพลิเคชัน และลบผู้ใช้; Admin และ Staff ลองทำรายการเดียวกัน | การเปลี่ยนแปลงของ Owner ถูกบันทึก สิทธิ์แอปพลิเคชันไม่เกินสิทธิ์ของ Owner Admin และ Staff ถูกปฏิเสธ (HTTP 403) | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | บัญชี Owner, Admin, Staff ในบริษัทเดียวกัน | TC-UN01.002 | Ready | ตามแผน 10–14 ส.ค. 69 | | 5 | TC-UN02.001 | UN02.001 Company – Profile & System Settings | แก้ไขข้อมูลบริษัทและค่าตั้งค่าระบบ | ค่าใหม่ถูกบันทึกและมีผลกับบริษัทนั้นเท่านั้น | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN01.002 | Ready | ตามแผน 10–14 ส.ค. 69 | | 6 | TC-UN02.002 | UN02.002 Company – SMTP & Mail Dispatch | ตั้งค่า SMTP แล้วส่งอีเมลทดสอบ/คำเชิญ | อีเมลถูกส่งผ่าน SMTP ของบริษัทและได้รับที่ปลายทาง | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server, SMTP ทดสอบ | ต้องมีบัญชี SMTP ทดสอบ | TC-UN02.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 7 | TC-UN03.001 | UN03.001 Master – Warehouse / Storage / Bin | เพิ่ม/แก้ไข/ปิดใช้ คลังสินค้า พื้นที่ และช่องจัดเก็บ; กรอกความจุไม่ถูกต้อง | รายการถูกต้องถูกบันทึก ข้อมูลผิดถูกปฏิเสธพร้อมข้อความ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN01.002 | Ready | ตามแผน 10–14 ส.ค. 69 | @@ -39,7 +39,7 @@ | 9 | TC-UN03.003 | UN03.003 Master – Contact | เพิ่มประเภทผู้ติดต่อ ลูกค้า และผู้ขาย | ผู้ติดต่อเลือกใช้ในเอกสารขาย/ซื้อได้ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN01.002 | Ready | ตามแผน 10–14 ส.ค. 69 | | 10 | TC-UN03.004 | UN03.004 Master – Warehouse Layer Configuration | ตั้งบริษัท A เป็นคลังชั้นเดียว บริษัท B เป็นคลัง/พื้นที่/ช่อง แล้วรับสินค้าเข้า | ทั้งสองบริษัททำรายการได้ถูกต้องตามโครงสร้างของตน | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server, 2 บริษัททดสอบ | - | TC-UN03.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 11 | TC-UN04.001 | UN04.001 ICS – Stock-in | รับสินค้าเข้า ระบุสินค้า จำนวน ตำแหน่ง เอกสารอ้างอิง; กรอกจำนวนติดลบ | สร้างความเคลื่อนไหวและยอดคงเหลือถูกต้อง จำนวนติดลบถูกปฏิเสธ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN03.002 | Ready | ตามแผน 10–14 ส.ค. 69 | -| 12 | TC-UN04.002 | UN04.002 ICS – Stock-out | จ่ายสินค้าออกภายในยอดคงเหลือ และจ่ายเกินยอด | ยอดลดลงถูกต้อง การจ่ายเกินยอดถูกปฏิเสธ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN04.001 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 12 | TC-UN04.002 | UN04.002 ICS – Stock-out | จ่ายสินค้าออกจากช่องจัดเก็บที่มียอด; ยืนยันใบสั่งขายที่จำนวนเกินยอดคงเหลือ | ยอดช่องจัดเก็บลดเป็นศูนย์และบันทึกความเคลื่อนไหว ยอดไม่ติดลบ ใบสั่งขายที่เกินยอดถูกปฏิเสธพร้อมข้อความ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN04.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 13 | TC-UN04.003 | UN04.003 ICS – Stock Transfer | โอนย้ายระหว่าง 2 ตำแหน่งที่ได้รับอนุญาต | ต้นทางลด ปลายทางเพิ่ม ผูกเป็นรายการโอนเดียวและสอบกลับได้ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN04.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 14 | TC-UN04.004 | UN04.004 ICS – Lot / Serial / Expiry | รับสินค้าเข้าพร้อม Lot, Serial Number, วันหมดอายุ แล้วเปิดรายงาน Lot/หมดอายุ | ข้อมูลติดตามคงอยู่และแสดงในรายงานที่เกี่ยวข้อง | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN04.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 15 | TC-UN04.005 | UN04.005 ICS – Barcode Label & Scan | พิมพ์ฉลาก SKU/ตำแหน่ง แล้วสแกน (หรือป้อนค่า) ในหน้าจอรับเข้า | ฉลากมีรหัสที่ใช้งานได้ ค่าที่สแกนถูกยอมรับ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server, เครื่องสแกนหรือจำลอง | เครื่องพิมพ์/สแกน (ถ้ามี) | TC-UN03.002 | Ready | ตามแผน 10–14 ส.ค. 69 | @@ -56,23 +56,23 @@ | 26 | TC-UN07.002 | UN07.002 Finance – Payment Billing & Payment | วางบิลจ่ายและบันทึกใบสำคัญจ่ายกับใบแจ้งหนี้ซื้อ | ยอดค้างจ่ายลดลง เอกสารเชื่อมโยงกันและมีประวัติ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN06.003 | Ready | ตามแผน 10–14 ส.ค. 69 | | 27 | TC-UN08.001 | UN08.001 Accounting – Chart of Accounts / Departments / Formulas | เพิ่มผังบัญชี แผนก และสูตรบัญชี | โครงสร้างบัญชีถูกบันทึกและใช้กับการผ่านรายการได้ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN01.004 | Ready | ตามแผน 10–14 ส.ค. 69 | | 28 | TC-UN08.002 | UN08.002 Accounting – Journal & GL Posting | บันทึกสมุดรายวันแบบสมดุลและแบบไม่สมดุล; จำลองความล้มเหลวระหว่างผ่านรายการ | รายการสมดุลถูกผ่าน GL รายการไม่สมดุลถูกปฏิเสธ ความล้มเหลวถูก Rollback ทั้งชุด | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | ต้องจำลองความล้มเหลวบน Testing Server | TC-UN08.001 | Ready | ตามแผน 10–14 ส.ค. 69 | -| 29 | TC-UN09.001 | UN09.001 Reports – Dashboard & Aggregates | เปิดแดชบอร์ดคลังสินค้าและบัญชีหลังรันงานสรุปยอด | ตัวเลขตรงกับตารางสรุปยอดและแสดงผลภายในเวลาที่ใช้งานได้ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN11.002 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 29 | TC-UN09.001 | UN09.001 Reports – Dashboard & Aggregates | รันงานสรุปยอดแล้วเปิดแดชบอร์ดคลังสินค้าและบัญชี | ตัวเลขตรงกับตาราง etl_stock_summary และ etl_gl_summary และหน้าแดชบอร์ดแสดงผลภายใน 3 วินาที | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN11.002 | Ready | ตามแผน 10–14 ส.ค. 69 | | 30 | TC-UN09.002 | UN09.002 Reports – Stock Reports | เปิดรายงานภาพรวมสต๊อก ความเคลื่อนไหว ความจุ สินค้าใกล้หมด หมดอายุ และ Lot พร้อมตัวกรอง | รายงานแสดงข้อมูลที่ได้รับสิทธิ์ตามตัวกรอง | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN04.001–TC-UN04.004 | Ready | ตามแผน 10–14 ส.ค. 69 | -| 31 | TC-UN09.003 | UN09.003 Reports – Financial Reports | เปิดงบทดลอง งบกำไรขาดทุน งบดุล VAT สมุดรายวัน และความเคลื่อนไหว GL | ยอดรวมสอดคล้องกันในงวดที่เลือก | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN08.002 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 31 | TC-UN09.003 | UN09.003 Reports – Financial Reports | เปิดงบทดลอง งบกำไรขาดทุน งบดุล VAT สมุดรายวัน และความเคลื่อนไหว GL ของงวดเดียวกัน | งบทดลองเดบิตเท่ากับเครดิต สินทรัพย์เท่ากับหนี้สินรวมส่วนของเจ้าของ และยอดในรายงานตรงกับสมุดรายวัน | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN08.002 | Ready | ตามแผน 10–14 ส.ค. 69 | | 32 | TC-UN09.004 | UN09.004 Reports – Filter / Print / Export | กรอง ดู พิมพ์ และส่งออกรายงาน | ผลลัพธ์ตรงกับขอบเขตและตัวกรองที่เลือก | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN09.002 | Ready | ตามแผน 10–14 ส.ค. 69 | | 33 | TC-UN10.001 | UN10.001 Document – Numbering | สร้างเอกสารควบคุมหลายฉบับติดต่อกัน | เลขที่เอกสารเรียงตามลำดับที่ตั้งค่า ไม่ซ้ำ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN05.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 34 | TC-UN10.002 | UN10.002 Document – Lifecycle & Status | พยายามเปลี่ยนสถานะเอกสารข้ามขั้น; ลบเอกสารควบคุม | การเปลี่ยนสถานะที่ไม่ถูกต้องถูกปฏิเสธพร้อมข้อความ การลบต้องยืนยันก่อน | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN10.001 | Ready | ตามแผน 10–14 ส.ค. 69 | -| 35 | TC-UN10.003 | UN10.003 Document – Audit Fields & History | สร้างแล้วแก้ไขรายการ แล้วเปิดดูประวัติ | ผู้สร้าง ผู้แก้ไข วันที่ และสถานะถูกบันทึกครบ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN03.002 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 35 | TC-UN10.003 | UN10.003 Document – Audit Fields & History | สร้างแล้วแก้ไขรายการ แล้วเปิดดูประวัติรายการ | คอลัมน์ log บันทึกผู้ทำรายการ วันเวลา และข้อมูลที่ส่งครบทุกครั้ง | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN03.002 | Ready | ตามแผน 10–14 ส.ค. 69 | | 36 | TC-UN11.001 | UN11.001 Node – Socket.IO Notification Server | เปลี่ยนสถานะเอกสารที่ต้องแจ้งเตือน; เรียก Endpoint แจ้งเตือนโดยไม่มี Secret | ผู้ใช้ที่เกี่ยวข้องได้รับแจ้งเตือน Real-time เท่านั้น การเรียกโดยไม่มี Secret ถูกปฏิเสธ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server, Node.js + pm2, Internal Testing Server | บริการ Node.js ทำงานอยู่ | TC-UN01.002 | Ready | ตามแผน 10–14 ส.ค. 69 | -| 37 | TC-UN11.002 | UN11.002 Node – Scheduler (ETL & Alerts) | รันงานสรุปยอดสต๊อก/GL และแจ้งเตือนสินค้าใกล้หมด/ใบแจ้งหนี้ค้างชำระ; ตรวจเวลาบันทึกเทียบ Asia/Bangkok | งานเสร็จโดยไม่ซ้ำ ผลลัพธ์อยู่ในขอบเขตสิทธิ์ เวลาถูกต้องตามเขตเวลา | Node.js + pm2, Internal Testing Server | Scheduler ทำงานอยู่ | TC-UN04.001, TC-UN07.001 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 37 | TC-UN11.002 | UN11.002 Node – Scheduler (ETL & Alerts) | รันงานสรุปยอดสต๊อก/GL และแจ้งเตือนสินค้าใกล้หมด/ใบแจ้งหนี้ค้างชำระสองรอบติดกัน; ตรวจเวลาบันทึกเทียบ Asia/Bangkok | แถวสรุปยอดของงวดเดียวกันไม่เพิ่มซ้ำในรอบที่สอง แจ้งเตือนส่งเฉพาะบริษัทเจ้าของข้อมูล เวลาตรงกับ Asia/Bangkok | Node.js + pm2, Internal Testing Server | Scheduler ทำงานอยู่ | TC-UN04.001, TC-UN07.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 38 | TC-UN12.001 | UN12.001 Security – Tenant Scope Guard | ผู้ใช้บริษัท A เรียกข้อมูล/รายการของบริษัท B และคลังที่ไม่ได้รับสิทธิ์ ทั้งผ่าน UI และ URL/ API โดยตรง | ถูกปฏิเสธทุกช่องทาง ไม่มีข้อมูลรั่วไหลหรือถูกแก้ไข | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server, 2 บริษัททดสอบ | - | TC-UN01.002, TC-UN03.001 | Ready | ตามแผน 10–14 ส.ค. 69 | | 39 | TC-UN12.002 | UN12.002 Security – Server-side Validation | ส่งข้อมูลนำเข้าที่มี SQL/Script และค่าที่ไม่ถูกต้องไปยัง Action ฝั่งเซิร์ฟเวอร์ | ถูกปฏิเสธหรือ Escape โดยไม่มีข้อมูลเปลี่ยนแปลงหรือ Script ทำงาน | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server, เครื่องมือทดสอบ API | - | TC-UN01.002 | Ready | ตามแผน 10–14 ส.ค. 69 | -| 40 | TC-UN12.003 | UN12.003 Security – Operation Lock & Usage Guard | ผ่านรายการในงวดที่ล็อก; ทำรายการเกินโควตาบริษัท | รายการถูกปฏิเสธพร้อมข้อความ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | - | TC-UN08.002 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 40 | TC-UN12.003 | UN12.003 Security – Posting Window & Usage Guard | ผ่านรายการลงวันที่นอกช่วงเวลาที่เปิด; ใช้งานเกินจำนวนรายการของแพ็กเกจแล้วเปิดแดชบอร์ด/รายงาน | การผ่านรายการนอกช่วงถูกปฏิเสธพร้อมข้อความ แดชบอร์ด/รายงานถูกล็อก (HTTP 402) พร้อมข้อความให้ปรับแพ็กเกจ | Web Browser (Chrome/Edge/Firefox), PHP 8, MariaDB, Internal Testing Server | ตั้งช่วงเวลาผ่านรายการและแพ็กเกจทดสอบ | TC-UN08.002 | Ready | ตามแผน 10–14 ส.ค. 69 | | 41 | TC-UN12.004 | UN12.004 Security – TLS & Secret Configuration | ตรวจ Repository และสภาพแวดล้อมที่ติดตั้งว่ามีความลับหรือไฟล์ตั้งค่าเปิดเผยหรือไม่; เรียกผ่าน HTTPS | ไม่พบความลับใน Git หรือเข้าถึงได้จากเว็บ การเชื่อมต่อผ่าน TLS | Repository, Deployed Environment | - | - | Ready | ตามแผน 10–14 ส.ค. 69 | | 42 | TC-UN13.001 | UN13.001 Deploy – setup.php Schema Installer | ติดตั้งบนเครื่องใหม่ด้วย setup.php | ฐานข้อมูลและตารางครบตาม SR08 โดยไม่แก้ Schema ด้วยมือ | Fresh Linux Server, PHP 8, MariaDB | ต้องใช้เครื่องว่าง | - | Ready | ตามแผน 10–14 ส.ค. 69 | -| 43 | TC-UN13.002 | UN13.002 Deploy – Docker Compose Stack | รัน docker compose up -d --build | Container php-apache, mariadb, node ทำงานและเข้าใช้ระบบได้ | Docker Host | - | TC-UN13.003 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 43 | TC-UN13.002 | UN13.002 Deploy – Docker Compose Stack | รัน docker compose up -d --build | Service db, php, node ทำงานและเข้าใช้ระบบได้ | Docker Host | - | TC-UN13.003 | Ready | ตามแผน 10–14 ส.ค. 69 | | 44 | TC-UN13.003 | UN13.003 Deploy – .env Generator | รัน docker/init-env.sh โดยเว้นค่าความลับว่าง | .env ถูกสร้างพร้อมความลับสุ่ม และไม่ถูก Git ติดตาม | Docker Host | - | - | Ready | ตามแผน 10–14 ส.ค. 69 | -| 45 | TC-UN13.004 | UN13.004 Deploy – Backup & Restore | สำรองฐานข้อมูล กู้คืนสู่สภาพแวดล้อมทดสอบ และ Clone จาก Backup Remote | ข้อมูลและ Source Code กู้คืนได้ครบตามขั้นตอนในคู่มือ | Testing Server, Backup Remote | ตาม Product Operation Guide | TC-UN13.001 | Ready | ตามแผน 10–14 ส.ค. 69 | +| 45 | TC-UN13.004 | UN13.004 Deploy – Backup & Restore | สำรองฐานข้อมูลด้วย mysqldump กู้คืนสู่สภาพแวดล้อมทดสอบ และ Clone จาก Backup Remote | ข้อมูลและ Source Code กู้คืนได้ครบตามขั้นตอนในคู่มือ | Testing Server, Backup Remote | ตาม Product Operation Guide | TC-UN13.001 | Ready | ตามแผน 10–14 ส.ค. 69 | ## Summary diff --git a/sdlc/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.md b/sdlc/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.md index 2a16c7d..d48e625 100644 --- a/sdlc/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.md +++ b/sdlc/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.md @@ -23,90 +23,67 @@ | 2 | Non-Functional Test | ประสิทธิภาพ, ความปลอดภัย (สิทธิ์/TLS/การเข้ารหัสรหัสผ่าน), การแยกข้อมูล, การสำรองและกู้คืน | | 3 | Environment | Internal Testing Server (PHP 8, MariaDB, Node.js) | | 4 | ช่วงเวลา | รอบทดสอบระบบ 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 5 | Baseline ที่ใช้ทดสอบ | สถานะ Repository ที่ใกล้เคียงที่สุด Commit `dd48a8b` | +| 5 | Build ที่ใช้ทดสอบ | Commit `b2c4374` บน Branch main (การแก้ไขโค้ดล่าสุดก่อนรอบทดสอบ) | ## สรุปผลการทดสอบ | รายการ | จำนวน | | --- | ---: | | Test Case ที่กำหนดทั้งหมด | 45 | -| ดำเนินการทดสอบ | 45 | -| ผ่าน (Passed) | 45 | -| ไม่ผ่าน (Failed) | 0 | -| ค้าง (Blocked / Pending) | 0 | +| ดำเนินการทดสอบ | 43 | +| ผ่าน (Passed) | 38 | +| ไม่ผ่าน (Failed) | 5 | +| ยังไม่ได้ทดสอบ (ฟังก์ชันส่งมอบหลังรอบทดสอบ) | 2 | ## Verification Items -| No | Test Case | Software Testing | Customer Req. ID | Customer Req. Topic | Status | Test Date | -| :---: | :---: | --- | :---: | --- | :---: | :---: | -| 1 | TC-UN01.001 | ตรวจสอบ Identity – Register & Onboarding | CR01:001 | ระบบต้องรองรับการลงทะเบียนเจ้าของบริษัทและการเชิญผู้ใช้งานเข้าร่วมบริษัท (Onboarding) | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 2 | TC-UN01.002 | ตรวจสอบ Identity – Login & Role Guard | CR01:002 | ระบบต้องยืนยันตัวตนผู้ใช้และบังคับสิทธิ์ตามบทบาท Owner, Admin, Staff และ Viewer | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 3 | TC-UN01.003 | ตรวจสอบ Identity – Password Recovery / OTP / Session | CR01:003 | ระบบต้องรองรับการกู้คืนรหัสผ่าน การควบคุม Session และการยืนยัน OTP ตามที่กำหนด | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 4 | TC-UN01.004, TC-UN02.001, TC-UN02.002 | ตรวจสอบ Identity – User & App-Access Administration / Company – Profile & System Settings / Company – SMTP & Mail Dispatch | CR01:004 | ระบบต้องให้ผู้ดูแลจัดการข้อมูลบริษัท, SMTP, การตั้งค่าระบบ, ผู้ใช้งาน และสิทธิ์การเข้าถึงแอปพลิเคชัน | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 5 | TC-UN03.001, TC-UN03.002, TC-UN03.003 | ตรวจสอบ Master – Warehouse / Storage / Bin / Master – Product & Category / Master – Contact | CR01:005 | ระบบต้องจัดการข้อมูลคลังสินค้า, พื้นที่/ช่องจัดเก็บ, หมวดสินค้า, สินค้า, ประเภทผู้ติดต่อ และผู้ติดต่อ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 6 | TC-UN03.004 | ตรวจสอบ Master – Warehouse Layer Configuration | CR01:006 | ระบบต้องรองรับโครงสร้างตำแหน่งจัดเก็บทั้งแบบคลังเดียวและแบบหลายชั้น (คลัง/พื้นที่/ช่อง) | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 7 | TC-UN04.001 | ตรวจสอบ ICS – Stock-in | CR01:007 | ระบบต้องบันทึกการรับสินค้าเข้า (Stock-in) ระบุสินค้า จำนวน ตำแหน่ง เอกสารอ้างอิง และข้อมูลติดตาม | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 8 | TC-UN04.002 | ตรวจสอบ ICS – Stock-out | CR01:008 | ระบบต้องบันทึกการจ่ายสินค้าออก (Stock-out) โดยตรวจสอบสิทธิ์และยอดคงเหลือก่อนจ่าย | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 9 | TC-UN04.003 | ตรวจสอบ ICS – Stock Transfer | CR01:009 | ระบบต้องโอนย้ายสินค้าระหว่างตำแหน่งจัดเก็บที่ได้รับอนุญาตโดยยอดต้นทาง/ปลายทางสมดุลกัน | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 10 | TC-UN04.004 | ตรวจสอบ ICS – Lot / Serial / Expiry | CR01:010 | ระบบต้องติดตาม Lot, Serial Number และวันหมดอายุของสินค้าที่เกี่ยวข้อง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 11 | TC-UN09.002 | ตรวจสอบ Reports – Stock Reports | CR01:011 | ระบบต้องแสดงภาพรวมสต๊อก, ประวัติความเคลื่อนไหว, ความจุ/การใช้พื้นที่, สินค้าใกล้หมด, สินค้าหมดอายุ และข้อมูล Lot | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 12 | TC-UN04.005 | ตรวจสอบ ICS – Barcode Label & Scan | CR01:012 | ระบบต้องพิมพ์บาร์โค้ดสินค้า (SKU) และตำแหน่งจัดเก็บ และรองรับการสแกนในหน้าจอที่กำหนด | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 13 | TC-UN05.001, TC-UN05.002, TC-UN05.003, TC-UN05.004 | ตรวจสอบ Sales – Quotation / Sales – Sales Order / Sales – Invoice / Sales – Return / Credit Note | CR01:013 | ระบบต้องสร้างและจัดการใบเสนอราคา, ใบสั่งขาย, ใบแจ้งหนี้, ใบรับคืน และใบลดหนี้ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 14 | TC-UN06.001, TC-UN06.002, TC-UN06.003, TC-UN06.004 | ตรวจสอบ Purchasing – Purchase Request / Purchasing – Purchase Order / Purchasing – Purchase Invoice / Purchasing – Supplier Return | CR01:014 | ระบบต้องสร้างและจัดการใบขอซื้อ, ใบสั่งซื้อ, ใบแจ้งหนี้ซื้อ และใบคืนสินค้าผู้ขาย | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 15 | TC-UN07.001, TC-UN07.002 | ตรวจสอบ Finance – Receipt Billing & Receipt / Finance – Payment Billing & Payment | CR01:015 | ระบบต้องสร้างและจัดการใบวางบิลรับ, ใบเสร็จรับเงิน, ใบวางบิลจ่าย และใบสำคัญจ่าย | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 16 | TC-UN08.001, TC-UN08.002 | ตรวจสอบ Accounting – Chart of Accounts / Departments / Formulas / Accounting – Journal & GL Posting | CR01:016 | ระบบต้องจัดการผังบัญชี, แผนก, สูตรบัญชี, สมุดรายวัน และบัญชีแยกประเภท | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 17 | TC-UN09.003 | ตรวจสอบ Reports – Financial Reports | CR01:017 | ระบบต้องจัดทำรายงานงบทดลอง, งบกำไรขาดทุน, งบดุล, ภาษีมูลค่าเพิ่ม, สมุดรายวัน และความเคลื่อนไหว GL | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 18 | TC-UN10.001, TC-UN10.002 | ตรวจสอบ Document – Numbering / Document – Lifecycle & Status | CR01:018 | ระบบต้องออกเลขที่เอกสารอัตโนมัติและควบคุมสถานะ/วงจรชีวิตของเอกสาร | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 19 | TC-UN04.006 | ตรวจสอบ ICS – File Attachment | CR01:019 | ระบบต้องรองรับการแนบไฟล์ที่อนุญาตกับรายการที่กำหนด | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 20 | TC-UN09.004 | ตรวจสอบ Reports – Filter / Print / Export | CR01:020 | ระบบต้องให้ผู้ใช้กรอง ดู พิมพ์ และส่งออกรายงานปฏิบัติการและรายงานผู้บริหาร | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 21 | TC-UN11.001 | ตรวจสอบ Node – Socket.IO Notification Server | CR01:021 | ระบบต้องแจ้งเตือนผู้ใช้ที่เกี่ยวข้องเมื่อสถานะเอกสารเปลี่ยนหรือมีเหตุการณ์ปฏิบัติการ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 22 | TC-UN11.002 | ตรวจสอบ Node – Scheduler (ETL & Alerts) | CR01:022 | ระบบต้องสรุปยอดสต๊อก/GL และแจ้งเตือนสินค้าใกล้หมดและใบแจ้งหนี้ค้างชำระตามกำหนดเวลา | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 23 | TC-UN10.003 | ตรวจสอบ Document – Audit Fields & History | CR01:023 | ระบบต้องเก็บผู้สร้าง ผู้แก้ไข สถานะ และประวัติรายการเพื่อการตรวจสอบ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 24 | TC-UN12.001 | ตรวจสอบ Security – Tenant Scope Guard | CR01:024 | ระบบต้องจำกัดข้อมูลบริษัทและคลังสินค้าให้เฉพาะผู้ใช้ที่ได้รับอนุญาตในบริบทปัจจุบัน | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 25 | TC-UN09.001 | ตรวจสอบ Reports – Dashboard & Aggregates | CR02:001 | ระบบต้องตอบสนองงานประจำวัน (เปิดหน้าจอ, ค้นหา, สร้างเอกสาร) ภายในเวลาที่ใช้งานได้จริงบนสภาพแวดล้อมที่ตกลง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 26 | TC-UN09.001, TC-UN11.002 | ตรวจสอบ Reports – Dashboard & Aggregates / Node – Scheduler (ETL & Alerts) | CR02:002 | ระบบต้องมีตารางสรุปยอด (Aggregate) เพื่อให้แดชบอร์ดและรายงานแสดงผลได้โดยไม่ต้องคำนวณใหม่ทุกครั้ง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 27 | TC-UN09.001 | ตรวจสอบ Reports – Dashboard & Aggregates | CR02:003 | ระบบต้องรองรับปริมาณข้อมูลและผู้ใช้พร้อมกันในระดับที่ตกลงสำหรับสภาพแวดล้อมใช้งานจริง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 28 | TC-UN13.001 | ตรวจสอบ Deploy – setup.php Schema Installer | CR03:001 | ระบบต้องเชื่อมต่อฐานข้อมูล MySQL/MariaDB 2 ฐาน (wms สำหรับผู้ใช้/บริษัท และ wms2 สำหรับคลัง/บัญชี) | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 29 | TC-UN01.002 | ตรวจสอบ Identity – Login & Role Guard | CR03:002 | ระบบต้องใช้งานผ่าน Web Browser มาตรฐาน (Chrome, Edge, Firefox) ได้ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 30 | TC-UN11.001 | ตรวจสอบ Node – Socket.IO Notification Server | CR03:003 | ระบบต้องส่งเหตุการณ์ไปยังบริการ Node.js ผ่าน Endpoint ภายในที่ป้องกันด้วย Secret | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 31 | TC-UN11.001 | ตรวจสอบ Node – Socket.IO Notification Server | CR03:004 | Browser ต้องเชื่อมต่อ Socket.IO Endpoint สาธารณะเพื่อรับการแจ้งเตือนแบบ Real-time | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 32 | TC-UN02.002 | ตรวจสอบ Company – SMTP & Mail Dispatch | CR03:005 | ระบบต้องส่งอีเมล Onboarding, กู้คืนรหัสผ่าน และแจ้งเตือนผ่าน SMTP ที่ตั้งค่าต่อบริษัท | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 33 | TC-UN01.002 | ตรวจสอบ Identity – Login & Role Guard | CR04:001 | ระบบต้องพัฒนาบนสถาปัตยกรรม Web-based Application | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 34 | TC-UN13.001 | ตรวจสอบ Deploy – setup.php Schema Installer | CR04:002 | ระบบต้องเก็บข้อมูลแบบ Relational Database และรักษา Referential Integrity | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 35 | TC-UN01.002 | ตรวจสอบ Identity – Login & Role Guard | CR04:003 | ระบบต้องรองรับการเข้าสู่ระบบด้วย Username/Password และกำหนดบทบาทผู้ใช้ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 36 | TC-UN13.001 | ตรวจสอบ Deploy – setup.php Schema Installer | CR04:004 | ระบบต้องทำงานบน PHP 8 ขึ้นไป, MySQL/MariaDB และ Node.js | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 37 | TC-UN01.002 | ตรวจสอบ Identity – Login & Role Guard | CR05:001 | UI ต้องเป็น Responsive ใช้งานได้ทั้งบน Desktop และอุปกรณ์หน้าคลังสินค้า (Tablet/Mobile) | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 38 | TC-UN01.002 | ตรวจสอบ Identity – Login & Role Guard | CR05:002 | เมนูและปุ่มคำสั่งต้องแสดงตามบทบาทและสิทธิ์การเข้าถึงของผู้ใช้ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 39 | TC-UN10.002 | ตรวจสอบ Document – Lifecycle & Status | CR05:003 | ระบบต้องแสดงผลการตรวจสอบข้อมูล สถานะ ความสำเร็จ และข้อผิดพลาดอย่างชัดเจน | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 40 | TC-UN10.002 | ตรวจสอบ Document – Lifecycle & Status | CR05:004 | ระบบต้องมีขั้นตอนยืนยันก่อนลบ ยกเลิก หรือทำรายการที่ย้อนกลับไม่ได้ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 41 | TC-UN04.005 | ตรวจสอบ ICS – Barcode Label & Scan | CR05:005 | ระบบต้องพิมพ์เอกสารธุรกิจและฉลากบาร์โค้ดในรูปแบบที่ใช้งานได้ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 42 | TC-UN12.004 | ตรวจสอบ Security – TLS & Secret Configuration | CR06:001 | การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องเข้ารหัสด้วย HTTPS/TLS | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 43 | TC-UN13.003, TC-UN12.004 | ตรวจสอบ Deploy – .env Generator / Security – TLS & Secret Configuration | CR06:002 | ค่าตั้งค่าและความลับของระบบต้องไม่ถูกเก็บใน Source Control และไม่เข้าถึงได้จากเว็บสาธารณะ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 44 | TC-UN12.002 | ตรวจสอบ Security – Server-side Validation | CR06:003 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 45 | TC-UN01.002 | ตรวจสอบ Identity – Login & Role Guard | CR06:004 | ระบบต้องจำกัดสิทธิ์การเข้าถึงตามบทบาท (Role-based Access Control) ทั้งใน UI และฝั่งเซิร์ฟเวอร์ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 46 | TC-UN12.002 | ตรวจสอบ Security – Server-side Validation | CR06:005 | ระบบต้องป้องกัน SQL Injection และ Cross-Site Scripting | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 47 | TC-UN01.003 | ตรวจสอบ Identity – Password Recovery / OTP / Session | CR06:006 | ระบบต้องบล็อกการเข้าสู่ระบบซ้ำซ้อน (Concurrent Login) ของบัญชีเดียวกัน | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 48 | TC-UN13.001, TC-UN13.002 | ตรวจสอบ Deploy – setup.php Schema Installer / Deploy – Docker Compose Stack | CR07:001 | ระบบต้องทำงานบน Linux Server ในรูปแบบติดตั้งเอง (LAMP) หรือ Docker Compose | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 49 | TC-UN11.002 | ตรวจสอบ Node – Scheduler (ETL & Alerts) | CR07:002 | ระบบต้องใช้เขตเวลา Asia/Bangkok อย่างสม่ำเสมอทั้งแอปพลิเคชันและงานตามกำหนดเวลา | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 50 | TC-UN01.002 | ตรวจสอบ Identity – Login & Role Guard | CR07:003 | ระบบต้องใช้งานได้บนอุปกรณ์ Desktop และอุปกรณ์พกพาผ่าน Web Browser | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 51 | TC-UN13.001 | ตรวจสอบ Deploy – setup.php Schema Installer | CR07:004 | ระบบต้องแยกข้อมูลสาธิต/ทดสอบออกจากข้อมูลใช้งานจริงได้ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 52 | TC-UN13.004 | ตรวจสอบ Deploy – Backup & Restore | CR08:001 | ระบบต้องมีการสำรองฐานข้อมูลอัตโนมัติรายวัน | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 53 | TC-UN13.004 | ตรวจสอบ Deploy – Backup & Restore | CR08:002 | ระบบต้องกู้คืนข้อมูลจากชุดสำรองได้ตามขั้นตอนที่จัดทำเป็นเอกสาร | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 54 | TC-UN12.001 | ตรวจสอบ Security – Tenant Scope Guard | CR08:004 | ระบบต้องรองรับหลายบริษัท (Multi-company) และหลายคลังสินค้าภายใต้การแยกข้อมูล | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 55 | TC-UN11.002 | ตรวจสอบ Node – Scheduler (ETL & Alerts) | CR08:005 | งานตามกำหนดเวลาต้องทำงานสำเร็จโดยไม่สร้างผลลัพธ์ซ้ำหรือเกินสิทธิ์ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 56 | TC-UN13.003 | ตรวจสอบ Deploy – .env Generator | CR09:002 | ระบบต้องมีแม่แบบค่าตั้งค่า (Configuration Template) และควบคุมเวอร์ชันด้วย Git | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 57 | TC-UN13.001 | ตรวจสอบ Deploy – setup.php Schema Installer | CR09:004 | การเปลี่ยนแปลงโครงสร้างฐานข้อมูลต้องสะท้อนใน setup.php และตาราง schema_migrations | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 58 | TC-UN13.001 | ตรวจสอบ Deploy – setup.php Schema Installer | CR10:001 | ระบบต้องติดตั้งฐานข้อมูลได้ในขั้นตอนเดียวผ่าน setup.php | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 59 | TC-UN13.002 | ตรวจสอบ Deploy – Docker Compose Stack | CR10:002 | ระบบต้องติดตั้งแบบ Container ได้ด้วยคำสั่ง docker compose up -d --build | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 60 | TC-UN13.003 | ตรวจสอบ Deploy – .env Generator | CR10:003 | ระบบต้องมีสคริปต์สร้างไฟล์ .env และค่าความลับอัตโนมัติ (docker/init-env.sh) | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 61 | TC-UN13.001, TC-UN13.002 | ตรวจสอบ Deploy – setup.php Schema Installer / Deploy – Docker Compose Stack | CR10:004 | ระบบต้องมีเอกสารขั้นตอนการติดตั้งและตั้งค่า | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 62 | TC-UN13.001 | ตรวจสอบ Deploy – setup.php Schema Installer | CR12:001 | ระบบต้องพัฒนาด้วย PHP, MariaDB และ Node.js ตามที่องค์กรอนุมัติ | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 63 | TC-UN01.003 | ตรวจสอบ Identity – Password Recovery / OTP / Session | CR12:003 | รหัสผ่านผู้ใช้ต้องเข้ารหัสด้วย bcrypt และไม่เก็บหรือบันทึกเป็นข้อความธรรมดา | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 64 | TC-UN08.002 | ตรวจสอบ Accounting – Journal & GL Posting | CR13:001 | การเปลี่ยนแปลงฐานข้อมูลที่เกี่ยวข้องกัน (เอกสาร + สต๊อก + GL) ต้องเป็น Transaction เดียวกัน | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 65 | TC-UN04.002 | ตรวจสอบ ICS – Stock-out | CR13:002 | ระบบต้องป้องกันยอดสต๊อกติดลบและความเคลื่อนไหวซ้ำซ้อน | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 66 | TC-UN13.004 | ตรวจสอบ Deploy – Backup & Restore | CR13:003 | ระบบต้องรองรับการสำรองและกู้คืน (Backup & Recovery) ทั้ง Source Code และฐานข้อมูล | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 67 | TC-UN10.002 | ตรวจสอบ Document – Lifecycle & Status | CR13:004 | ระบบต้องจัดการข้อผิดพลาดโดยแสดงข้อความที่เข้าใจได้แทน Fatal Error | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | -| 68 | TC-UN12.001, TC-UN12.002 | ตรวจสอบ Security – Tenant Scope Guard / Security – Server-side Validation | CR14:004 | ต้องไม่มีข้อบกพร่องระดับวิกฤตค้างอยู่ในด้านความปลอดภัย การแยกข้อมูล และความถูกต้องของสต๊อก/บัญชี | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| No | Test Case | Software Unit | Customer Req. ID | Actual Result | Status | Test Date | +| :---: | :---: | --- | --- | --- | :---: | :---: | +| 1 | TC-UN01.001 | Identity – Register & Onboarding | CR01:001 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 2 | TC-UN01.002 | Identity – Login & Role Guard | CR01:002, CR03:002, CR04:001, CR04:003, CR05:001, CR05:002, CR06:004, CR07:003 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 3 | TC-UN01.003 | Identity – Password Recovery / OTP / Session | CR01:003, CR06:006, CR12:003 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 4 | TC-UN01.004 | Identity – User & App-Access Administration | CR01:004 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 5 | TC-UN02.001 | Company – Profile & System Settings | CR01:004 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 6 | TC-UN02.002 | Company – SMTP & Mail Dispatch | CR01:004, CR03:005 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 7 | TC-UN03.001 | Master – Warehouse / Storage / Bin | CR01:005 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 8 | TC-UN03.002 | Master – Product & Category | CR01:005 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 9 | TC-UN03.003 | Master – Contact | CR01:005 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 10 | TC-UN03.004 | Master – Warehouse Layer Configuration | CR01:006 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 11 | TC-UN04.001 | ICS – Stock-in | CR01:007 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 12 | TC-UN04.002 | ICS – Stock-out | CR01:008, CR13:002 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 13 | TC-UN04.003 | ICS – Stock Transfer | CR01:009 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 14 | TC-UN04.004 | ICS – Lot / Serial / Expiry | CR01:010 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 15 | TC-UN04.005 | ICS – Barcode Label & Scan | CR01:012, CR05:005 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 16 | TC-UN04.006 | ICS – File Attachment | CR01:019 | อัปโหลดและตรวจชนิด/ขนาดไฟล์ถูกต้อง แต่ไฟล์แนบอยู่ใต้ app/uploads/ ที่เว็บเปิดให้เรียกโดยตรง ผู้ที่ทราบ URL เปิดไฟล์ได้โดยไม่ตรวจ Session และบริษัท | Failed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 17 | TC-UN05.001 | Sales – Quotation | CR01:013 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 18 | TC-UN05.002 | Sales – Sales Order | CR01:013 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 19 | TC-UN05.003 | Sales – Invoice | CR01:013 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 20 | TC-UN05.004 | Sales – Return / Credit Note | CR01:013 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 21 | TC-UN06.001 | Purchasing – Purchase Request | CR01:014 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 22 | TC-UN06.002 | Purchasing – Purchase Order | CR01:014 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 23 | TC-UN06.003 | Purchasing – Purchase Invoice | CR01:014 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 24 | TC-UN06.004 | Purchasing – Supplier Return | CR01:014 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 25 | TC-UN07.001 | Finance – Receipt Billing & Receipt | CR01:015 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 26 | TC-UN07.002 | Finance – Payment Billing & Payment | CR01:015 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 27 | TC-UN08.001 | Accounting – Chart of Accounts / Departments / Formulas | CR01:016 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 28 | TC-UN08.002 | Accounting – Journal & GL Posting | CR01:016, CR13:001 | สมุดรายวันที่ไม่สมดุลถูกปฏิเสธ แต่เมื่อการผ่าน GL ล้มเหลว เอกสารที่บันทึกแล้วไม่ถูก Rollback เพราะการผ่าน GL แยก Transaction จากเอกสาร | Failed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 29 | TC-UN09.001 | Reports – Dashboard & Aggregates | CR02:001, CR02:002, CR02:003 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 30 | TC-UN09.002 | Reports – Stock Reports | CR01:011 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 31 | TC-UN09.003 | Reports – Financial Reports | CR01:017 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 32 | TC-UN09.004 | Reports – Filter / Print / Export | CR01:020 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 33 | TC-UN10.001 | Document – Numbering | CR01:018 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 34 | TC-UN10.002 | Document – Lifecycle & Status | CR01:018, CR05:003, CR05:004, CR13:004 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 35 | TC-UN10.003 | Document – Audit Fields & History | CR01:023 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 36 | TC-UN11.001 | Node – Socket.IO Notification Server | CR01:021, CR03:003, CR03:004 | การเรียก Endpoint แจ้งเตือนโดยไม่มี Secret ถูกปฏิเสธ แต่ Socket.IO รับ company_id, user_id และ role จาก Browser โดยไม่ตรวจกับ Session ผู้ที่ปลอมค่าได้รับแจ้งเตือนของบริษัทอื่น | Failed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 37 | TC-UN11.002 | Node – Scheduler (ETL & Alerts) | CR01:022, CR02:002, CR07:002, CR08:005 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 38 | TC-UN12.001 | Security – Tenant Scope Guard | CR01:024, CR08:004, CR14:004 | หน้าจอและ API ปฏิเสธการเข้าถึงข้ามบริษัทถูกต้อง แต่ช่องทาง Socket.IO ยังรับการแจ้งเตือนของบริษัทอื่นได้ | Failed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 39 | TC-UN12.002 | Security – Server-side Validation | CR06:003, CR06:005, CR14:004 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 40 | TC-UN12.003 | Security – Posting Window & Usage Guard | CR06:003 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 41 | TC-UN12.004 | Security – TLS & Secret Configuration | CR06:001, CR06:002 | ไม่พบไฟล์ .env หรือรหัสผ่านใน Git แต่แม่แบบค่าตั้งค่ากำหนดกุญแจเข้ารหัสและ IV คงที่ เชื่อมต่อฐานข้อมูลด้วยผู้ใช้ root และไม่มีหลักฐานการตั้งค่า HTTPS/TLS | Failed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 42 | TC-UN13.001 | Deploy – setup.php Schema Installer | CR03:001, CR04:002, CR04:004, CR07:001, CR07:004, CR09:004, CR10:001, CR10:004, CR12:001 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | +| 43 | TC-UN13.002 | Deploy – Docker Compose Stack | CR07:001, CR10:002, CR10:004 | ชุดติดตั้ง Docker Compose ยังไม่อยู่ใน Build ที่ทดสอบ ส่งมอบภายหลังใน Task 4.7 | Not tested | - | +| 44 | TC-UN13.003 | Deploy – .env Generator | CR06:002, CR09:002, CR10:003 | สคริปต์ docker/init-env.sh ยังไม่อยู่ใน Build ที่ทดสอบ ส่งมอบภายหลังใน Task 4.7 | Not tested | - | +| 45 | TC-UN13.004 | Deploy – Backup & Restore | CR08:001, CR08:002, CR13:003 | ผลตรงตามที่คาดหวัง | Passed | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | ความต้องการที่ยืนยันด้วย Test Case มี 68 รายการ ส่วนอีก 12 รายการเป็นความต้องการด้านเอกสาร การอบรม และหลักฐานด้านคุณภาพ ซึ่งยืนยันด้วยเอกสารส่งมอบตามที่ระบุใน Traceability Record และได้รับการยืนยันจากลูกค้าใน Validation Results @@ -114,13 +91,14 @@ | No | Topic | Detail | | :---: | --- | --- | -| 1 | Test Case | ทดสอบตาม Customer Requirements ผ่านทั้งหมด 45 Test Case คิดเป็น 100% | -| 2 | Pending | ไม่พบข้อผิดพลาด (Fail) หรือรายการค้าง (Pending) ในรอบการทดสอบนี้ | -| 3 | Conclusion | ผลการทดสอบสรุปได้ว่าระบบพร้อมสำหรับ UAT และการส่งมอบ เนื่องจากผลการทดสอบผ่านครบ 100% และเป็นไปตาม Project Plan | +| 1 | Test Case | ทดสอบ 43 จาก 45 Test Case ผ่าน 38 ไม่ผ่าน 5 | +| 2 | Failed | TC-UN04.006, TC-UN08.002, TC-UN11.001, TC-UN12.001, TC-UN12.004 บันทึกเป็นข้อบกพร่องคงค้าง ISS-029, ISS-030, ISS-031, ISS-032 ใน Correction Register | +| 3 | Not tested | TC-UN13.002, TC-UN13.003 ฟังก์ชันส่งมอบหลังรอบทดสอบ (Task 4.7) ต้องทดสอบก่อนใช้งาน | +| 4 | Conclusion | ฟังก์ชันหลักผ่านการทดสอบ แต่ยังมีข้อบกพร่องด้านความปลอดภัยและความถูกต้องของข้อมูลคงค้าง ต้องแจ้งผู้รับมอบและกำหนดการแก้ไขก่อนตรวจรับ | ## หลักฐานประกอบทางอ้อม -Correction Register บันทึกการแก้ไขข้อบกพร่องที่พบระหว่างพัฒนา 28 รายการ ซึ่งได้รับการแก้ไขและตรวจสอบผลด้วย Test Case ที่เกี่ยวข้องครบทุกรายการ +Correction Register บันทึกข้อบกพร่อง 32 รายการ แก้ไขแล้ว 28 รายการ และคงค้างจากรอบทดสอบนี้ 4 รายการ ## ผู้จัดทำเอกสาร (Secretary) diff --git a/sdlc/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.md b/sdlc/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.md index b7cde6a..deff674 100644 --- a/sdlc/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.md +++ b/sdlc/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.md @@ -44,8 +44,8 @@ | :---: | --- | --- | | 1 | Source Code และ Baseline | Commit `6c39700` ควบคุมใน Repository หลักและสำรอง | | 2 | ชุดติดตั้งระบบ | Docker Compose Stack และสคริปต์ `setup.php` สำหรับสร้างฐานข้อมูล | -| 3 | ผลการทดสอบระบบ | Test Report 45 Test Case ผ่านทั้งหมด | -| 4 | ผลการทดสอบการยอมรับ | Validation Results ครบ 14 หมวด 80 รายการ ผ่านทั้งหมด | +| 3 | ผลการทดสอบระบบ | Test Report 45 Test Case ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 | +| 4 | ผลการทดสอบการยอมรับ | Validation Results 80 รายการ ผ่าน 60 ไม่ผ่าน 11 ยังไม่ได้ทดสอบ 5 รอดำเนินการ 4 | | 5 | การตรวจรับส่งมอบ | เสนอ Project Sponsor ตรวจรับตามแผนในวันที่ 24 สิงหาคม 2569 (Acceptance Report) | | 6 | คู่มือประกอบการใช้งาน | Software User Document, Product Operation Guide, Maintenance Document | diff --git a/sdlc/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.md b/sdlc/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.md index 421f970..9302eca 100644 --- a/sdlc/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.md +++ b/sdlc/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.md @@ -59,7 +59,7 @@ | ลำดับ | ขั้นตอน | รายละเอียด | | :---: | --- | --- | | 1 | ระบุส่วนประกอบที่เกี่ยวข้อง | ค้นหา Manager Class ที่รับผิดชอบจากเอกสาร Software Components ก่อนแก้ไขหน้าจอโดยตรง | -| 2 | ตรวจสอบประวัติข้อบกพร่อง | ตรวจสอบ Correction Register (28 รายการ) เพื่อไม่ให้การแก้ไขย้อนกลับผลการแก้ไขเดิม | +| 2 | ตรวจสอบประวัติข้อบกพร่อง | ตรวจสอบ Correction Register (32 รายการ) เพื่อไม่ให้การแก้ไขย้อนกลับผลการแก้ไขเดิม | | 3 | ควบคุมการเปลี่ยนแปลง | หากกระทบขอบเขตหรือ Baseline ที่ส่งมอบแล้ว ต้องจัดทำ Change Report ก่อนดำเนินการ | | 4 | ปรับปรุงฐานข้อมูล | สะท้อนการเปลี่ยนแปลงโครงสร้างใน `setup.php` และตาราง `schema_migrations` เสมอ | | 5 | ทดสอบและบันทึกผล | ทดสอบด้วย Test Case ที่เกี่ยวข้อง แล้วบันทึกผลใน Correction Register | diff --git a/sdlc/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.md b/sdlc/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.md index 81646e2..13f3b07 100644 --- a/sdlc/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.md +++ b/sdlc/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.md @@ -6,7 +6,7 @@ | Project Name | โครงการพัฒนาระบบบริหารจัดการคลังสินค้า (BRN WMS) บริษัท บี.อาร์.เอ็น เอ็นเตอร์ไพรส์ จำกัด | | Project Code | 200-WMS-26-001-00 | | Title | บันทึกการตรวจสอบตามข้อกำหนดของมาตรฐาน | -| รอบตรวจสอบ | รอบที่ 4 (17 สิงหาคม 2569) | หัวข้อ | User Acceptance Test (UAT) และตรวจสอบเอกสารส่งมอบทั้งหมด | +| รอบตรวจสอบ | รอบที่ 4 (17 สิงหาคม 2569) | หัวข้อ | ทบทวนผลการทดสอบระบบและ UAT และตรวจสอบเอกสารส่งมอบทั้งหมด | | เวลาตรวจสอบ | 09:00 – 16:00 น. | ระยะเวลา | 6 ชั่วโมง | | Organizer | คุณอภิรัชช์ สุภัทรประทีป (Project Manager) , คุณนพพงษ์ เจริญสุข (System Analyst) | | Recorder | คุณเยาวลักษณ์ บางชมภู (Document Control) | @@ -101,9 +101,9 @@ | VR04.080.003 | ใช้ถ้อยคำถูกต้องและสอดคล้องกับหน้าจอจริง | ตรวจสอบแล้วสอดคล้อง | Passed | YaB | | | VR04.080.004 | ลงชื่อผู้จัดทำและผู้อนุมัติเรียบร้อย | มีตารางลงนามครบถ้วน | Passed | YaB | | | WP 9.0 ระบบที่ผ่านการทดสอบพร้อมใช้งานจริง | | | | | | -| VR04.090.001 | ระบบติดตั้งและใช้งานได้บนสภาพแวดล้อมที่กำหนด | ติดตั้งสำเร็จและใช้งานได้ Baseline `6c39700` | Passed | ThS | | +| VR04.090.001 | ระบบติดตั้งและใช้งานได้บนสภาพแวดล้อมที่กำหนด | Build `b2c4374` ติดตั้งและใช้งานบน Internal Testing Server ได้ ชุดติดตั้ง Docker ใน Baseline `6c39700` ยังไม่ได้ทดสอบ | Failed | ThS | ทดสอบ TC-UN13.002 และ TC-UN13.003 บน Baseline ก่อนใช้งานจริง | | VR04.090.002 | Source Code จัดเก็บใน Repository พร้อมชุดสำรอง | จัดเก็บครบทั้ง Repository หลักและสำรอง | Passed | ThS | | -| VR04.090.003 | ผลการทดสอบระบบผ่านครบทุก Test Case | ผ่านครบ 45 Test Case | Passed | ThS | | +| VR04.090.003 | ผลการทดสอบระบบผ่านครบทุก Test Case | ผ่าน 38 ไม่ผ่าน 5 ยังไม่ได้ทดสอบ 2 จาก 45 Test Case | Failed | ThS | ข้อบกพร่องคงค้างบันทึกใน Correction Register ต้องมีแผนแก้ไขก่อนตรวจรับ | | WP 10.0 Product Operation Guide | | | | | | | VR04.100.001 | รายละเอียดและความถูกต้องของ Header ของเอกสาร | มีรายละเอียดครบถ้วนถูกต้อง | Passed | ThS | | | VR04.100.002 | ระบุขั้นตอนการติดตั้งและตั้งค่าครบถ้วน | มีทั้งแบบ Container และแบบ Manual | Passed | ThS | | @@ -120,11 +120,11 @@ | รายการ | จำนวน | | --- | ---: | | รายการตรวจสอบทั้งหมด | 61 | -| ผลผ่าน (Passed) | 61 | -| ผลไม่ผ่าน (Failed) | 0 | -| ประเด็นคงค้าง | 0 | +| ผลผ่าน (Passed) | 59 | +| ผลไม่ผ่าน (Failed) | 2 | +| ประเด็นคงค้าง | 2 | -รอบตรวจสอบนี้เป็นรอบสุดท้ายก่อนส่งมอบ ครอบคลุมสิ่งส่งมอบทั้งหมด 11 รายการ ผลการตรวจสอบผ่านทุกรายการ จึงเห็นควรให้ดำเนินการตรวจรับส่งมอบระบบตามที่บันทึกใน Acceptance Report +รอบตรวจสอบนี้เป็นรอบสุดท้ายก่อนส่งมอบ ครอบคลุมสิ่งส่งมอบทั้งหมด 11 รายการ ผ่าน 59 รายการ ไม่ผ่าน 2 รายการ คือผลการทดสอบระบบที่ยังมีข้อบกพร่องคงค้าง และชุดติดตั้ง Docker ที่ยังไม่ได้ทดสอบ จึงเสนอให้ผู้รับมอบพิจารณาการตรวจรับพร้อมแผนแก้ไขข้อบกพร่องคงค้าง ## ผู้จัดทำเอกสาร (Secretary) diff --git a/sdlc/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.md b/sdlc/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.md index e104d8e..a993605 100644 --- a/sdlc/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.md +++ b/sdlc/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.md @@ -24,7 +24,8 @@ | ผู้บันทึกผล | คุณปริญ งามขำ (QA/Tester) | | ช่วงเวลาทดสอบ | 10 สิงหาคม 2569 – 14 สิงหาคม 2569 | | ขอบเขตการทดสอบ | Customer Requirements ครบ 14 หมวด 80 รายการ (CR01–CR14) | -| สถานะ Repository ที่ใกล้เคียงที่สุด | Commit `dd48a8b` | +| Build ที่ใช้ทดสอบ | Commit `b2c4374` บน Branch main | +| ลำดับการทดสอบ | ทดสอบการยอมรับคู่ขนานกับการทดสอบระบบตามมติที่ประชุม 10 ส.ค. 69 ซึ่งต่างจากเกณฑ์เข้าสู่ UAT ใน Test Case and Test Procedures | ## ตารางสรุป Validation Result ตาม Customer Requirements @@ -46,15 +47,15 @@ | CR01:013 | ระบบต้องสร้างและจัดการใบเสนอราคา, ใบสั่งขาย, ใบแจ้งหนี้, ใบรับคืน และใบลดหนี้ | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN05.001, TC-UN05.002, TC-UN05.003, TC-UN05.004 | Passed | SeV | | CR01:014 | ระบบต้องสร้างและจัดการใบขอซื้อ, ใบสั่งซื้อ, ใบแจ้งหนี้ซื้อ และใบคืนสินค้าผู้ขาย | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN06.001, TC-UN06.002, TC-UN06.003, TC-UN06.004 | Passed | SeV | | CR01:015 | ระบบต้องสร้างและจัดการใบวางบิลรับ, ใบเสร็จรับเงิน, ใบวางบิลจ่าย และใบสำคัญจ่าย | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN07.001, TC-UN07.002 | Passed | SeV | -| CR01:016 | ระบบต้องจัดการผังบัญชี, แผนก, สูตรบัญชี, สมุดรายวัน และบัญชีแยกประเภท | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN08.001, TC-UN08.002 | Passed | SeV | +| CR01:016 | ระบบต้องจัดการผังบัญชี, แผนก, สูตรบัญชี, สมุดรายวัน และบัญชีแยกประเภท | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN08.001, TC-UN08.002 / ข้อบกพร่องคงค้าง ISS-030 | Failed | SeV | | CR01:017 | ระบบต้องจัดทำรายงานงบทดลอง, งบกำไรขาดทุน, งบดุล, ภาษีมูลค่าเพิ่ม, สมุดรายวัน และความเคลื่อนไหว GL | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN09.003 | Passed | SeV | | CR01:018 | ระบบต้องออกเลขที่เอกสารอัตโนมัติและควบคุมสถานะ/วงจรชีวิตของเอกสาร | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN10.001, TC-UN10.002 | Passed | SeV | -| CR01:019 | ระบบต้องรองรับการแนบไฟล์ที่อนุญาตกับรายการที่กำหนด | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN04.006 | Passed | SeV | +| CR01:019 | ระบบต้องรองรับการแนบไฟล์ที่อนุญาตกับรายการที่กำหนด | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN04.006 / ข้อบกพร่องคงค้าง ISS-029 | Failed | SeV | | CR01:020 | ระบบต้องให้ผู้ใช้กรอง ดู พิมพ์ และส่งออกรายงานปฏิบัติการและรายงานผู้บริหาร | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN09.004 | Passed | SeV | -| CR01:021 | ระบบต้องแจ้งเตือนผู้ใช้ที่เกี่ยวข้องเมื่อสถานะเอกสารเปลี่ยนหรือมีเหตุการณ์ปฏิบัติการ | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN11.001 | Passed | SeV | +| CR01:021 | ระบบต้องแจ้งเตือนผู้ใช้ที่เกี่ยวข้องเมื่อสถานะเอกสารเปลี่ยนหรือมีเหตุการณ์ปฏิบัติการ | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN11.001 / ข้อบกพร่องคงค้าง ISS-031 | Failed | SeV | | CR01:022 | ระบบต้องสรุปยอดสต๊อก/GL และแจ้งเตือนสินค้าใกล้หมดและใบแจ้งหนี้ค้างชำระตามกำหนดเวลา | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN11.002 | Passed | SeV | | CR01:023 | ระบบต้องเก็บผู้สร้าง ผู้แก้ไข สถานะ และประวัติรายการเพื่อการตรวจสอบ | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN10.003 | Passed | SeV | -| CR01:024 | ระบบต้องจำกัดข้อมูลบริษัทและคลังสินค้าให้เฉพาะผู้ใช้ที่ได้รับอนุญาตในบริบทปัจจุบัน | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN12.001 | Passed | SeV | +| CR01:024 | ระบบต้องจำกัดข้อมูลบริษัทและคลังสินค้าให้เฉพาะผู้ใช้ที่ได้รับอนุญาตในบริบทปัจจุบัน | ทดลองใช้งานตามขั้นตอนธุรกิจจริงบนระบบ | TC-UN12.001 / ข้อบกพร่องคงค้าง ISS-031 | Failed | SeV | | CR02 | **Performance Considerations** | | | | | | CR02:001 | ระบบต้องตอบสนองงานประจำวัน (เปิดหน้าจอ, ค้นหา, สร้างเอกสาร) ภายในเวลาที่ใช้งานได้จริงบนสภาพแวดล้อมที่ตกลง | ใช้งานประจำวันบนสภาพแวดล้อมจริงและสังเกตเวลาตอบสนอง | TC-UN09.001 | Passed | SeV | | CR02:002 | ระบบต้องมีตารางสรุปยอด (Aggregate) เพื่อให้แดชบอร์ดและรายงานแสดงผลได้โดยไม่ต้องคำนวณใหม่ทุกครั้ง | ใช้งานประจำวันบนสภาพแวดล้อมจริงและสังเกตเวลาตอบสนอง | TC-UN09.001, TC-UN11.002 | Passed | SeV | @@ -62,8 +63,8 @@ | CR03 | **Interface Considerations** | | | | | | CR03:001 | ระบบต้องเชื่อมต่อฐานข้อมูล MySQL/MariaDB 2 ฐาน (wms สำหรับผู้ใช้/บริษัท และ wms2 สำหรับคลัง/บัญชี) | ใช้งานผ่าน Browser ที่กำหนด รับอีเมลและการแจ้งเตือนจริง | TC-UN13.001 | Passed | SeV | | CR03:002 | ระบบต้องใช้งานผ่าน Web Browser มาตรฐาน (Chrome, Edge, Firefox) ได้ | ใช้งานผ่าน Browser ที่กำหนด รับอีเมลและการแจ้งเตือนจริง | TC-UN01.002 | Passed | SeV | -| CR03:003 | ระบบต้องส่งเหตุการณ์ไปยังบริการ Node.js ผ่าน Endpoint ภายในที่ป้องกันด้วย Secret | ใช้งานผ่าน Browser ที่กำหนด รับอีเมลและการแจ้งเตือนจริง | TC-UN11.001 | Passed | SeV | -| CR03:004 | Browser ต้องเชื่อมต่อ Socket.IO Endpoint สาธารณะเพื่อรับการแจ้งเตือนแบบ Real-time | ใช้งานผ่าน Browser ที่กำหนด รับอีเมลและการแจ้งเตือนจริง | TC-UN11.001 | Passed | SeV | +| CR03:003 | ระบบต้องส่งเหตุการณ์ไปยังบริการ Node.js ผ่าน Endpoint ภายในที่ป้องกันด้วย Secret | ใช้งานผ่าน Browser ที่กำหนด รับอีเมลและการแจ้งเตือนจริง | TC-UN11.001 / ข้อบกพร่องคงค้าง ISS-031 | Failed | SeV | +| CR03:004 | Browser ต้องเชื่อมต่อ Socket.IO Endpoint สาธารณะเพื่อรับการแจ้งเตือนแบบ Real-time | ใช้งานผ่าน Browser ที่กำหนด รับอีเมลและการแจ้งเตือนจริง | TC-UN11.001 / ข้อบกพร่องคงค้าง ISS-031 | Failed | SeV | | CR03:005 | ระบบต้องส่งอีเมล Onboarding, กู้คืนรหัสผ่าน และแจ้งเตือนผ่าน SMTP ที่ตั้งค่าต่อบริษัท | ใช้งานผ่าน Browser ที่กำหนด รับอีเมลและการแจ้งเตือนจริง | TC-UN02.002 | Passed | SeV | | CR04 | **Required System Characteristics** | | | | | | CR04:001 | ระบบต้องพัฒนาบนสถาปัตยกรรม Web-based Application | ตรวจสอบสภาพแวดล้อมที่ติดตั้งและการเข้าสู่ระบบ | TC-UN01.002 | Passed | SeV | @@ -77,45 +78,45 @@ | CR05:004 | ระบบต้องมีขั้นตอนยืนยันก่อนลบ ยกเลิก หรือทำรายการที่ย้อนกลับไม่ได้ | ทดลองใช้งานบน Desktop และ Tablet/Mobile | TC-UN10.002 | Passed | SeV | | CR05:005 | ระบบต้องพิมพ์เอกสารธุรกิจและฉลากบาร์โค้ดในรูปแบบที่ใช้งานได้ | ทดลองใช้งานบน Desktop และ Tablet/Mobile | TC-UN04.005 | Passed | SeV | | CR06 | **Security Considerations** | | | | | -| CR06:001 | การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องเข้ารหัสด้วย HTTPS/TLS | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN12.004 | Passed | SeV | -| CR06:002 | ค่าตั้งค่าและความลับของระบบต้องไม่ถูกเก็บใน Source Control และไม่เข้าถึงได้จากเว็บสาธารณะ | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN13.003, TC-UN12.004 | Passed | SeV | -| CR06:003 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN12.002 | Passed | SeV | +| CR06:001 | การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องเข้ารหัสด้วย HTTPS/TLS | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN12.004 / ข้อบกพร่องคงค้าง ISS-032 | Failed | SeV | +| CR06:002 | ค่าตั้งค่าและความลับของระบบต้องไม่ถูกเก็บใน Source Control และไม่เข้าถึงได้จากเว็บสาธารณะ | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN13.003, TC-UN12.004 / ข้อบกพร่องคงค้าง ISS-032 | Failed | SeV | +| CR06:003 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN12.002, TC-UN12.003 | Passed | SeV | | CR06:004 | ระบบต้องจำกัดสิทธิ์การเข้าถึงตามบทบาท (Role-based Access Control) ทั้งใน UI และฝั่งเซิร์ฟเวอร์ | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN01.002 | Passed | SeV | | CR06:005 | ระบบต้องป้องกัน SQL Injection และ Cross-Site Scripting | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN12.002 | Passed | SeV | | CR06:006 | ระบบต้องบล็อกการเข้าสู่ระบบซ้ำซ้อน (Concurrent Login) ของบัญชีเดียวกัน | ตรวจสอบ HTTPS การจำกัดสิทธิ์ และการเข้าสู่ระบบซ้ำซ้อน | TC-UN01.003 | Passed | SeV | | CR07 | **Environmental Considerations** | | | | | -| CR07:001 | ระบบต้องทำงานบน Linux Server ในรูปแบบติดตั้งเอง (LAMP) หรือ Docker Compose | ตรวจสอบสภาพแวดล้อมจริง เขตเวลา และการแยกข้อมูลสาธิต | TC-UN13.001, TC-UN13.002 | Passed | SeV | +| CR07:001 | ระบบต้องทำงานบน Linux Server ในรูปแบบติดตั้งเอง (LAMP) หรือ Docker Compose | ตรวจสอบสภาพแวดล้อมจริง เขตเวลา และการแยกข้อมูลสาธิต | TC-UN13.001, TC-UN13.002 | Not tested | SeV | | CR07:002 | ระบบต้องใช้เขตเวลา Asia/Bangkok อย่างสม่ำเสมอทั้งแอปพลิเคชันและงานตามกำหนดเวลา | ตรวจสอบสภาพแวดล้อมจริง เขตเวลา และการแยกข้อมูลสาธิต | TC-UN11.002 | Passed | SeV | | CR07:003 | ระบบต้องใช้งานได้บนอุปกรณ์ Desktop และอุปกรณ์พกพาผ่าน Web Browser | ตรวจสอบสภาพแวดล้อมจริง เขตเวลา และการแยกข้อมูลสาธิต | TC-UN01.002 | Passed | SeV | | CR07:004 | ระบบต้องแยกข้อมูลสาธิต/ทดสอบออกจากข้อมูลใช้งานจริงได้ | ตรวจสอบสภาพแวดล้อมจริง เขตเวลา และการแยกข้อมูลสาธิต | TC-UN13.001 | Passed | SeV | | CR08 | **Operational Considerations** | | | | | -| CR08:001 | ระบบต้องมีการสำรองฐานข้อมูลอัตโนมัติรายวัน | ตรวจสอบการสำรอง/กู้คืน การเฝ้าระวัง และการแยกข้อมูลหลายบริษัท | TC-UN13.004 | Passed | SeV | +| CR08:001 | ระบบต้องมีการสำรองฐานข้อมูลอัตโนมัติรายวัน | ตรวจสอบการสำรอง/กู้คืน การเฝ้าระวัง และการแยกข้อมูลหลายบริษัท | TC-UN13.004 / รอปิดรายการ OP-001 สำรองฐานข้อมูลอัตโนมัติ | Pending | SeV | | CR08:002 | ระบบต้องกู้คืนข้อมูลจากชุดสำรองได้ตามขั้นตอนที่จัดทำเป็นเอกสาร | ตรวจสอบการสำรอง/กู้คืน การเฝ้าระวัง และการแยกข้อมูลหลายบริษัท | TC-UN13.004 | Passed | SeV | -| CR08:003 | ระบบต้องมีการเฝ้าระวังสถานะบริการ Web, Database และ Node.js พร้อมแจ้งเตือนเมื่อขัดข้อง | ตรวจสอบการสำรอง/กู้คืน การเฝ้าระวัง และการแยกข้อมูลหลายบริษัท | Product Operation Guide (การเฝ้าระวังระบบ) | Passed | SeV | -| CR08:004 | ระบบต้องรองรับหลายบริษัท (Multi-company) และหลายคลังสินค้าภายใต้การแยกข้อมูล | ตรวจสอบการสำรอง/กู้คืน การเฝ้าระวัง และการแยกข้อมูลหลายบริษัท | TC-UN12.001 | Passed | SeV | +| CR08:003 | ระบบต้องมีการเฝ้าระวังสถานะบริการ Web, Database และ Node.js พร้อมแจ้งเตือนเมื่อขัดข้อง | ตรวจสอบการสำรอง/กู้คืน การเฝ้าระวัง และการแยกข้อมูลหลายบริษัท | Product Operation Guide (การเฝ้าระวังระบบ) / รอปิดรายการ OP-002 การเฝ้าระวังและแจ้งเตือน | Pending | SeV | +| CR08:004 | ระบบต้องรองรับหลายบริษัท (Multi-company) และหลายคลังสินค้าภายใต้การแยกข้อมูล | ตรวจสอบการสำรอง/กู้คืน การเฝ้าระวัง และการแยกข้อมูลหลายบริษัท | TC-UN12.001 / ข้อบกพร่องคงค้าง ISS-031 | Failed | SeV | | CR08:005 | งานตามกำหนดเวลาต้องทำงานสำเร็จโดยไม่สร้างผลลัพธ์ซ้ำหรือเกินสิทธิ์ | ตรวจสอบการสำรอง/กู้คืน การเฝ้าระวัง และการแยกข้อมูลหลายบริษัท | TC-UN11.002 | Passed | SeV | | CR09 | **Maintenance Considerations** | | | | | | CR09:001 | ซอฟต์แวร์ต้องมีโครงสร้างแบบโมดูล (Manager Classes / API) เพื่อให้แก้ไขได้โดยไม่กระทบส่วนอื่น | ทบทวนโครงสร้างซอฟต์แวร์และเอกสารการบำรุงรักษา | Software Design (Software Unit), Software Components | Passed | SeV | -| CR09:002 | ระบบต้องมีแม่แบบค่าตั้งค่า (Configuration Template) และควบคุมเวอร์ชันด้วย Git | ทบทวนโครงสร้างซอฟต์แวร์และเอกสารการบำรุงรักษา | TC-UN13.003 | Passed | SeV | +| CR09:002 | ระบบต้องมีแม่แบบค่าตั้งค่า (Configuration Template) และควบคุมเวอร์ชันด้วย Git | ทบทวนโครงสร้างซอฟต์แวร์และเอกสารการบำรุงรักษา | TC-UN13.003 | Not tested | SeV | | CR09:003 | ระบบต้องมีเอกสารคู่มือการบำรุงรักษาและประวัติข้อบกพร่องที่แก้ไขแล้ว | ทบทวนโครงสร้างซอฟต์แวร์และเอกสารการบำรุงรักษา | Maintenance Document, Correction Register | Passed | SeV | | CR09:004 | การเปลี่ยนแปลงโครงสร้างฐานข้อมูลต้องสะท้อนใน setup.php และตาราง schema_migrations | ทบทวนโครงสร้างซอฟต์แวร์และเอกสารการบำรุงรักษา | TC-UN13.001 | Passed | SeV | | CR10 | **Installation Considerations** | | | | | | CR10:001 | ระบบต้องติดตั้งฐานข้อมูลได้ในขั้นตอนเดียวผ่าน setup.php | สาธิตการติดตั้งตามขั้นตอนในคู่มือ | TC-UN13.001 | Passed | SeV | -| CR10:002 | ระบบต้องติดตั้งแบบ Container ได้ด้วยคำสั่ง docker compose up -d --build | สาธิตการติดตั้งตามขั้นตอนในคู่มือ | TC-UN13.002 | Passed | SeV | -| CR10:003 | ระบบต้องมีสคริปต์สร้างไฟล์ .env และค่าความลับอัตโนมัติ (docker/init-env.sh) | สาธิตการติดตั้งตามขั้นตอนในคู่มือ | TC-UN13.003 | Passed | SeV | -| CR10:004 | ระบบต้องมีเอกสารขั้นตอนการติดตั้งและตั้งค่า | สาธิตการติดตั้งตามขั้นตอนในคู่มือ | TC-UN13.001, TC-UN13.002 / Product Operation Guide (ขั้นตอนติดตั้ง) | Passed | SeV | +| CR10:002 | ระบบต้องติดตั้งแบบ Container ได้ด้วยคำสั่ง docker compose up -d --build | สาธิตการติดตั้งตามขั้นตอนในคู่มือ | TC-UN13.002 | Not tested | SeV | +| CR10:003 | ระบบต้องมีสคริปต์สร้างไฟล์ .env และค่าความลับอัตโนมัติ (docker/init-env.sh) | สาธิตการติดตั้งตามขั้นตอนในคู่มือ | TC-UN13.003 | Not tested | SeV | +| CR10:004 | ระบบต้องมีเอกสารขั้นตอนการติดตั้งและตั้งค่า | สาธิตการติดตั้งตามขั้นตอนในคู่มือ | TC-UN13.001, TC-UN13.002 / Product Operation Guide (ขั้นตอนติดตั้ง) | Not tested | SeV | | CR11 | **Support Considerations** | | | | | | CR11:001 | ต้องมีคู่มือผู้ใช้งาน (Software User Document) | ทบทวนคู่มือ แผนการอบรม และช่องทางสนับสนุน | Software User Document (WP 8.0) | Passed | SeV | | CR11:002 | ต้องมีคู่มือปฏิบัติงานสำหรับผู้ดูแลระบบ (Product Operation Guide) | ทบทวนคู่มือ แผนการอบรม และช่องทางสนับสนุน | Product Operation Guide (WP 10.0) | Passed | SeV | -| CR11:003 | ต้องมีการอบรมผู้ใช้งานก่อนเปิดใช้งานจริง | ทบทวนคู่มือ แผนการอบรม และช่องทางสนับสนุน | แผนการอบรมก่อนเปิดใช้งาน (Task 5.2) | Passed | SeV | +| CR11:003 | ต้องมีการอบรมผู้ใช้งานก่อนเปิดใช้งานจริง | ทบทวนคู่มือ แผนการอบรม และช่องทางสนับสนุน | แผนการอบรมก่อนเปิดใช้งาน (Task 5.2) / รอการอบรมผู้ใช้งานตามแผน | Pending | SeV | | CR11:004 | ต้องมีช่องทางสนับสนุนและระดับการให้บริการ (SLA) หลังส่งมอบ | ทบทวนคู่มือ แผนการอบรม และช่องทางสนับสนุน | Maintenance Document (SLA) | Passed | SeV | | CR12 | **Design Constraints** | | | | | | CR12:001 | ระบบต้องพัฒนาด้วย PHP, MariaDB และ Node.js ตามที่องค์กรอนุมัติ | ตรวจสอบเทคโนโลยี การควบคุม Source Code และเอกสารตามมาตรฐาน | TC-UN13.001 | Passed | SeV | | CR12:002 | ระบบต้องควบคุม Source Code ด้วย Git โดยมี main เป็น Baseline หลัก | ตรวจสอบเทคโนโลยี การควบคุม Source Code และเอกสารตามมาตรฐาน | Software Configuration, Project Repository | Passed | SeV | | CR12:003 | รหัสผ่านผู้ใช้ต้องเข้ารหัสด้วย bcrypt และไม่เก็บหรือบันทึกเป็นข้อความธรรมดา | ตรวจสอบเทคโนโลยี การควบคุม Source Code และเอกสารตามมาตรฐาน | TC-UN01.003 | Passed | SeV | -| CR12:004 | โครงการต้องจัดทำ Work Products ตามมาตรฐาน ISO/IEC 29110 Basic Profile | ตรวจสอบเทคโนโลยี การควบคุม Source Code และเอกสารตามมาตรฐาน | Verification Results รอบที่ 1–3 | Passed | SeV | +| CR12:004 | โครงการต้องจัดทำ Work Products ตามมาตรฐาน ISO/IEC 29110 Basic Profile | ตรวจสอบเทคโนโลยี การควบคุม Source Code และเอกสารตามมาตรฐาน | Verification Results รอบที่ 1–3 / รอจัดทำ List of Evidence ตอนปิดโครงการ | Pending | SeV | | CR13 | **Safety and Reliability Considerations** | | | | | -| CR13:001 | การเปลี่ยนแปลงฐานข้อมูลที่เกี่ยวข้องกัน (เอกสาร + สต๊อก + GL) ต้องเป็น Transaction เดียวกัน | ทดลองทำรายการที่ล้มเหลวและตรวจสอบข้อความแจ้งข้อผิดพลาด | TC-UN08.002 | Passed | SeV | +| CR13:001 | การเปลี่ยนแปลงฐานข้อมูลที่เกี่ยวข้องกัน (เอกสาร + สต๊อก + GL) ต้องเป็น Transaction เดียวกัน | ทดลองทำรายการที่ล้มเหลวและตรวจสอบข้อความแจ้งข้อผิดพลาด | TC-UN08.002 / ข้อบกพร่องคงค้าง ISS-030 | Failed | SeV | | CR13:002 | ระบบต้องป้องกันยอดสต๊อกติดลบและความเคลื่อนไหวซ้ำซ้อน | ทดลองทำรายการที่ล้มเหลวและตรวจสอบข้อความแจ้งข้อผิดพลาด | TC-UN04.002 | Passed | SeV | | CR13:003 | ระบบต้องรองรับการสำรองและกู้คืน (Backup & Recovery) ทั้ง Source Code และฐานข้อมูล | ทดลองทำรายการที่ล้มเหลวและตรวจสอบข้อความแจ้งข้อผิดพลาด | TC-UN13.004 | Passed | SeV | | CR13:004 | ระบบต้องจัดการข้อผิดพลาดโดยแสดงข้อความที่เข้าใจได้แทน Fatal Error | ทดลองทำรายการที่ล้มเหลวและตรวจสอบข้อความแจ้งข้อผิดพลาด | TC-UN10.002 | Passed | SeV | @@ -123,26 +124,26 @@ | CR14:001 | ระบบต้องผ่านการทดสอบตาม Test Case ที่กำหนดก่อนส่งมอบ | ทบทวนผลการทดสอบ การสอบกลับ และผลการตรวจสอบ | Test Report | Passed | SeV | | CR14:002 | ทุกความต้องการต้องสอบกลับได้ถึงการออกแบบ ส่วนประกอบ และหลักฐานการทดสอบ | ทบทวนผลการทดสอบ การสอบกลับ และผลการตรวจสอบ | Traceability Record | Passed | SeV | | CR14:003 | ระบบต้องผ่านการทดสอบการยอมรับ (UAT) โดยตัวแทนลูกค้าบนสภาพแวดล้อมใช้งานจริง | ทบทวนผลการทดสอบ การสอบกลับ และผลการตรวจสอบ | ผลการทดสอบการยอมรับในเอกสารฉบับนี้ | Passed | SeV | -| CR14:004 | ต้องไม่มีข้อบกพร่องระดับวิกฤตค้างอยู่ในด้านความปลอดภัย การแยกข้อมูล และความถูกต้องของสต๊อก/บัญชี | ทบทวนผลการทดสอบ การสอบกลับ และผลการตรวจสอบ | TC-UN12.001, TC-UN12.002 / Test Report, Correction Register | Passed | SeV | +| CR14:004 | ต้องไม่มีข้อบกพร่องระดับวิกฤตค้างอยู่ในด้านความปลอดภัย การแยกข้อมูล และความถูกต้องของสต๊อก/บัญชี | ทบทวนผลการทดสอบ การสอบกลับ และผลการตรวจสอบ | TC-UN12.001, TC-UN12.002 / Test Report, Correction Register / ข้อบกพร่องคงค้าง ISS-031 | Failed | SeV | ## สรุปผลการทดสอบการยอมรับรายหมวด -| หมวดความต้องการ | จำนวนรายการ | ผ่าน (Passed) | ไม่ผ่าน (Failed) | -| --- | ---: | ---: | ---: | -| CR01 Feature & Functional Characteristics | 24 | 24 | 0 | -| CR02 Performance Considerations | 3 | 3 | 0 | -| CR03 Interface Considerations | 5 | 5 | 0 | -| CR04 Required System Characteristics | 4 | 4 | 0 | -| CR05 Human Engineering Considerations | 5 | 5 | 0 | -| CR06 Security Considerations | 6 | 6 | 0 | -| CR07 Environmental Considerations | 4 | 4 | 0 | -| CR08 Operational Considerations | 5 | 5 | 0 | -| CR09 Maintenance Considerations | 4 | 4 | 0 | -| CR10 Installation Considerations | 4 | 4 | 0 | -| CR11 Support Considerations | 4 | 4 | 0 | -| CR12 Design Constraints | 4 | 4 | 0 | -| CR13 Safety and Reliability Considerations | 4 | 4 | 0 | -| CR14 Quality Expectations | 4 | 4 | 0 | +| หมวดความต้องการ | จำนวนรายการ | ผ่าน (Passed) | ไม่ผ่าน (Failed) | ยังไม่ได้ทดสอบ / รอดำเนินการ | +| --- | ---: | ---: | ---: | ---: | +| CR01 Feature & Functional Characteristics | 24 | 20 | 4 | 0 | +| CR02 Performance Considerations | 3 | 3 | 0 | 0 | +| CR03 Interface Considerations | 5 | 3 | 2 | 0 | +| CR04 Required System Characteristics | 4 | 4 | 0 | 0 | +| CR05 Human Engineering Considerations | 5 | 5 | 0 | 0 | +| CR06 Security Considerations | 6 | 4 | 2 | 0 | +| CR07 Environmental Considerations | 4 | 3 | 0 | 1 | +| CR08 Operational Considerations | 5 | 2 | 1 | 2 | +| CR09 Maintenance Considerations | 4 | 3 | 0 | 1 | +| CR10 Installation Considerations | 4 | 1 | 0 | 3 | +| CR11 Support Considerations | 4 | 3 | 0 | 1 | +| CR12 Design Constraints | 4 | 3 | 0 | 1 | +| CR13 Safety and Reliability Considerations | 4 | 3 | 1 | 0 | +| CR14 Quality Expectations | 4 | 3 | 1 | 0 | ## สรุปผลการทดสอบการยอมรับ @@ -150,11 +151,12 @@ | --- | ---: | | หมวดความต้องการที่ทดสอบ | 14 | | ความต้องการที่ทดสอบทั้งหมด | 80 | -| ผ่าน (Passed) | 80 | -| ไม่ผ่าน (Failed) | 0 | -| ค้างการทดสอบ | 0 | +| ผ่าน (Passed) | 60 | +| ไม่ผ่าน (Failed) | 11 | +| ยังไม่ได้ทดสอบ (ฟังก์ชันส่งมอบหลังรอบทดสอบ) | 5 | +| รอดำเนินการตามแผน (Pending) | 4 | -ตัวแทนลูกค้าได้ทดสอบการยอมรับครบทุกความต้องการใน Customer Requirements บนสภาพแวดล้อมใช้งานจริง ผลการทดสอบผ่านทั้งหมด ไม่พบประเด็นที่ขัดขวางการเปิดใช้งาน จึงยืนยันความพร้อมของระบบและเสนอเข้าสู่การตรวจรับส่งมอบตามแผนในวันที่ 24 สิงหาคม 2569 +ตัวแทนลูกค้าทดสอบการยอมรับครบ 80 ความต้องการ ผ่าน 60 รายการ ความต้องการ 11 รายการไม่ผ่านเนื่องจากข้อบกพร่องคงค้างที่บันทึกใน Correction Register 5 รายการขึ้นกับชุดติดตั้ง Docker ที่ส่งมอบหลังรอบทดสอบ และ 4 รายการรองานปฏิบัติการตามแผน ผู้รับมอบรับทราบผลและจะพิจารณาการตรวจรับพร้อมแผนแก้ไขในวันที่ 24 สิงหาคม 2569 ## ผู้จัดทำเอกสาร (Secretary) diff --git a/sdlc/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.md b/sdlc/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.md index 79ac9d8..9788871 100644 --- a/sdlc/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.md +++ b/sdlc/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.md @@ -33,22 +33,22 @@ | CR01:013 | ระบบต้องสร้างและจัดการใบเสนอราคา, ใบสั่งขาย, ใบแจ้งหนี้, ใบรับคืน และใบลดหนี้ | SR03:005, SR04:002 | UN05.001, UN05.002, UN05.003, UN05.004 | TC-UN05.001, TC-UN05.002, TC-UN05.003, TC-UN05.004 | - | Passed | Passed | | CR01:014 | ระบบต้องสร้างและจัดการใบขอซื้อ, ใบสั่งซื้อ, ใบแจ้งหนี้ซื้อ และใบคืนสินค้าผู้ขาย | SR03:006, SR04:002 | UN06.001, UN06.002, UN06.003, UN06.004 | TC-UN06.001, TC-UN06.002, TC-UN06.003, TC-UN06.004 | - | Passed | Passed | | CR01:015 | ระบบต้องสร้างและจัดการใบวางบิลรับ, ใบเสร็จรับเงิน, ใบวางบิลจ่าย และใบสำคัญจ่าย | SR03:007, SR04:002 | UN07.001, UN07.002 | TC-UN07.001, TC-UN07.002 | - | Passed | Passed | -| CR01:016 | ระบบต้องจัดการผังบัญชี, แผนก, สูตรบัญชี, สมุดรายวัน และบัญชีแยกประเภท | SR03:008 | UN08.001, UN08.002 | TC-UN08.001, TC-UN08.002 | - | Passed | Passed | +| CR01:016 | ระบบต้องจัดการผังบัญชี, แผนก, สูตรบัญชี, สมุดรายวัน และบัญชีแยกประเภท | SR03:008 | UN08.001, UN08.002 | TC-UN08.001, TC-UN08.002 | - | Failed | Failed | | CR01:017 | ระบบต้องจัดทำรายงานงบทดลอง, งบกำไรขาดทุน, งบดุล, ภาษีมูลค่าเพิ่ม, สมุดรายวัน และความเคลื่อนไหว GL | SR03:009 | UN09.003 | TC-UN09.003 | - | Passed | Passed | | CR01:018 | ระบบต้องออกเลขที่เอกสารอัตโนมัติและควบคุมสถานะ/วงจรชีวิตของเอกสาร | SR03:010, SR04:005, SR08:004 | UN10.001, UN10.002 | TC-UN10.001, TC-UN10.002 | - | Passed | Passed | -| CR01:019 | ระบบต้องรองรับการแนบไฟล์ที่อนุญาตกับรายการที่กำหนด | SR03:004 | UN04.006 | TC-UN04.006 | - | Passed | Passed | +| CR01:019 | ระบบต้องรองรับการแนบไฟล์ที่อนุญาตกับรายการที่กำหนด | SR03:004 | UN04.006 | TC-UN04.006 | - | Failed | Failed | | CR01:020 | ระบบต้องให้ผู้ใช้กรอง ดู พิมพ์ และส่งออกรายงานปฏิบัติการและรายงานผู้บริหาร | SR03:009 | UN09.004 | TC-UN09.004 | - | Passed | Passed | -| CR01:021 | ระบบต้องแจ้งเตือนผู้ใช้ที่เกี่ยวข้องเมื่อสถานะเอกสารเปลี่ยนหรือมีเหตุการณ์ปฏิบัติการ | SR03:011, SR04:004, SR06:005 | UN11.001 | TC-UN11.001 | - | Passed | Passed | +| CR01:021 | ระบบต้องแจ้งเตือนผู้ใช้ที่เกี่ยวข้องเมื่อสถานะเอกสารเปลี่ยนหรือมีเหตุการณ์ปฏิบัติการ | SR03:011, SR04:004, SR06:005 | UN11.001 | TC-UN11.001 | - | Failed | Failed | | CR01:022 | ระบบต้องสรุปยอดสต๊อก/GL และแจ้งเตือนสินค้าใกล้หมดและใบแจ้งหนี้ค้างชำระตามกำหนดเวลา | SR03:011, SR05:002, SR08:004 | UN11.002 | TC-UN11.002 | - | Passed | Passed | | CR01:023 | ระบบต้องเก็บผู้สร้าง ผู้แก้ไข สถานะ และประวัติรายการเพื่อการตรวจสอบ | SR03:010, SR09:001 | UN10.003 | TC-UN10.003 | - | Passed | Passed | -| CR01:024 | ระบบต้องจำกัดข้อมูลบริษัทและคลังสินค้าให้เฉพาะผู้ใช้ที่ได้รับอนุญาตในบริบทปัจจุบัน | SR04:001, SR04:003, SR07:002 | UN12.001 | TC-UN12.001 | - | Passed | Passed | +| CR01:024 | ระบบต้องจำกัดข้อมูลบริษัทและคลังสินค้าให้เฉพาะผู้ใช้ที่ได้รับอนุญาตในบริบทปัจจุบัน | SR04:001, SR04:003, SR07:002 | UN12.001 | TC-UN12.001 | - | Failed | Failed | | CR02:001 | ระบบต้องตอบสนองงานประจำวัน (เปิดหน้าจอ, ค้นหา, สร้างเอกสาร) ภายในเวลาที่ใช้งานได้จริงบนสภาพแวดล้อมที่ตกลง | SR05:001 | UN09.001 | TC-UN09.001 | - | Passed | Passed | | CR02:002 | ระบบต้องมีตารางสรุปยอด (Aggregate) เพื่อให้แดชบอร์ดและรายงานแสดงผลได้โดยไม่ต้องคำนวณใหม่ทุกครั้ง | SR05:002 | UN09.001, UN11.002 | TC-UN09.001, TC-UN11.002 | - | Passed | Passed | | CR02:003 | ระบบต้องรองรับปริมาณข้อมูลและผู้ใช้พร้อมกันในระดับที่ตกลงสำหรับสภาพแวดล้อมใช้งานจริง | SR05:003 | UN09.001 | TC-UN09.001 | - | Passed | Passed | | CR03:001 | ระบบต้องเชื่อมต่อฐานข้อมูล MySQL/MariaDB 2 ฐาน (wms สำหรับผู้ใช้/บริษัท และ wms2 สำหรับคลัง/บัญชี) | SR06:001 | UN13.001 | TC-UN13.001 | - | Passed | Passed | | CR03:002 | ระบบต้องใช้งานผ่าน Web Browser มาตรฐาน (Chrome, Edge, Firefox) ได้ | SR06:002 | UN01.002 | TC-UN01.002 | - | Passed | Passed | -| CR03:003 | ระบบต้องส่งเหตุการณ์ไปยังบริการ Node.js ผ่าน Endpoint ภายในที่ป้องกันด้วย Secret | SR06:004, SR04:004 | UN11.001 | TC-UN11.001 | - | Passed | Passed | -| CR03:004 | Browser ต้องเชื่อมต่อ Socket.IO Endpoint สาธารณะเพื่อรับการแจ้งเตือนแบบ Real-time | SR06:005 | UN11.001 | TC-UN11.001 | - | Passed | Passed | +| CR03:003 | ระบบต้องส่งเหตุการณ์ไปยังบริการ Node.js ผ่าน Endpoint ภายในที่ป้องกันด้วย Secret | SR06:004, SR04:004 | UN11.001 | TC-UN11.001 | - | Failed | Failed | +| CR03:004 | Browser ต้องเชื่อมต่อ Socket.IO Endpoint สาธารณะเพื่อรับการแจ้งเตือนแบบ Real-time | SR06:005 | UN11.001 | TC-UN11.001 | - | Failed | Failed | | CR03:005 | ระบบต้องส่งอีเมล Onboarding, กู้คืนรหัสผ่าน และแจ้งเตือนผ่าน SMTP ที่ตั้งค่าต่อบริษัท | SR06:004, SR03:002 | UN02.002 | TC-UN02.002 | - | Passed | Passed | | CR04:001 | ระบบต้องพัฒนาบนสถาปัตยกรรม Web-based Application | SR02:001 | UN01.002 | TC-UN01.002 | - | Passed | Passed | | CR04:002 | ระบบต้องเก็บข้อมูลแบบ Relational Database และรักษา Referential Integrity | SR08:001, SR08:002, SR08:003 | UN13.001 | TC-UN13.001 | - | Passed | Passed | @@ -59,45 +59,45 @@ | CR05:003 | ระบบต้องแสดงผลการตรวจสอบข้อมูล สถานะ ความสำเร็จ และข้อผิดพลาดอย่างชัดเจน | SR09:002 | UN10.002 | TC-UN10.002 | - | Passed | Passed | | CR05:004 | ระบบต้องมีขั้นตอนยืนยันก่อนลบ ยกเลิก หรือทำรายการที่ย้อนกลับไม่ได้ | SR09:001 | UN10.002 | TC-UN10.002 | - | Passed | Passed | | CR05:005 | ระบบต้องพิมพ์เอกสารธุรกิจและฉลากบาร์โค้ดในรูปแบบที่ใช้งานได้ | SR03:004 | UN04.005 | TC-UN04.005 | - | Passed | Passed | -| CR06:001 | การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องเข้ารหัสด้วย HTTPS/TLS | SR07:001 | UN12.004 | TC-UN12.004 | - | Passed | Passed | -| CR06:002 | ค่าตั้งค่าและความลับของระบบต้องไม่ถูกเก็บใน Source Control และไม่เข้าถึงได้จากเว็บสาธารณะ | SR01:005 | UN13.003, UN12.004 | TC-UN13.003, TC-UN12.004 | - | Passed | Passed | -| CR06:003 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | SR07:002 | UN12.002 | TC-UN12.002 | - | Passed | Passed | +| CR06:001 | การเชื่อมต่อในสภาพแวดล้อมใช้งานจริงต้องเข้ารหัสด้วย HTTPS/TLS | SR07:001 | UN12.004 | TC-UN12.004 | - | Failed | Failed | +| CR06:002 | ค่าตั้งค่าและความลับของระบบต้องไม่ถูกเก็บใน Source Control และไม่เข้าถึงได้จากเว็บสาธารณะ | SR01:005 | UN13.003, UN12.004 | TC-UN13.003, TC-UN12.004 | - | Failed | Failed | +| CR06:003 | การทำงานฝั่งเซิร์ฟเวอร์ต้องตรวจสอบข้อมูลนำเข้า ยืนยันตัวตน ตรวจสิทธิ์ และจำกัดขอบเขตบริษัท/คลัง | SR07:002 | UN12.002, UN12.003 | TC-UN12.002, TC-UN12.003 | - | Passed | Passed | | CR06:004 | ระบบต้องจำกัดสิทธิ์การเข้าถึงตามบทบาท (Role-based Access Control) ทั้งใน UI และฝั่งเซิร์ฟเวอร์ | SR07:005 | UN01.002 | TC-UN01.002 | - | Passed | Passed | | CR06:005 | ระบบต้องป้องกัน SQL Injection และ Cross-Site Scripting | SR07:004 | UN12.002 | TC-UN12.002 | - | Passed | Passed | | CR06:006 | ระบบต้องบล็อกการเข้าสู่ระบบซ้ำซ้อน (Concurrent Login) ของบัญชีเดียวกัน | SR07:003 | UN01.003 | TC-UN01.003 | - | Passed | Passed | -| CR07:001 | ระบบต้องทำงานบน Linux Server ในรูปแบบติดตั้งเอง (LAMP) หรือ Docker Compose | SR01:003 | UN13.001, UN13.002 | TC-UN13.001, TC-UN13.002 | - | Passed | Passed | +| CR07:001 | ระบบต้องทำงานบน Linux Server ในรูปแบบติดตั้งเอง (LAMP) หรือ Docker Compose | SR01:003 | UN13.001, UN13.002 | TC-UN13.001, TC-UN13.002 | - | Not tested | Not tested | | CR07:002 | ระบบต้องใช้เขตเวลา Asia/Bangkok อย่างสม่ำเสมอทั้งแอปพลิเคชันและงานตามกำหนดเวลา | SR01:006 | UN11.002 | TC-UN11.002 | - | Passed | Passed | | CR07:003 | ระบบต้องใช้งานได้บนอุปกรณ์ Desktop และอุปกรณ์พกพาผ่าน Web Browser | SR06:003, SR02:002 | UN01.002 | TC-UN01.002 | - | Passed | Passed | | CR07:004 | ระบบต้องแยกข้อมูลสาธิต/ทดสอบออกจากข้อมูลใช้งานจริงได้ | SR01:003 | UN13.001 | TC-UN13.001 | - | Passed | Passed | -| CR08:001 | ระบบต้องมีการสำรองฐานข้อมูลอัตโนมัติรายวัน | SR01:003 | UN13.004 | TC-UN13.004 | - | Passed | Passed | +| CR08:001 | ระบบต้องมีการสำรองฐานข้อมูลอัตโนมัติรายวัน | SR01:003 | UN13.004 | TC-UN13.004 | - | Pending | Pending | | CR08:002 | ระบบต้องกู้คืนข้อมูลจากชุดสำรองได้ตามขั้นตอนที่จัดทำเป็นเอกสาร | SR01:003 | UN13.004 | TC-UN13.004 | - | Passed | Passed | -| CR08:003 | ระบบต้องมีการเฝ้าระวังสถานะบริการ Web, Database และ Node.js พร้อมแจ้งเตือนเมื่อขัดข้อง | SR05:004 | - | - | Product Operation Guide (การเฝ้าระวังระบบ) | Passed | Passed | -| CR08:004 | ระบบต้องรองรับหลายบริษัท (Multi-company) และหลายคลังสินค้าภายใต้การแยกข้อมูล | SR04:003 | UN12.001 | TC-UN12.001 | - | Passed | Passed | +| CR08:003 | ระบบต้องมีการเฝ้าระวังสถานะบริการ Web, Database และ Node.js พร้อมแจ้งเตือนเมื่อขัดข้อง | SR05:004 | - | - | Product Operation Guide (การเฝ้าระวังระบบ) | - | Pending | +| CR08:004 | ระบบต้องรองรับหลายบริษัท (Multi-company) และหลายคลังสินค้าภายใต้การแยกข้อมูล | SR04:003 | UN12.001 | TC-UN12.001 | - | Failed | Failed | | CR08:005 | งานตามกำหนดเวลาต้องทำงานสำเร็จโดยไม่สร้างผลลัพธ์ซ้ำหรือเกินสิทธิ์ | SR05:002 | UN11.002 | TC-UN11.002 | - | Passed | Passed | -| CR09:001 | ซอฟต์แวร์ต้องมีโครงสร้างแบบโมดูล (Manager Classes / API) เพื่อให้แก้ไขได้โดยไม่กระทบส่วนอื่น | SR02:003, SR02:004 | - | - | Software Design (Software Unit), Software Components | Passed | Passed | -| CR09:002 | ระบบต้องมีแม่แบบค่าตั้งค่า (Configuration Template) และควบคุมเวอร์ชันด้วย Git | SR01:005 | UN13.003 | TC-UN13.003 | - | Passed | Passed | -| CR09:003 | ระบบต้องมีเอกสารคู่มือการบำรุงรักษาและประวัติข้อบกพร่องที่แก้ไขแล้ว | SR01:001 | - | - | Maintenance Document, Correction Register | Passed | Passed | +| CR09:001 | ซอฟต์แวร์ต้องมีโครงสร้างแบบโมดูล (Manager Classes / API) เพื่อให้แก้ไขได้โดยไม่กระทบส่วนอื่น | SR02:003, SR02:004 | - | - | Software Design (Software Unit), Software Components | - | Passed | +| CR09:002 | ระบบต้องมีแม่แบบค่าตั้งค่า (Configuration Template) และควบคุมเวอร์ชันด้วย Git | SR01:005 | UN13.003 | TC-UN13.003 | - | Not tested | Not tested | +| CR09:003 | ระบบต้องมีเอกสารคู่มือการบำรุงรักษาและประวัติข้อบกพร่องที่แก้ไขแล้ว | SR01:001 | - | - | Maintenance Document, Correction Register | - | Passed | | CR09:004 | การเปลี่ยนแปลงโครงสร้างฐานข้อมูลต้องสะท้อนใน setup.php และตาราง schema_migrations | SR08:005, SR08:004 | UN13.001 | TC-UN13.001 | - | Passed | Passed | | CR10:001 | ระบบต้องติดตั้งฐานข้อมูลได้ในขั้นตอนเดียวผ่าน setup.php | SR01:003, SR08:005 | UN13.001 | TC-UN13.001 | - | Passed | Passed | -| CR10:002 | ระบบต้องติดตั้งแบบ Container ได้ด้วยคำสั่ง docker compose up -d --build | SR02:005 | UN13.002 | TC-UN13.002 | - | Passed | Passed | -| CR10:003 | ระบบต้องมีสคริปต์สร้างไฟล์ .env และค่าความลับอัตโนมัติ (docker/init-env.sh) | SR01:005 | UN13.003 | TC-UN13.003 | - | Passed | Passed | -| CR10:004 | ระบบต้องมีเอกสารขั้นตอนการติดตั้งและตั้งค่า | SR01:001 | UN13.001, UN13.002 | TC-UN13.001, TC-UN13.002 | Product Operation Guide (ขั้นตอนติดตั้ง) | Passed | Passed | -| CR11:001 | ต้องมีคู่มือผู้ใช้งาน (Software User Document) | SR01:001 | - | - | Software User Document (WP 8.0) | Passed | Passed | -| CR11:002 | ต้องมีคู่มือปฏิบัติงานสำหรับผู้ดูแลระบบ (Product Operation Guide) | SR01:001 | - | - | Product Operation Guide (WP 10.0) | Passed | Passed | -| CR11:003 | ต้องมีการอบรมผู้ใช้งานก่อนเปิดใช้งานจริง | SR01:001 | - | - | Training Report | Passed | Passed | -| CR11:004 | ต้องมีช่องทางสนับสนุนและระดับการให้บริการ (SLA) หลังส่งมอบ | SR01:001 | - | - | Maintenance Document (SLA) | Passed | Passed | +| CR10:002 | ระบบต้องติดตั้งแบบ Container ได้ด้วยคำสั่ง docker compose up -d --build | SR02:005 | UN13.002 | TC-UN13.002 | - | Not tested | Not tested | +| CR10:003 | ระบบต้องมีสคริปต์สร้างไฟล์ .env และค่าความลับอัตโนมัติ (docker/init-env.sh) | SR01:005 | UN13.003 | TC-UN13.003 | - | Not tested | Not tested | +| CR10:004 | ระบบต้องมีเอกสารขั้นตอนการติดตั้งและตั้งค่า | SR01:001 | UN13.001, UN13.002 | TC-UN13.001, TC-UN13.002 | Product Operation Guide (ขั้นตอนติดตั้ง) | Not tested | Not tested | +| CR11:001 | ต้องมีคู่มือผู้ใช้งาน (Software User Document) | SR01:001 | - | - | Software User Document (WP 8.0) | - | Passed | +| CR11:002 | ต้องมีคู่มือปฏิบัติงานสำหรับผู้ดูแลระบบ (Product Operation Guide) | SR01:001 | - | - | Product Operation Guide (WP 10.0) | - | Passed | +| CR11:003 | ต้องมีการอบรมผู้ใช้งานก่อนเปิดใช้งานจริง | SR01:001 | - | - | Training Report (ตามแผน 22 ส.ค. 69) | - | Pending | +| CR11:004 | ต้องมีช่องทางสนับสนุนและระดับการให้บริการ (SLA) หลังส่งมอบ | SR01:001 | - | - | Maintenance Document (SLA) | - | Passed | | CR12:001 | ระบบต้องพัฒนาด้วย PHP, MariaDB และ Node.js ตามที่องค์กรอนุมัติ | SR01:002 | UN13.001 | TC-UN13.001 | - | Passed | Passed | -| CR12:002 | ระบบต้องควบคุม Source Code ด้วย Git โดยมี main เป็น Baseline หลัก | SR01:001 | - | - | Software Configuration, Project Repository | Passed | Passed | +| CR12:002 | ระบบต้องควบคุม Source Code ด้วย Git โดยมี main เป็น Baseline หลัก | SR01:001 | - | - | Software Configuration, Project Repository | - | Passed | | CR12:003 | รหัสผ่านผู้ใช้ต้องเข้ารหัสด้วย bcrypt และไม่เก็บหรือบันทึกเป็นข้อความธรรมดา | SR01:004 | UN01.003 | TC-UN01.003 | - | Passed | Passed | -| CR12:004 | โครงการต้องจัดทำ Work Products ตามมาตรฐาน ISO/IEC 29110 Basic Profile | SR01:001 | - | - | List of Evidence, Verification Results | Passed | Passed | -| CR13:001 | การเปลี่ยนแปลงฐานข้อมูลที่เกี่ยวข้องกัน (เอกสาร + สต๊อก + GL) ต้องเป็น Transaction เดียวกัน | SR09:003 | UN08.002 | TC-UN08.002 | - | Passed | Passed | +| CR12:004 | โครงการต้องจัดทำ Work Products ตามมาตรฐาน ISO/IEC 29110 Basic Profile | SR01:001 | - | - | List of Evidence (ตามแผน 24 ส.ค. 69), Verification Results | - | Pending | +| CR13:001 | การเปลี่ยนแปลงฐานข้อมูลที่เกี่ยวข้องกัน (เอกสาร + สต๊อก + GL) ต้องเป็น Transaction เดียวกัน | SR09:003 | UN08.002 | TC-UN08.002 | - | Failed | Failed | | CR13:002 | ระบบต้องป้องกันยอดสต๊อกติดลบและความเคลื่อนไหวซ้ำซ้อน | SR09:003 | UN04.002 | TC-UN04.002 | - | Passed | Passed | | CR13:003 | ระบบต้องรองรับการสำรองและกู้คืน (Backup & Recovery) ทั้ง Source Code และฐานข้อมูล | SR01:003 | UN13.004 | TC-UN13.004 | - | Passed | Passed | | CR13:004 | ระบบต้องจัดการข้อผิดพลาดโดยแสดงข้อความที่เข้าใจได้แทน Fatal Error | SR09:002 | UN10.002 | TC-UN10.002 | - | Passed | Passed | -| CR14:001 | ระบบต้องผ่านการทดสอบตาม Test Case ที่กำหนดก่อนส่งมอบ | SR01:001 | - | - | Test Report | Passed | Passed | -| CR14:002 | ทุกความต้องการต้องสอบกลับได้ถึงการออกแบบ ส่วนประกอบ และหลักฐานการทดสอบ | SR01:001 | - | - | Traceability Record | Passed | Passed | -| CR14:003 | ระบบต้องผ่านการทดสอบการยอมรับ (UAT) โดยตัวแทนลูกค้าบนสภาพแวดล้อมใช้งานจริง | SR01:001 | - | - | Validation Results, Acceptance Report | Passed | Passed | -| CR14:004 | ต้องไม่มีข้อบกพร่องระดับวิกฤตค้างอยู่ในด้านความปลอดภัย การแยกข้อมูล และความถูกต้องของสต๊อก/บัญชี | SR07:002 | UN12.001, UN12.002 | TC-UN12.001, TC-UN12.002 | Test Report, Correction Register | Passed | Passed | +| CR14:001 | ระบบต้องผ่านการทดสอบตาม Test Case ที่กำหนดก่อนส่งมอบ | SR01:001 | - | - | Test Report | - | Passed | +| CR14:002 | ทุกความต้องการต้องสอบกลับได้ถึงการออกแบบ ส่วนประกอบ และหลักฐานการทดสอบ | SR01:001 | - | - | Traceability Record | - | Passed | +| CR14:003 | ระบบต้องผ่านการทดสอบการยอมรับ (UAT) โดยตัวแทนลูกค้าบนสภาพแวดล้อมใช้งานจริง | SR01:001 | - | - | Validation Results, Acceptance Report (ตามแผน 24 ส.ค. 69) | - | Passed | +| CR14:004 | ต้องไม่มีข้อบกพร่องระดับวิกฤตค้างอยู่ในด้านความปลอดภัย การแยกข้อมูล และความถูกต้องของสต๊อก/บัญชี | SR07:002 | UN12.001, UN12.002 | TC-UN12.001, TC-UN12.002 | Test Report, Correction Register | Failed | Failed | ## สรุปความครอบคลุม @@ -108,8 +108,10 @@ | เชื่อมโยงกับ Software Unit | 68 | | เชื่อมโยงกับ Test Case | 68 | | ยืนยันด้วยเอกสารส่งมอบ (ไม่มี Software Unit) | 12 | -| ผลการทดสอบหรือการตรวจสอบเอกสารผ่าน | 80 | -| ผลการทดสอบการยอมรับผ่าน | 80 | +| ผ่าน (Passed) | 60 | +| ไม่ผ่าน (Failed) — ข้อบกพร่องคงค้างใน Correction Register | 11 | +| ยังไม่ได้ทดสอบ (ชุดติดตั้ง Docker ส่งมอบหลังรอบทดสอบ) | 5 | +| รอดำเนินการตามแผน (Pending) | 4 | ## ผู้จัดทำเอกสาร (Secretary) diff --git a/sdlc/ISO29110-audit-prep.md b/sdlc/ISO29110-audit-prep.md index e5aa92a..06694ad 100644 --- a/sdlc/ISO29110-audit-prep.md +++ b/sdlc/ISO29110-audit-prep.md @@ -11,9 +11,9 @@ | How did you track progress, and what did you do when something slipped? | Progress Status Records (15 periods), Minutes of Meeting | | What risks did you identify, and were they reviewed? | Software Project Plan §9 (R1–R8); expect "show me a risk that changed during the project" | | How were changes requested, assessed and approved? | Change Report | -| How were defects recorded and closed? | Correction Register ISS-001–028, each linked to a commit and a test case | +| How were defects recorded and closed? | Correction Register: ISS-001–028 fixed, each linked to a commit and a test case; ISS-029–032 open from the system test, handed to corrective maintenance | | How is the repository controlled and backed up? | Project Repository, Project Repository (Backup), Software Configuration (`main`, baseline `6c39700`) | -| Did the customer formally accept the product? | Acceptance Report, Validation Results | +| Did the customer formally accept the product? | Acceptance Report (Accepted with conditions), Validation Results, Minutes of Meeting 24 Aug | ### Software Implementation (SI) @@ -23,7 +23,7 @@ | Pick one requirement and show its design, code, test and result | Traceability Record — most common test; rehearse 2–3 requirements end to end | | Show the design and how it maps to the code | Software Design (units UN01–UN13 with file paths) | | Who reviewed which documents, what was found, and how was it fixed? | Verification Results V0.1–V1.0 (4 rounds) | -| Show the test cases and test results, including a failure and its retest | Test Case and Test Procedures (45), Test Report, Correction Register | +| Show the test cases and test results, including a failure and its retest | Test Case and Test Procedures (45), Test Report (38 passed, 5 failed, 2 not tested), Correction Register | | What exactly was delivered, and can you rebuild it? | Software, Software Components, Product Operation Guide | | Are user, operation and maintenance documents available? | Software User Document, Product Operation Guide, Maintenance Document | @@ -32,6 +32,7 @@ | Point | What to show | What to say | |---|---|---| | No change requests in 8 months | Change Report parts 1–3; Minutes of Meeting 18 May (Rack → Bin), 10 Aug (Task 4.7 decided) and 19 Aug / 24 Aug (Task 4.7 done) | "Change control was used: 3 items were judged against the criteria and none qualified." Rehearse the advisor's test: "if we removed it, could we still deliver?" | -| All 45 test cases passed in one run | Correction Register: 28 issues found and fixed during development, each linked to a commit and a test case; Test Case and Test Procedures pass rule: defects logged and retested until they pass | "The formal run came after the defects were fixed, so a clean run is the result of that work." If git history has real failing test runs, have one ready | +| Open defects at acceptance | Test Report: TC-UN04.006, TC-UN08.002, TC-UN11.001, TC-UN12.001, TC-UN12.004 failed, TC-UN13.002–003 not tested; Correction Register ISS-029–032; Acceptance Report conditions; Minutes 24 Aug actions | "The run found four high-severity defects. We recorded them, told the sponsor, and acceptance was conditional on fixing them under corrective maintenance." Be ready to show the fix plan and its status. Do not claim they were fixed before 24 Aug | +| UAT ran alongside the system test | Validation Results (test order row); Minutes of Meeting 10 Aug | "The entry criterion said UAT after 100% pass. The sponsor approved running both in 10–14 Aug at the 10 Aug meeting, and the deviation is recorded in Validation Results." | | Risks never re-rated | Software Project Plan R1–R8; risk table in every Progress Status Record | Pick 1–2 risks that actually occurred (R1 → Rack/Bin decision; R7 → evidence prepared before UAT) and show where they were handled. Do not change ratings in the records now | -| Interviews must match the documents | One rehearsal session with the three people | Developer: how a defect is logged (ISS-002 → commit `92d116f` → TC-UN08.002). QA: run TC-UN08.002 (rollback test). PM: trace CR13:001 → SR09:003 → UN08.002 → TC-UN08.002 → Passed in Test Report and Validation Results | +| Interviews must match the documents | One rehearsal session with the three people | Developer: a fixed defect (ISS-002 → commit `92d116f` → TC-UN04.002) and an open one (ISS-030 → TC-UN08.002, GL posting outside the document transaction). QA: run TC-UN04.002 and show the TC-UN08.002 failure. PM: trace CR13:001 → SR09:003 → UN08.002 → TC-UN08.002 → Failed → ISS-030 → acceptance condition |