File manager - Edit - /var/www/sme-os.tech.cm.in.th/create_user_manual_doc.py
Back
import docx from docx.shared import Inches, Pt, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT from docx.oxml import OxmlElement from docx.oxml.ns import qn import os DOCX_PATH = r"C:\xampp\htdocs\os sm ctc\SME_Restaurant_OS_Manual.docx" SCREENSHOT_DIR = r"C:\xampp\htdocs\os sm ctc\images" def set_cell_background(cell, fill_hex): tcPr = cell._element.get_or_add_tcPr() shd = OxmlElement('w:shd') shd.set(qn('w:val'), 'clear') shd.set(qn('w:color'), 'auto') shd.set(qn('w:fill'), fill_hex) tcPr.append(shd) def set_cell_margins(cell, top=120, bottom=120, left=150, right=150): tcPr = cell._element.get_or_add_tcPr() tcMar = OxmlElement('w:tcMar') for m, val in [('top', top), ('bottom', bottom), ('left', left), ('right', right)]: node = OxmlElement(f'w:{m}') node.set(qn('w:w'), str(val)) node.set(qn('w:type'), 'dxa') tcMar.append(node) tcPr.append(tcMar) def build_user_manual(): doc = docx.Document() # ตั้งค่าหน้ากระดาษ A4 for section in doc.sections: section.page_width = Inches(8.27) section.page_height = Inches(11.69) section.left_margin = Inches(1.0) section.right_margin = Inches(1.0) section.top_margin = Inches(1.0) section.bottom_margin = Inches(1.0) # Style มาตรฐาน TH Sarabun PSK style = doc.styles['Normal'] font = style.font font.name = 'TH Sarabun PSK' font.size = Pt(16) font.color.rgb = RGBColor(30, 41, 59) style.paragraph_format.line_spacing = 1.15 style.paragraph_format.space_after = Pt(4) def add_title(text): p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = p.add_run(text) run.font.name = 'TH Sarabun PSK' run.font.size = Pt(22) run.font.bold = True run.font.color.rgb = RGBColor(255, 107, 0) p.paragraph_format.space_before = Pt(8) p.paragraph_format.space_after = Pt(4) return p def add_subtitle(text): p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = p.add_run(text) run.font.name = 'TH Sarabun PSK' run.font.size = Pt(16) run.font.bold = True run.font.color.rgb = RGBColor(71, 85, 105) p.paragraph_format.space_after = Pt(12) return p def add_chapter_header(text): p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.LEFT run = p.add_run(text) run.font.name = 'TH Sarabun PSK' run.font.size = Pt(18) run.font.bold = True run.font.color.rgb = RGBColor(15, 23, 42) p.paragraph_format.space_before = Pt(14) p.paragraph_format.space_after = Pt(6) return p def add_section_header(text): p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.LEFT run = p.add_run(text) run.font.name = 'TH Sarabun PSK' run.font.size = Pt(16) run.font.bold = True run.font.color.rgb = RGBColor(255, 107, 0) p.paragraph_format.space_before = Pt(10) p.paragraph_format.space_after = Pt(4) return p def add_body(text, indent=True): p = doc.add_paragraph() if indent: p.paragraph_format.first_line_indent = Inches(0.4) run = p.add_run(text) run.font.name = 'TH Sarabun PSK' run.font.size = Pt(16) p.paragraph_format.space_after = Pt(4) return p def add_bullet(text, level=1): p = doc.add_paragraph() p.paragraph_format.left_indent = Inches(0.3 * level) p.paragraph_format.first_line_indent = Inches(-0.15) r_dot = p.add_run("• ") r_dot.font.name = 'TH Sarabun PSK' r_dot.font.bold = True r_dot.font.color.rgb = RGBColor(255, 107, 0) run = p.add_run(text) run.font.name = 'TH Sarabun PSK' run.font.size = Pt(16) p.paragraph_format.space_after = Pt(3) return p def add_callout(title, text, bg_hex="F1F5F9", border_color="00E5FF"): tbl = doc.add_table(rows=1, cols=1) tbl.alignment = WD_TABLE_ALIGNMENT.CENTER cell = tbl.cell(0, 0) cell.width = Inches(6.27) set_cell_background(cell, bg_hex) set_cell_margins(cell, top=140, bottom=140, left=180, right=180) p = cell.paragraphs[0] p.paragraph_format.space_after = Pt(2) r1 = p.add_run(f"📌 {title}\n") r1.font.name = 'TH Sarabun PSK' r1.font.size = Pt(16) r1.font.bold = True r1.font.color.rgb = RGBColor(15, 23, 42) r2 = p.add_run(text) r2.font.name = 'TH Sarabun PSK' r2.font.size = Pt(15) doc.add_paragraph().paragraph_format.space_after = Pt(4) def add_img(img_name, caption, width_inch=5.8): img_path = os.path.join(SCREENSHOT_DIR, img_name) if not os.path.exists(img_path): img_path = os.path.join(r"C:\xampp\htdocs\os sm ctc", img_name) if os.path.exists(img_path): p_img = doc.add_paragraph() p_img.alignment = WD_ALIGN_PARAGRAPH.CENTER p_img.paragraph_format.space_before = Pt(6) p_img.paragraph_format.space_after = Pt(2) run = p_img.add_run() run.add_picture(img_path, width=Inches(width_inch)) p_cap = doc.add_paragraph() p_cap.alignment = WD_ALIGN_PARAGRAPH.CENTER p_cap.paragraph_format.space_after = Pt(8) r_cap = p_cap.add_run(f"ภาพที่: {caption}") r_cap.font.name = 'TH Sarabun PSK' r_cap.font.size = Pt(14) r_cap.font.italic = True r_cap.font.color.rgb = RGBColor(100, 116, 139) # ==================== COVER / HEADER ==================== add_title("คู่มือการใช้งานระบบ SME Restaurant OS (User Manual)") add_subtitle("ระบบบริหารจัดการร้านอาหารและสั่งอาหารออนไลน์อัจฉริยะ\nครอบคลุมตั้งแต่การสมัครแพ็กเกจ การใช้งานร้านค้า และระบบผู้ดูแลระบบ (Admin)") add_callout( "คำแนะนำด้านความปลอดภัยและการเข้าใช้งานระบบ", "• ร้านอาหารสามารถเข้าสู่ระบบผ่านบัญชีร้านค้าที่ได้รับจากการลงทะเบียน\n" "• ผู้ดูแลระบบ (Admin) สามารถเข้าสู่ระบบผ่านบัญชีส่วนกลางที่ได้รับมอบหมายตามสิทธิ์\n" "• URL หน้าเว็บระบบหลัก: https://pos.cm.in.th/" ) doc.add_page_break() # ==================== ส่วนที่ 1 ==================== add_chapter_header("ส่วนที่ 1: การสมัครใช้บริการและการเลือกแพ็กเกจ (Subscription & Registration)") add_body("ระบบ SME Restaurant OS ออกแบบให้ผู้ประกอบการสามารถเลือกแพ็กเกจที่เหมาะสมกับขนาดธุรกิจ พร้อมสิทธิ์ทดลองใช้งานฟรี (Free Trial) 30 วัน ทุกแพ็กเกจ โดยไม่ต้องลงโปรแกรมหรือซื้ออุปกรณ์ฮาร์ดแวร์เพิ่มเติม") add_section_header("1.1 หน้า Portal และข้อมูลแพ็กเกจบริการ") add_body("ผู้ประกอบการสามารถเข้าสู่หน้าหลักผ่านทางเว็บบราวเซอร์ เพื่อดูข้อมูลคุณสมบัติระบบ จุดเด่น และตารางเปรียบเทียบแพ็กเกจราคา ซึ่งประกอบด้วย 3 แพ็กเกจหลัก:") add_bullet("Starter Package (฿490/เดือน): เหมาะสำหรับร้านค้าขนาดเล็ก รองรับการสั่งอาหารผ่าน QR Code และจัดการเมนูอาหารพื้นฐาน") add_bullet("Standard Package (฿990/เดือน - ยอดนิยม): เหมาะกับร้านหมูกระทะ ชาบู บุฟเฟต์ มีระบบจัดการผังโต๊ะ จอรับออเดอร์ครัว (KDS) และ PromptPay QR Code") add_bullet("Premium Package (฿1,590/เดือน): ร้านอาหารเต็มรูปแบบ ปลดล็อกระบบคำนวณเวลารออาหารจริง (Lead Time Module) และรายงานวิเคราะห์ยอดขายเชิงลึก") add_img("01_landing_portal.png", "1.1 หน้า Portal หลักของระบบ SME Restaurant OS") add_img("02_landing_packages.png", "1.2 ตารางแพ็กเกจราคาและการทดลองใช้งานฟรี 30 วัน") add_section_header("1.2 ขั้นตอนการลงทะเบียนสมัครใช้งาน") add_body("เมื่อผู้ประกอบการเลือกแพ็กเกจที่ต้องการ ระบบจะแสดงหน้าต่างแบบฟอร์มลงทะเบียน (Registration Form) เพื่อกรอกข้อมูลสำคัญ ได้แก่:") add_bullet("1. ระบุชื่อร้านอาหาร (Shop Name)") add_bullet("2. ระบุชื่อ-นามสกุลของผู้ติดต่อหรือเจ้าของร้าน (Contact Owner)") add_bullet("3. ระบุเบอร์โทรศัพท์ติดต่อ (Phone Number)") add_bullet("4. กดปุ่ม 'ยืนยันสมัครเข้าร่วม' หรือปุ่ม 'ไปสมัครที่ pos.cm.in.th' เพื่อเริ่มต้นเข้าใช้งานระบบร้านค้าทันที") add_img("03_package_registration_modal.png", "1.3 แบบฟอร์มลงทะเบียนสมัครใช้งานแพ็กเกจ") doc.add_page_break() # ==================== ส่วนที่ 2 ==================== add_chapter_header("ส่วนที่ 2: คู่มือการใช้งานสำหรับร้านค้า (Restaurant User Guide)") add_body("คู่มือส่วนนี้อธิบายขั้นตอนการทำงานของร้านค้า ตั้งแต่การเข้าสู่ระบบ การจัดการเมนูอาหาร การตั้งค่าผังโต๊ะ การรับออเดอร์ในครัว (KDS) และการคิดเงินหน้าร้าน") add_section_header("2.1 การเข้าสู่ระบบร้านค้า (Shop Login)") add_body("ขั้นตอนการเข้าสู่ระบบของร้านอาหาร:") add_bullet("1. ไปที่เว็บไซต์ https://pos.cm.in.th/") add_bullet("2. ในส่วน 'เข้าสู่ระบบร้านค้า' ให้กรอกชื่อผู้ใช้งาน (Username) และรหัสผ่าน (Password) ของร้านค้า") add_bullet("3. กดปุ่ม 'เข้าสู่ระบบ' เพื่อเข้าสู่หน้าแดชบอร์ดหลักของร้านค้า") add_img("04_pos_portal_entry.png", "2.1 หน้าทางเข้าสู่ระบบ POS Portal") add_img("06_shop_dashboard.png", "2.2 แดชบอร์ดสรุปภาพรวมร้านค้า (Shop Backoffice Dashboard)") add_section_header("2.2 ขั้นตอนการจัดการและเพิ่มเมนูอาหาร (Food Menu Management)") add_body("ร้านค้าสามารถเพิ่ม แก้ไข ลบ และจัดการสถานะวัตถุดิบหมดได้ตลอดเวลาผ่านเมนู 'จัดการเมนูอาหาร' โดยมีขั้นตอนดังนี้:") add_bullet("1. ไปที่แถบเมนูด้านข้าง คลิกเลือก 'จัดการเมนูอาหาร'") add_bullet("2. ระบบจะแสดงรายการเมนูอาหารทั้งหมด พร้อมรูปภาพ หมวดหมู่ ราคา และสถานะพร้อมเสิร์ฟ") add_bullet("3. การเพิ่มเมนูใหม่: กดปุ่ม 'เพิ่มรายการอาหาร' (ปุ่มสีส้ม/น้ำเงินด้านบน)") add_bullet("4. กรอกข้อมูลรายการอาหาร: ระบุชื่อเมนู, เลือกหมวดหมู่ (เช่น ต้ม, ผัด, ทอด, เครื่องดื่ม), กำหนดราคาขาย, เวลาเฉลี่ยในการปรุง (Lead Time นาที), และอัปโหลดรูปภาพเมนู") add_bullet("5. กดปุ่ม 'บันทึกรายการ' เพื่อให้เมนูแสดงผลบนหน้าสั่งอาหารของลูกค้าทันที") add_bullet("6. สลับสถานะวัตถุดิบหมด (Out of Stock): สามารถกดปุ่มสลับสถานะเปิด/ปิดเมนูได้ทันทีเมื่อของหมด โดยระบบจะซ่อนจากหน้าสแกนสั่งของลูกค้าอัตโนมัติ") add_img("07_shop_menu_management.png", "2.3 หน้ารายการเมนูอาหารทั้งหมดของร้าน") add_img("08_shop_add_menu_modal.png", "2.4 หน้าต่างเพิ่มรายการอาหารใหม่และการตั้งราคา") add_section_header("2.3 ขั้นตอนการจัดการโต๊ะอาหารและพิมพ์ QR Code ประจำโต๊ะ (Table & QR Management)") add_body("ระบบรองรับการกำหนดผังโต๊ะอาหารและสร้าง Dynamic QR Code ประจำโต๊ะอัตโนมัติ:") add_bullet("1. คลิกเลือกเมนู 'จัดการโต๊ะ & QR Code' จากแถบเมนูด้านข้าง") add_bullet("2. ระบบจะแสดงผังโต๊ะทั้งหมด พร้อมสถานะ (โต๊ะว่าง / กำลังรับประทาน / รอชำระเงิน)") add_bullet("3. การเพิ่มโต๊ะอาหาร: กดปุ่ม 'เพิ่มโต๊ะอาหารใหม่' ระบุหมายเลขโต๊ะ (เช่น โต๊ะ 01, โต๊ะ 02) และจำนวนที่นั่ง") add_bullet("4. การนำ QR Code ไปใช้งาน: คลิกที่ปุ่ม 'พิมพ์ QR Code' หรือดาวน์โหลด QR ประจำโต๊ะ เพื่อนำไปติดที่โต๊ะอาหาร ให้ลูกค้านำสมาร์ตโฟนมาสแกนสั่งอาหารได้ทันทีโดยไม่ต้องโหลดแอปพลิเคชัน") add_img("09_shop_table_management.png", "2.5 หน้าจัดการผังโต๊ะและ QR Code ประจำโต๊ะ") add_img("10_shop_add_table_modal.png", "2.6 หน้าต่างการเพิ่มหมายเลขโต๊ะอาหารใหม่") add_section_header("2.4 หน้าจอรับออเดอร์ห้องครัวอัจฉริยะ (Kitchen Display System - KDS)") add_body("หน้าจอ KDS ออกแบบมาสำหรับตั้งไว้ในห้องครัว เพื่อให้เชฟและพนักงานปรุงอาหารเห็นรายการออเดอร์แบบเรียลไทม์:") add_bullet("1. คลิกเลือกเมนู 'จอรับออเดอร์ครัว (KDS)'") add_bullet("2. เมื่อลูกค้าสั่งอาหารผ่าน QR Code ออเดอร์จะเด้งเข้าหน้าจอครัวทันทีพร้อมเสียงแจ้งเตือน") add_bullet("3. แสดงรายละเอียดโต๊ะ, รายการอาหาร, ตัวเลือกพิเศษ (เช่น เผ็ดน้อย, ไม่ใส่ผัก), และเวลารอสะสม") add_bullet("4. เชฟสามารถแตะที่การ์ดออเดอร์เพื่อสลับสถานะ 'กำลังปรุง' -> 'ปรุงเสร็จพร้อมเสิร์ฟ'") add_img("11_shop_kitchen_kds.png", "2.7 จอรับออเดอร์ห้องครัว KDS แบบ Real-time") add_section_header("2.5 ระบบแคชเชียร์และการชำระเงิน (POS & Cashier Screen)") add_body("หน้าจอคิดเงินหน้าร้านและเช็คบิล:") add_bullet("1. คลิกเลือกเมนู 'POS / ขายหน้าร้าน'") add_bullet("2. เลือกโต๊ะที่ต้องการเช็คบิล ระบบจะรวมยอดรายการอาหารทั้งหมดอัตโนมัติ") add_bullet("3. รองรับการชำระเงินทั้งเงินสด และ Dynamic PromptPay QR Code ตามยอดเงินจริง") add_bullet("4. เมื่อชำระเงินเสร็จสิ้น โต๊ะจะถูกเคลียร์สถานะกลับเป็น 'โต๊ะว่าง' พร้อมรับลูกค้ากลุ่มถัดไป") add_img("12_shop_pos_screen.png", "2.8 หน้าจอ POS แคชเชียร์และระบบเช็คบิล") doc.add_page_break() # ==================== ส่วนที่ 3 ==================== add_chapter_header("ส่วนที่ 3: คู่มือการใช้งานสำหรับผู้ดูแลระบบ (Admin User Guide)") add_body("คู่มือส่วนนี้อธิบายขั้นตอนการเข้าสู่ระบบของผู้ดูแลระบบ (Admin) เพื่อควบคุมดูแลร้านอาหารทั้งหมดในระบบ การสวมสิทธิ์ร้านค้า (Impersonation) และการจัดการ/แก้ไขสิทธิ์ร้านค้า") add_section_header("3.1 การเข้าสู่ระบบผู้ดูแลระบบ (Admin Login)") add_body("ขั้นตอนการเข้าสู่ระบบ Admin:") add_bullet("1. ไปที่เว็บไซต์ https://pos.cm.in.th/ ในส่วน 'เข้าสู่ระบบแอดมิน (Admin Portal)'") add_bullet("2. กรอกชื่อผู้ใช้งานหรืออีเมล และรหัสผ่านของผู้ดูแลระบบ") add_bullet("3. กดปุ่ม 'เข้าสู่ระบบ' เพื่อเข้าสู่ Admin Backoffice Management Dashboard") add_img("15_admin_dashboard.png", "3.1 หน้าแดชบอร์ดหลักของผู้ดูแลระบบ (Admin Overview Dashboard)") add_section_header("3.2 การจัดการร้านอาหารทั้งหมด และฟังก์ชัน 'สวมสิทธิ์ร้านค้า' (Impersonate Store)") add_body("ผู้ดูแลระบบสามารถตรวจสอบรายชื่อร้านอาหารทั้งหมดที่ลงทะเบียนในระบบ และสามารถ 'สวมสิทธิ์' เพื่อเข้าไปดูหน้าจอและช่วยแก้ไขปัญหาให้ร้านค้าได้เสมือนเป็นเจ้าของร้านเอง:") add_bullet("1. ไปที่แถบเมนู 'ร้านอาหารทั้งหมด' หรือ 'จัดการร้านค้า' (Restaurants / Stores Management)") add_bullet("2. ระบบจะแสดงตารางรายชื่อร้านค้า, ชื่อผู้ติดต่อ, เบอร์โทร, แพ็กเกจที่ใช้งาน, และสถานะการเปิดใช้งาน") add_bullet("3. ฟังก์ชันการสวมสิทธิ์ (Impersonate): ในแถวของร้านอาหารที่ต้องการ ให้คลิกที่ปุ่ม 'สวมสิทธิ์' หรือ 'เข้าสู่ร้าน (Login as Store)'") add_bullet("4. ระบบ Admin จะทำการสลับ Session เข้าสู่หน้าแดชบอร์ดของร้านค้านั้นๆ ทันทีโดยไม่ต้องขอรหัสผ่านของร้าน เพื่อให้ผู้ดูแลระบบสามารถตรวจสอบข้อผิดพลาด ช่วยเพิ่มเมนู หรือตั้งค่าระบบให้แก่ลูกค้าได้อย่างรวดเร็ว") add_img("16_admin_stores_management.png", "3.2 หน้ารายการร้านอาหารทั้งหมด และปุ่มการสวมสิทธิ์ / จัดการสิทธิ์") add_section_header("3.3 การแก้ไขสิทธิ์และขอบเขตการใช้งานของร้านค้า (Edit Store Permissions & Packages)") add_body("ผู้ดูแลระบบสามารถปรับเปลี่ยนสิทธิ์ แพ็กเกจ และการเปิด/ปิดการเข้าถึงโมดูลต่างๆ ของแต่ละร้านอาหารได้:") add_bullet("1. ในตารางรายชื่อร้านค้า ให้คลิกปุ่ม 'แก้ไขสิทธิ์' (Edit Permissions) หรือ 'แก้ไขข้อมูลร้าน'") add_bullet("2. การปรับเปลี่ยนสิทธิ์การใช้งาน (Permissions):") add_bullet(" - สิทธิ์การใช้งานระบบคิวครัว (KDS Module Enable/Disable)", level=2) add_bullet(" - สิทธิ์การใช้งานระบบคำนวณเวลารออาหารจริง (Real-time Lead Time Module)", level=2) add_bullet(" - สิทธิ์การเชื่อมต่อ PromptPay QR Code ชำระเงิน", level=2) add_bullet(" - กำหนดจำนวนโต๊ะสูงสุดที่อนุญาตให้เปิดได้ตามแพ็กเกจ", level=2) add_bullet(" - ขยายระยะเวลาทดลองใช้งาน (Extend Trial Period) หรือปรับสถานะการชำระเงิน", level=2) add_bullet("3. กดปุ่ม 'บันทึกการแก้ไขสิทธิ์' เพื่อให้การตั้งค่ามีผลกับร้านค้าทันที") add_img("17_admin_edit_store_permissions.png", "3.3 หน้าต่างการแก้ไขสิทธิ์และการกำหนดขอบเขตของร้านค้า") add_section_header("3.4 การจัดการแพ็กเกจบริการและการดูแลผู้ใช้งานระบบ") add_body("ผู้ดูแลระบบสามารถจัดการแพ็กเกจราคา กำหนดเงื่อนไขฟังก์ชันของแต่ละแพ็กเกจ และตรวจสอบบัญชีผู้ใช้งานส่วนกลางได้อย่างครอบคลุม:") add_bullet("1. เมนู 'จัดการแพ็กเกจ (Packages)': ใช้สำหรับตั้งราคา กำหนดฟีเจอร์เด่น และเปิด/ปิดแพ็กเกจโปรโมชัน") add_bullet("2. เมนู 'ผู้ใช้งานระบบ (Users)': ใช้สำหรับจัดการสิทธิ์ของทีมงาน Support, พนักงานระบบ, และตรวจสอบบันทึกการเข้าใช้งาน (System Audit Log)") add_img("18_admin_packages_management.png", "3.4 หน้าการจัดการแพ็กเกจราคาในระบบ Admin") add_img("19_admin_users_management.png", "3.5 หน้าการจัดการบัญชีผู้ใช้งานและสิทธิ์ผู้ดูแล") # ==================== บันทึกเอกสาร ==================== doc.save(DOCX_PATH) print(f"[SUCCESS] Cleaned User manual generated at: {DOCX_PATH}") if __name__ == "__main__": build_user_manual()
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings