build(sdlc): seed data, figures and rendered package for 23/09 feedback
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
// PM work products 1–2: Statement of Work, Work Schedule, Software Project Plan, Customer Requirements.
|
||||
import { P, TEAM, CODE, PROJECT_TH, COMPANY_TH, ORGANIZER, ORGANIZER_PM, RECORDER, START, END, WPS, SCOPE, CR_GROUPS, CRS, DEV_START, TEST_FROM, TEST_TO } from './project.mjs';
|
||||
import { TASKS } from './history.mjs';
|
||||
import { TASKS, VERIFICATION_ROUNDS, VERIFICATION_RULES } from './history.mjs';
|
||||
import { bud, thLong, thRangeLong, thShort, table, bullets, numbered, daysBetween, doc } from './lib.mjs';
|
||||
import { workProduct, head } from './format.mjs';
|
||||
|
||||
@@ -97,7 +97,7 @@ export function workSchedule() {
|
||||
['ตั้ง Baseline ความต้องการและแผนงาน', thLong('2026-02-18'), 'อนุมัติ Customer Requirements และ Work Schedule'],
|
||||
['เริ่มพัฒนาระบบ', thLong(DEV_START), 'เริ่ม Task 3.1 ตามแผน'],
|
||||
['Baseline การพัฒนา', thLong('2026-05-29'), 'พัฒนาครบทุกโมดูล (Git a0677d6)'],
|
||||
['ทดสอบระบบและ UAT', thRangeLong(TEST_FROM, TEST_TO), 'ทดสอบ 45 Test Case และ 12 สถานการณ์ UAT ผ่านทั้งหมด'],
|
||||
['ทดสอบระบบและ UAT', thRangeLong(TEST_FROM, TEST_TO), `ทดสอบ 45 Test Case และ UAT ครบ 14 หมวดความต้องการ (${CRS.length} รายการ) ผ่านทั้งหมด`],
|
||||
['ตรวจรับส่งมอบระบบ', thLong('2026-08-17'), 'ผลการตรวจรับ Accepted'],
|
||||
['อบรมผู้ใช้งาน', thLong('2026-08-22'), 'อบรมผู้ใช้งาน 6 คน'],
|
||||
['ปิดโครงการ', thLong(END), 'ปิดโครงการอย่างเป็นทางการ'],
|
||||
@@ -185,11 +185,11 @@ export function softwareProjectPlan() {
|
||||
'ตรวจสอบย้อนกลับ (Audit) และตรวจรับงานได้อย่างเป็นทางการ',
|
||||
]),
|
||||
table(['ขั้นตอน', 'แนวทางที่ใช้จริงในโครงการ'], [
|
||||
['Requirements', 'เก็บความต้องการและตั้ง Baseline ก่อนเริ่มพัฒนา การเปลี่ยนแปลงภายหลังผ่าน Change Report (CH-001–CH-003)'],
|
||||
['Requirements', 'เก็บความต้องการและตั้ง Baseline ก่อนเริ่มพัฒนา การเปลี่ยนแปลงภายหลังต้องพิจารณาตามเกณฑ์ใน Change Report ก่อนดำเนินการ'],
|
||||
['Design', 'ออกแบบสถาปัตยกรรม โครงสร้างฐานข้อมูล และ Software Unit ก่อนพัฒนาแต่ละโมดูล'],
|
||||
['Implementation', 'พัฒนาเป็นโมดูลต่อเนื่องระหว่าง 19 ก.พ. – 29 พ.ค. 69 พร้อมทบทวนและแก้ไขระหว่างทาง'],
|
||||
['Verification', 'ตรวจสอบ Work Products 4 รอบ ควบคู่กับการพัฒนา และรอบสุดท้ายก่อนส่งมอบ'],
|
||||
['Validation', 'ทดสอบระบบและ UAT ระหว่าง 10–14 ส.ค. 69 บนสภาพแวดล้อมที่กำหนด'],
|
||||
['Verification', 'ตรวจสอบ Work Products 4 รอบ ประมาณทุก 2 เดือน และรอบสุดท้ายก่อนส่งมอบ ตามแผนในหัวข้อ 8.1'],
|
||||
['Validation', 'ทดสอบระบบและ UAT ระหว่าง 10–14 ส.ค. 69 บนสภาพแวดล้อมที่กำหนด โดยใช้ Customer Requirements ทุกรายการเป็นตัวตั้ง'],
|
||||
['Closure', 'ตรวจรับ อบรม ปิดงานควบคุมปฏิบัติการ และปิดโครงการภายใน 24 ส.ค. 69'],
|
||||
]),
|
||||
sec(5, 'Organization'),
|
||||
@@ -241,6 +241,19 @@ export function softwareProjectPlan() {
|
||||
['Verification & Validation', thRangeLong('2026-05-30', '2026-08-17'), 'Test Case, Test Report, Verification Results, Validation Results'],
|
||||
['Project Close', thRangeLong('2026-08-10', END), 'Acceptance Report, Training Report, List of Evidence'],
|
||||
]),
|
||||
'### 8.1 แผนการตรวจสอบ (Verification Plan)',
|
||||
`โครงการมีระยะเวลา ${DURATION} วัน จึงกำหนดให้ตรวจสอบ Work Products ทั้งหมด ${VERIFICATION_ROUNDS.length} ครั้ง ประมาณทุก 2 เดือน (ทุก 60–75 วัน) ครั้งละ 3 ชั่วโมง และรอบสุดท้ายก่อนส่งมอบระบบ 6 ชั่วโมง เพื่อให้พบประเด็นตั้งแต่เนิ่น ๆ และแก้ไขได้ก่อนเริ่มงานขั้นถัดไป ผลการตรวจสอบแต่ละรอบบันทึกใน Verification Results และประเด็นที่พบบันทึกใน Correction Register`,
|
||||
table(['รอบ', 'วันที่ตรวจสอบ', 'เวลา', 'ชั่วโมง', 'หัวข้อการตรวจสอบ', 'Deliverables under Review'],
|
||||
VERIFICATION_ROUNDS.map((r) => [r.no, thLong(r.date), r.time, r.hours, r.topic, r.wps.join(', ')]), ['c', '', 'c', 'r', '', '']),
|
||||
table(['หัวข้อ', 'รายละเอียด'], [
|
||||
['ผู้ตรวจสอบ', `${P.PaNg.th} (QA/Tester) ร่วมกับ ${P.YaB.th} (Document Control)`],
|
||||
['ผู้เข้าร่วมรับฟังผล', 'ผู้จัดทำ Work Product ที่ตรวจในรอบนั้น เพื่อแก้ไขได้ทันทีเมื่อพบประเด็น'],
|
||||
['ผู้อนุมัติผลการตรวจสอบ', `${P.SeV.th} (Project Sponsor)`],
|
||||
['รวมเวลาตรวจสอบตลอดโครงการ', `${VERIFICATION_ROUNDS.reduce((a, r) => a + r.hours, 0)} ชั่วโมง`],
|
||||
['บันทึกผล', 'Verification Results แยกฉบับตามรอบ (V0.1–V1.0) และ Correction Register'],
|
||||
]),
|
||||
'**Risk & Constraints Note**',
|
||||
numbered(VERIFICATION_RULES),
|
||||
sec(9, 'Risk Management Plan'),
|
||||
'วัตถุประสงค์ของแผนบริหารความเสี่ยง คือระบุแนวทางจัดการความเสี่ยงของโครงการ เพื่อให้โครงการบรรลุเป้าหมายภายในเวลา งบประมาณ และคุณภาพที่กำหนด',
|
||||
table(['ลำดับ', 'หมวด', 'รายการ', 'รายละเอียด'], [
|
||||
@@ -309,8 +322,8 @@ export function customerRequirements() {
|
||||
const date = '2026-02-06';
|
||||
const rows = [];
|
||||
for (const [gid, gname, items] of CR_GROUPS) {
|
||||
rows.push([`${gid}: ${gname}`, '', '', '']);
|
||||
for (const [id, text, remark] of items) rows.push([id, text, 'A', remark]);
|
||||
rows.push([`${gid}: ${gname}`, '', '']);
|
||||
for (const [id, text] of items) rows.push([id, text, 'A']);
|
||||
}
|
||||
return {
|
||||
dir: '1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement',
|
||||
@@ -336,7 +349,7 @@ export function customerRequirements() {
|
||||
[6, 'ฝ่ายบัญชีและการเงิน', 'ผู้ใช้งาน', 'ให้ข้อมูลการวางบิล รับชำระ จ่ายชำระ และการบันทึกบัญชี'],
|
||||
], ['c']),
|
||||
'## ความต้องการเชิงหน้าที่และไม่ใช่หน้าที่ (Functional and Non-Functional Requirements)',
|
||||
table(['ID', 'Topic', 'Result*', 'Remark'], rows, ['', '', 'c', '']),
|
||||
table(['ID', 'Topic', 'Result*'], rows, ['', '', 'c']),
|
||||
'## Remark',
|
||||
bullets(['\\* Result : A = Accepted, U = Unaccepted, N/A = Not Applicable', 'เอกสารฉบับนี้รวมความต้องการที่ได้จากการทบทวนขอบเขตงานร่วมกับลูกค้า', 'การเปลี่ยนแปลงความต้องการหลังอนุมัติต้องดำเนินการผ่าน Change Report']),
|
||||
].join('\n\n'),
|
||||
|
||||
Reference in New Issue
Block a user