Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Record and manage position restructuring requests for the Prime Minister's office
AI summary · website content
BusinessHTML · PythonGitHub @jnka810-iiiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗แอปบันทึกข้อมูลแบบ บอ.1 สำหรับคำขอปรับปรุงการกำหนดตำแหน่ง สร้างด้วย Flask กับ SQLite และเปิดเป็นหน้าต่างเดสก์ท็อปผ่าน pywebview ได้ หรือ build เป็นไฟล์ .exe ไฟล์เดียวสำหรับ Windows
กรอกข้อมูลแบบ บอ.1 ครบ 5 ส่วน
ส่วนที่ 1 ถึง 3 เพิ่มได้หลายตำแหน่งต่อคำขอ
แนบเอกสารประกอบได้หนึ่งไฟล์ต่อคำขอ รองรับ PDF, Word และ Excel ขนาดไม่เกิน 10 MB
แท็บคำขอทั้งหมด สำหรับแก้ไขและลบคำขอ
แท็บสรุปภาพรวม แสดงกราฟด้วย Chart.js
ส่งออกเป็น CSV, JSON และพิมพ์หรือบันทึกเป็น PDF ทีละคำขอ
หน้าตาตาม DESIGN.md และใช้คำตาม GLOSSARY.md
static/vendor ทั้งหมดcd pos_restructure
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
pyinstaller ใน requirements.txt ใช้เฉพาะตอน build .exe ถ้าแค่รันแอปไม่ต้องติดตั้งก็ได้
มีไฟล์ .bat ให้ดับเบิลคลิก 3 แบบ ทุกไฟล์ใช้ Python ใน .venv ก่อน ถ้าไม่มีจึงใช้ python ของเครื่อง
| ไฟล์ | โหมด | เข้าถึงจาก |
|---|---|---|
run.bat | เดสก์ท็อป เปิดหน้าต่าง pywebview | เครื่องนี้เท่านั้น |
run_browser.bat | เปิดในเว็บเบราว์เซอร์ปกติ | http://127.0.0.1:5050 เครื่องนี้เท่านั้น |
run_server.bat | เซิร์ฟเวอร์ในวง LAN | http://<IP เครื่องนี้>:5050 ทุกเครื่องในเครือข่าย |
ถ้าไม่ได้ติดตั้ง pywebview คำสั่ง python app.py จะรันเป็นเว็บเซิร์ฟเวอร์ที่ http://127.0.0.1:5050 แทน
ข้อควรระวังของโหมด LAN: แอปไม่มีระบบล็อกอิน ทุกคนที่เข้าถึงพอร์ต 5050 ได้จะอ่าน แก้ไข และลบข้อมูลได้ทั้งหมด ใช้เฉพาะในเครือข่ายที่ไว้ใจได้
.venv\Scripts\pyinstaller.exe --noconfirm --onefile --windowed ^
--add-data "templates;templates" ^
--add-data "static;static" ^
--hidden-import webview ^
--name "PosRestructure" app.py
--add-data "static;static" คือไลบรารีหน้าเว็บ ถ้าไม่ใส่บรรทัดนี้ .exe จะไม่มี Bootstrap, Chart.js, Font Awesome และฟอนต์ Noto Sans Thai กับ Sarabun ติดไปด้วย และแท็บสรุปภาพรวมจะใช้งานไม่ได้
ไฟล์ที่ได้อยู่ใน dist\PosRestructure.exe ตอนรัน แอปจะสร้างฐานข้อมูล ไฟล์ log และโฟลเดอร์ uploads ไว้ข้างไฟล์ .exe
pos_restructure/
├── app.py Flask app, API และตัวเปิดหน้าต่าง pywebview
├── templates/index.html หน้าเว็บทั้งหมด (HTML, CSS, JavaScript ในไฟล์เดียว)
├── DESIGN.md ระบบออกแบบของหน้าเว็บ (DESIGN-sap.md, DESIGN-ibm.md คือต้นทาง)
├── GLOSSARY.md ความหมายของคำในโดเมน เช่น คำขอ มติที่ประชุม สถานะคำขอ
├── static/vendor/ Bootstrap, Chart.js, Font Awesome, ฟอนต์ Noto Sans Thai และ Sarabun ในเครื่อง
├── test_api.py เทส regression ของ API และฟังก์ชันในหน้าเว็บ
├── verify_offline.py เปิดหน้าเว็บในเบราว์เซอร์ที่ตัดเน็ต แล้ววัดว่าไลบรารีมาครบ
├── vendor_assets.py ดาวน์โหลดไลบรารีหน้าเว็บมาไว้ใน static/vendor
├── migrate_schema.py ลบคอลัมน์ที่โค้ดไม่ใช้แล้วออกจากฐานข้อมูล
├── cleanup_orphans.py ลบไฟล์ใน uploads/ ที่ไม่มีรายการไหนอ้างถึง
├── run.bat / run_browser.bat / run_server.bat
├── requirements.txt
├── CODE_REVIEW.md ผลรีวิวโค้ดและสถานะการแก้ไขแต่ละข้อ
│
├── pos_restructure.db สร้างอัตโนมัติ (ไม่อยู่ใน git)
├── pos_restructure.log สร้างอัตโนมัติ เก็บ error ที่ไม่คาดคิด (ไม่อยู่ใน git)
└── uploads/ สร้างอัตโนมัติ เก็บไฟล์แนบ (ไม่อยู่ใน git)
ฐานข้อมูล ไฟล์สำรอง log และไฟล์แนบเป็นข้อมูลจริงของหน่วยงาน จึงถูกกันไว้ใน .gitignore ทั้งหมด
ข้อมูลทั้งหมดอยู่ในตาราง positions ตารางเดียวใน pos_restructure.db
sec1_rows, sec2_rows, sec3_rowsp4_ และ p5_file_name และชื่อเดิมใน file_orig_namecreated และ updated เก็บเป็น ISO 8601 ค.ศ. หน้าเว็บแปลงเป็นรูปแบบไทยตอนแสดงผลตอนเริ่มแอป init_db() สร้างตารางและเพิ่มคอลัมน์ที่ขาดให้อัตโนมัติ และแปลง timestamp รูปแบบเก่า DD/MM/YYYY HH:MM เป็น ISO ให้ ไม่ต้องรัน migration เอง
สำรองข้อมูล: ปิดแอปก่อน แล้วคัดลอก pos_restructure.db กับโฟลเดอร์ uploads/ ไปเก็บไว้ด้วยกัน
ทุก endpoint ตอบเป็น JSON ข้อความ error เป็นภาษาไทยในรูป {"ok": false, "error": "..."}
| Method | Path | ใช้ทำอะไร |
|---|---|---|
| GET | /api/positions | ดึงรายการทั้งหมด เรียงจากใหม่ไปเก่า |
| POST | /api/positions | เพิ่มรายการ |
| PUT | /api/positions/<id> | แก้ไขรายการ ตอบ 404 ถ้าไม่มี id นี้ |
| DELETE | /api/positions/<id> | ลบรายการพร้อมไฟล์แนบ |
| DELETE | /api/positions | ลบทุกรายการพร้อมไฟล์แนบทั้งหมด |
| POST | /api/upload | อัปโหลดไฟล์แนบ (multipart field ชื่อ file) |
| GET | /uploads/<ชื่อไฟล์> | เปิดไฟล์แนบ |
| GET | /api/ping | เช็กว่าเซิร์ฟเวอร์ทำงานอยู่ |
คำขอที่เปลี่ยนข้อมูลและส่ง header Origin มาจากเว็บไซต์อื่นจะถูกปฏิเสธด้วย 403 เพื่อกัน CSRF
.venv\Scripts\python.exe test_api.py
เทสใช้ฐานข้อมูลและโฟลเดอร์อัปโหลดชั่วคราว ไม่แตะข้อมูลจริง และจบด้วยสรุปจำนวนเทสที่ผ่าน คืนค่า exit code 1 ถ้ามีเทสไม่ผ่าน
เคสที่ต้องใช้ Node เพื่อรัน JavaScript จากหน้าเว็บจะขึ้น SKIP ถ้าเครื่องไม่มี Node สั่ง --no-skip เพื่อให้เคสที่ข้ามนับเป็นตก ซึ่งเป็นแบบที่ CI ใช้
.venv\Scripts\python.exe test_api.py --no-skip
GitHub Actions รัน test_api.py --no-skip กับ verify_offline.py บน windows-latest ทุก pull request ตั้งค่าอยู่ใน .github/workflows/tests.yml
.venv\Scripts\python.exe verify_offline.py
สคริปต์เปิดแอปบนพอร์ตว่าง แล้วสั่ง Edge หรือ Chrome แบบ headless ให้เปิดหน้านั้นโดยทุกโฮสต์นอกจาก 127.0.0.1 หาที่อยู่ไม่เจอ ซึ่งเป็นสภาพเดียวกับเครื่องที่ไม่มีเน็ต แล้ววัดจากในเบราว์เซอร์ว่า Chart.js, Bootstrap, ไอคอน และฟอนต์ไทยมาครบ ภาพหน้าจอที่ได้อยู่ในโฟลเดอร์ temp สั่งที่อื่นได้ด้วย --shot
ทั้งสองสคริปต์เป็น dry-run โดยค่าเริ่มต้น แสดงแค่สิ่งที่จะทำ ต้องใส่ --apply จึงจะทำจริง
REM ลบไฟล์แนบที่ไม่มีรายการไหนอ้างถึง
.venv\Scripts\python.exe cleanup_orphans.py
.venv\Scripts\python.exe cleanup_orphans.py --apply
REM ลบคอลัมน์ที่โค้ดไม่ใช้แล้ว (สำรองฐานข้อมูลเป็น .bak ให้ก่อนเสมอ)
.venv\Scripts\python.exe migrate_schema.py
.venv\Scripts\python.exe migrate_schema.py --apply
ส่วน vendor_assets.py ดาวน์โหลดไลบรารีหน้าเว็บลง static/vendor ใหม่ทั้งโฟลเดอร์ ต้องต่อเน็ตตอนรัน ใช้เมื่อขึ้นเวอร์ชัน Bootstrap, Chart.js, Font Awesome หรือฟอนต์ Noto Sans Thai และ Sarabun โดยแก้ตาราง ASSETS ในสคริปต์ก่อน แล้วรัน verify_offline.py ซ้ำ
.venv\Scripts\python.exe vendor_assets.py
รายละเอียดทั้งหมดอยู่ใน CODE_REVIEW.md ทั้ง 25 ข้อจากการรีวิวปิดครบแล้ว
ที่ยังเป็นข้อจำกัดของตัวระบบเอง ไม่ใช่ข้อค้างจากการรีวิว คือแอปไม่มีระบบผู้ใช้หรือสิทธิ์การเข้าถึง ไฟล์แนบแต่ละรายการมีได้ไฟล์เดียว และชุดตรวจยังไม่ครอบการวาดกราฟใน Dashboard กับการกรองในตาราง เพราะสองอย่างนี้ต้องขับเบราว์เซอร์จริง ไม่ใช่รันด้วย Node