# AI Full Dev Work Report

- generated_at: `2026-05-27T11:48:43+07:00`
- source_project: `todo-namnan-v1`
- source_name: `Todo Namnan Version 1`
- topic: `web`
- topic_min_score: `1`

## Counts

- work_kinds_total: `119`
- activities: `75`
- plans: `9`
- todos: `33`
- debug_items: `2`
- events: `144`
- portfolio_rows: `25`
- unique_projects: `22`
- unique_sites: `7`
- unique_source_webs: `27`
- unique_target_webs: `26`
- open_items: `23`
- topic_total: `41`
- topic_open_total: `8`

## Status By Kind

| kind | total | open | closed | status_counts |
| --- | --- | --- | --- | --- |
| activities | 75 | 11 | 64 | {"completed": 2, "done": 62, "in_progress": 11} |
| plans | 9 | 1 | 8 | {"done": 8, "in_progress": 1} |
| todos | 33 | 9 | 24 | {"blocked": 3, "doing": 1, "done": 24, "todo": 5} |
| debug_items | 2 | 2 | 0 | {"blocked": 1, "open": 1} |


## Sites

- `class.lnwsj.com`
- `fb.namnan.co.th`
- `legacy.local`
- `todo.namnan.co.th`
- `tt2026online-v1.sj88ai.com`
- `tt2026online-v3.sj88ai.com`
- `www.class.lnwsj.com`

## Source Webs

- `/etc/caddy`
- `/home/aiagent/Documents/Ai`
- `110.164.146.205`
- `:80/:443`
- `AGENTS.md`
- `AI`
- `API`
- `App`
- `Caddy`
- `Dev`
- `Full`
- `Readme.md`
- `WORK_SCHEMA.md`
- `Work`
- `Work/ai_work_app.py`
- `admin`
- `ai_full_dev.py`
- `ai_work_reports/topic_timeline`
- `data.json`
- `index.html`
- `local`
- `server`
- `source.example.test`
- `todo.sj88ai.com`
- `topic_timeline.py`
- `tree`
- `working`

## Target Webs

- `/home/aiagent/Documents/Ai`
- `SSL/route`
- `Work`
- `ai_work_app`
- `class.lnwsj.com`
- `fb.namnan.co.th`
- `for`
- `git`
- `hostnames`
- `in`
- `inventory`
- `legacy.local`
- `local`
- `machine`
- `main`
- `on`
- `program`
- `repository`
- `target.example.test`
- `this`
- `todo.namnan.co.th`
- `todo.sj88ai.com`
- `topic_timeline`
- `tt2026online-v1.sj88ai.com`
- `tt2026online-v3.sj88ai.com`
- `www.class.lnwsj.com`

## Projects

- `Ai Agent Full Dev`
- `Audit`
- `P0`
- `P1`
- `P2`
- `P3`
- `P4`
- `P5`
- `P6`
- `RULE`
- `VPSPro`
- `VPSPro Migration`
- `class.lnwsj.com`
- `fb.namnan.co.th`
- `legacy-project`
- `lnwsj.com`
- `plans`
- `timesheet app`
- `todo-namnan-v1`
- `todo.namnan.co.th`
- `vpspro-migration`
- `www.class.lnwsj.com`

## Web Context: Source / Target / Requirement / Cautions

| kind | id | status | source_web | target_web | requirement | cautions | title |
| --- | --- | --- | --- | --- | --- | --- | --- |
| activities | 1 | done |  | legacy.local | ลงแผนติดตั้ง P0-P6 เข้า Timesheet App และเปิดระบบติดตามสถานะ |  | ลงแผนติดตั้ง P0-P6 เข้า Timesheet App และเปิดระบบติดตามสถานะ |
| activities | 2 | done |  | legacy.local | กำหนดกติกาในแอป: อัปเดตสถานะและลงเวลา Timesheet ทุกงาน |  | กำหนดกติกาในแอป: อัปเดตสถานะและลงเวลา Timesheet ทุกงาน |
| activities | 3 | done |  | legacy.local | P0 complete: system updated + timezone set + UFW enabled |  | P0 complete: system updated + timezone set + UFW enabled |
| activities | 4 | done |  | legacy.local | P1 complete: base tools installed |  | P1 complete: base tools installed |
| activities | 5 | done |  | legacy.local | P2 complete: nginx+certbot installed, nginx active on :80, ufw open 80/443 |  | P2 complete: nginx+certbot installed, nginx active on :80, ufw open 80/443 |
| activities | 6 | done |  | legacy.local | P3 complete: php8.3-fpm stack installed and active |  | P3 complete: php8.3-fpm stack installed and active |
| activities | 7 | done |  | legacy.local | P4 complete: mysql+postgres installed, baseline hardening applied |  | P4 complete: mysql+postgres installed, baseline hardening applied |
| activities | 8 | done |  | legacy.local | P5 complete: python runtime + build tools + node/npm + pm2 installed |  | P5 complete: python runtime + build tools + node/npm + pm2 installed |
| activities | 9 | done |  | legacy.local | P6 complete: systemd templates + logrotate + backup cron + standard dirs created |  | P6 complete: systemd templates + logrotate + backup cron + standard dirs created |
| activities | 10 | done |  | legacy.local | Validation complete: viewer online and server stack verified |  | Validation complete: viewer online and server stack verified |
| activities | 11 | done |  | legacy.local | Viewer updated: Project Identity aligned to Notion operating rules |  | Viewer updated: Project Identity aligned to Notion operating rules |
| activities | 12 | done |  | legacy.local | Detailed runtime check complete: Python + Node stacks on 157.85.98.240 |  | Detailed runtime check complete: Python + Node stacks on 157.85.98.240 |
| activities | 13 | done |  | legacy.local | Standardized Python/Node baseline: Node upgraded to 22 LTS and common service model verified |  | Standardized Python/Node baseline: Node upgraded to 22 LTS and common service model verified |
| activities | 14 | done |  | legacy.local | Post-install audit complete: remaining actions identified |  | Post-install audit complete: remaining actions identified |
| activities | 15 | done |  | legacy.local | Reboot completed on 157.85.98.240 and post-boot services healthy |  | Reboot completed on 157.85.98.240 and post-boot services healthy |
| activities | 16 | done |  | class.lnwsj.com | Planned class.lnwsj.com pre-cutover readiness checklist |  | Planned class.lnwsj.com pre-cutover readiness checklist |
| activities | 17 | done |  | class.lnwsj.com | Prepared maintenance index.html on 157.85.98.240 for class.lnwsj.com cutover |  | Prepared maintenance index.html on 157.85.98.240 for class.lnwsj.com cutover |
| activities | 18 | done |  | legacy.local | Created Cloudflare DNS import zone file for lnwsj.com (44 records) |  | Created Cloudflare DNS import zone file for lnwsj.com (44 records) |
| activities | 19 | done |  | class.lnwsj.com | Copied class.lnwsj.com data from old server to 157.85.98.240 without deleting source |  | Copied class.lnwsj.com data from old server to 157.85.98.240 without deleting source |
| activities | 20 | done |  | class.lnwsj.com | Issued Let's Encrypt SSL on new origin for class.lnwsj.com |  | Issued Let's Encrypt SSL on new origin for class.lnwsj.com |
| activities | 21 | done |  | class.lnwsj.com | Ran post-cutover smoke test for class.lnwsj.com |  | Ran post-cutover smoke test for class.lnwsj.com |
| activities | 22 | done |  | class.lnwsj.com | Enabled 24h cutover monitoring and rollback trigger for class.lnwsj.com |  | Enabled 24h cutover monitoring and rollback trigger for class.lnwsj.com |
| activities | 23 | done |  | class.lnwsj.com | Rerun smoke test closeout for class.lnwsj.com |  | Rerun smoke test closeout for class.lnwsj.com |
| activities | 24 | done |  | class.lnwsj.com | บันทึก Checklist ย้ายระบบแล้ว (26-05-2026) |  | บันทึก Checklist ย้ายระบบแล้ว (26-05-2026) |
| activities | 25 | done |  | legacy.local | Deep full-system test + screenshot report รอบละเอียด |  | Deep full-system test + screenshot report รอบละเอียด |
| activities | 26 | done |  | legacy.local | วิเคราะห์สาเหตุเพจโหลดช้า: แยก networkidle vs load |  | วิเคราะห์สาเหตุเพจโหลดช้า: แยก networkidle vs load |
| activities | 27 | done |  | class.lnwsj.com | ปรับ Viewer: เพิ่มฟิลเตอร์ site/domain และแสดง activities บนบอร์ด |  | ปรับ Viewer: เพิ่มฟิลเตอร์ site/domain และแสดง activities บนบอร์ด |
| activities | 28 | done |  | legacy.local | เพิ่ม metadata: machine/program/model/version ใน activities |  | เพิ่ม metadata: machine/program/model/version ใน activities |
| activities | 29 | done |  | todo.namnan.co.th | [V1 Deploy] todo.namnan.co.th production deploy complete |  | [V1 Deploy] todo.namnan.co.th production deploy complete |
| activities | 30 | done |  | todo.namnan.co.th | [V1.1 Deploy] activity metadata dropdown suggestions enabled |  | [V1.1 Deploy] activity metadata dropdown suggestions enabled |
| activities | 31 | done |  | todo.namnan.co.th | [P0 Guardrails] Enforced required fields, Definition of Done, and risk alert dashboard |  | [P0 Guardrails] Enforced required fields, Definition of Done, and risk alert dashboard |
| activities | 32 | done |  | todo.namnan.co.th | [Backfill Tool] Apply minimum metadata for legacy records |  | [Backfill Tool] Apply minimum metadata for legacy records |
| activities | 33 | done |  | todo.namnan.co.th | [Risk Fix] TODO assignee mapping corrected in risk engine |  | [Risk Fix] TODO assignee mapping corrected in risk engine |
| activities | 34 | done |  | todo.namnan.co.th | [V1.2] Added export APIs portfolio drilldown filters |  | [V1.2] Added export APIs portfolio drilldown filters |
| activities | 35 | done |  | todo.namnan.co.th | [V1.3] Executive dashboard with charts (trend, CFD, lane, owner pressure) |  | [V1.3] Executive dashboard with charts (trend, CFD, lane, owner pressure) |
| activities | 36 | done |  | todo.namnan.co.th | [V1.4] Executive advanced charts: Risk Heatmap Portfolio Compare |  | [V1.4] Executive advanced charts: Risk Heatmap Portfolio Compare |
| activities | 37 | done |  | todo.namnan.co.th | [V1.5] Executive adds WIP Aging Owner Throughput charts |  | [V1.5] Executive adds WIP Aging Owner Throughput charts |
| activities | 38 | done |  | todo.namnan.co.th | Deploy security hardening update to todo-timesheet-v1 |  | Deploy security hardening update to todo-timesheet-v1 |
| activities | 39 | done |  | todo.namnan.co.th | Finalize deploy: health metadata + Notion-style docs structure |  | Finalize deploy: health metadata + Notion-style docs structure |
| activities | 40 | done |  | todo.namnan.co.th | prod token verify |  | prod token verify |
| activities | 41 | in_progress |  | todo.namnan.co.th | รับมาตรฐานการบันทึกและเริ่มใช้งาน Todo API |  | รับมาตรฐานการบันทึกและเริ่มใช้งาน Todo API |
| activities | 42 | in_progress |  | todo.namnan.co.th | กำลังทดสอบ v3 แบบ 10 รอบพร้อมตรวจ parallel/GPU/correctness |  | กำลังทดสอบ v3 แบบ 10 รอบพร้อมตรวจ parallel/GPU/correctness |
| activities | 43 | in_progress |  | todo.namnan.co.th | แก้ไข machine_name ให้ตรงสเปกจริงของเครื่องปัจจุบัน |  | แก้ไข machine_name ให้ตรงสเปกจริงของเครื่องปัจจุบัน |
| activities | 44 | in_progress |  | todo.namnan.co.th | ยืนยันใช้งาน Todo API ตามมาตรฐานบังคับล่าสุด |  | ยืนยันใช้งาน Todo API ตามมาตรฐานบังคับล่าสุด |
| activities | 45 | done |  | todo.namnan.co.th | ตั้งค่า repo ให้ใช้ AI Full Dev API เท่านั้น |  | ตั้งค่า repo ให้ใช้ AI Full Dev API เท่านั้น |
| activities | 46 | done |  | todo.namnan.co.th | v3 parallel test 10 rounds complete (pass 10/10) |  | v3 parallel test 10 rounds complete (pass 10/10) |
| activities | 47 | done |  | todo.namnan.co.th | ส่งอ้างอิงโค้ดรายไฟล์/รายบรรทัด: single-job + parallel ffmpeg + anti-miss controls |  | ส่งอ้างอิงโค้ดรายไฟล์/รายบรรทัด: single-job + parallel ffmpeg + anti-miss controls |
| activities | 48 | in_progress |  | todo.namnan.co.th | เริ่มงาน: ยืนยันมาตรฐานการบันทึก start/end และปรับรายละเอียดตามจริง |  | เริ่มงาน: ยืนยันมาตรฐานการบันทึก start/end และปรับรายละเอียดตามจริง |
| activities | 49 | done |  | todo.namnan.co.th | จบงาน: ยืนยันใช้งาน todo.namnan.co.th เท่านั้นและล็อกฟิลด์บังคับครบ |  | จบงาน: ยืนยันใช้งาน todo.namnan.co.th เท่านั้นและล็อกฟิลด์บังคับครบ |
| activities | 50 | in_progress |  | todo.namnan.co.th | เริ่มงาน: ปรับ AI AutoCut ให้คิวทีละงาน + GPU ขนาน + split ตามไฟล์อัปเสร็จทันที |  | เริ่มงาน: ปรับ AI AutoCut ให้คิวทีละงาน + GPU ขนาน + split ตามไฟล์อัปเสร็จทันที |
| activities | 51 | in_progress |  | todo.namnan.co.th | ปรับ v3 upload->split แบบทันที + GPU parallel tmp1..tmpN |  | ปรับ v3 upload->split แบบทันที + GPU parallel tmp1..tmpN |
| activities | 52 | completed |  | todo.namnan.co.th | จบงาน v3 upload-presplit parallel patch |  | จบงาน v3 upload-presplit parallel patch |
| activities | 53 | in_progress |  | todo.namnan.co.th | เริ่ม stress test v3 10 รอบ |  | เริ่ม stress test v3 10 รอบ |
| activities | 54 | completed |  | todo.namnan.co.th | จบ stress test v3 10 รอบ |  | จบ stress test v3 10 รอบ |
| activities | 55 | in_progress |  | todo.namnan.co.th | เริ่มเทสเทียบ v1 vs v3 อย่างละ 10 รอบ |  | เริ่มเทสเทียบ v1 vs v3 อย่างละ 10 รอบ |
| activities | 56 | done |  | todo.namnan.co.th | สรุปเทส v3 10 รอบ เทียบ v1 10 รอบ |  | สรุปเทส v3 10 รอบ เทียบ v1 10 รอบ |
| activities | 57 | in_progress |  | todo.namnan.co.th | เริ่มทำรายงาน HTML รายรอบ v1 vs v3 |  | เริ่มทำรายงาน HTML รายรอบ v1 vs v3 |
| activities | 58 | done |  | todo.namnan.co.th | start: generate per-file markdown knowledge notes |  | start: generate per-file markdown knowledge notes |
| activities | 59 | done |  | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com | ส่งรายงาน HTML รายละเอียด v1 vs v3 ครบหลักฐาน |  | ส่งรายงาน HTML รายละเอียด v1 vs v3 ครบหลักฐาน |
| activities | 60 | done |  | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com | อัปเดตกติกา log: ใช้ project/site ตาม context จริง |  | อัปเดตกติกา log: ใช้ project/site ตาม context จริง |
| activities | 61 | done |  | todo.namnan.co.th | start: improve AI Full Dev search and report system |  | start: improve AI Full Dev search and report system |
| activities | 62 | done |  | todo.namnan.co.th | สรุปงานตามเวลาและหัวข้อที่คุย |  | สรุปงานตามเวลาและหัวข้อที่คุย |
| activities | 63 | done |  | todo.namnan.co.th | start: build topic-hour timeline viewer |  | start: build topic-hour timeline viewer |
| activities | 64 | done | AGENTS.md,Readme.md,AI Full Dev API | todo.namnan.co.th | AI must record and answer source website, target website, requirement, and cautions for web work | legacy records may have blank source_web and use site/title/details fallback | start: add source-target requirements caution fields |
| activities | 65 | done | source.example.test | target.example.test | AI can answer source and target site plus requirement and cautions | test record only | selftest: work context fields |
| activities | 66 | in_progress |  | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com | เริ่มทำกราฟเทียบเวลา v1 vs v3 |  | เริ่มทำกราฟเทียบเวลา v1 vs v3 |
| activities | 67 | done | ai_work_reports/topic_timeline,index.html,data.json | local topic_timeline program | ทดสอบเปิดโปรแกรมที่ทำจริงและแคปรูปการทำงานอย่างละเอียด | screenshots/report are read-only evidence snapshots; AI Full Dev API remains source-of-truth | start: test and screenshot topic timeline program |
| activities | 68 | done |  | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com | ส่งรายงานกราฟเทียบเวลา v1 vs v3 |  | ส่งรายงานกราฟเทียบเวลา v1 vs v3 |
| activities | 69 | done | AGENTS.md,Readme.md,WORK_SCHEMA.md,ai_full_dev.py,topic_timeline.py | local ai_work_app in /home/aiagent/Documents/Ai Work | มีแอปจริงในโฟลเดอร์นี้สำหรับเปิดดู/refresh/ให้ AI อ่านเขียน ไม่ใช่แค่ static report | app is local wrapper; AI Full Dev API remains source-of-truth | start: build local AI Work app in repo |
| activities | 70 | done | local AI Work App | todo.namnan.co.th | AI Work App can write activity records through AI Full Dev API | test record only; source-of-truth remains AI Full Dev API | selftest: AI Work App write endpoint |
| activities | 71 | done | todo.sj88ai.com,110.164.146.205,/home/aiagent/Documents/Ai Work/ai_work_app.py | todo.sj88ai.com | ให้คนอื่นเข้าใช้ AI Work App ผ่าน todo.sj88ai.com ได้ | ต้องไม่ทับ service ที่ถือ port 80/443 อยู่; source-of-truth ยังเป็น AI Full Dev API | start: publish AI Work App on todo.sj88ai.com |
| activities | 72 | done | todo.sj88ai.com | todo.sj88ai.com | public read works and write requires token | test record only; source-of-truth remains AI Full Dev API | selftest: public AI Work App write token guard |
| activities | 73 | done |  | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com | คอมมิตรายงานกราฟและหลักฐาน v1 vs v3 |  | คอมมิตรายงานกราฟและหลักฐาน v1 vs v3 |
| activities | 74 | done | /home/aiagent/Documents/Ai Work working tree | git repository main | commit current AI Work repo state so the work is saved in Git | do not commit .ai_full_dev.env or raw media/generated heavy outputs | start: commit AI Work repository |
| activities | 75 | done | local server 110.164.146.205, Caddy :80/:443, /etc/caddy, Caddy admin API | SSL/route inventory for hostnames on this machine | สรุป SSL ในเครื่องนี้และ path/route ว่าแต่ละโดเมนวิ่งไปไหน | ห้ามแก้ config ระหว่างตรวจ; ต้องแยก runtime config กับ persistent file config เพราะ Caddy route บางอันอาจ reload ผ่าน... | start: inspect local SSL and routing paths |
| debug_items | 1 | open |  | www.class.lnwsj.com | Post-cutover smoke: www.class.lnwsj.com TLS handshake fail + old-origin https rollback check fail |  | Post-cutover smoke: www.class.lnwsj.com TLS handshake fail + old-origin https rollback check fail |
| debug_items | 2 | blocked |  | www.class.lnwsj.com | www.class.lnwsj.com HTTPS handshake failure |  | www.class.lnwsj.com HTTPS handshake failure |
| plans | 1 | done |  | legacy.local | P0 เตรียมระบบ |  | P0 เตรียมระบบ |
| plans | 2 | done |  | legacy.local | P1 Base Tools |  | P1 Base Tools |
| plans | 3 | done |  | legacy.local | P2 Web + SSL |  | P2 Web + SSL |
| plans | 4 | done |  | legacy.local | P3 PHP Stack (Host-based) |  | P3 PHP Stack (Host-based) |
| plans | 5 | done |  | legacy.local | P4 Database (Host-based) |  | P4 Database (Host-based) |
| plans | 6 | done |  | legacy.local | P5 Python/Node Runtime (No Docker) |  | P5 Python/Node Runtime (No Docker) |
| plans | 7 | done |  | legacy.local | P6 งานระบบสำหรับ Production |  | P6 งานระบบสำหรับ Production |
| plans | 8 | done |  | legacy.local | กติกา: ทำข้อไหนเสร็จให้อัปเดตสถานะ + ลงเวลา Timesheet ทันที |  | กติกา: ทำข้อไหนเสร็จให้อัปเดตสถานะ + ลงเวลา Timesheet ทันที |
| plans | 9 | in_progress |  | class.lnwsj.com | Cutover Plan: class.lnwsj.com DNS switch to new server |  | Cutover Plan: class.lnwsj.com DNS switch to new server |
| todos | 1 | done |  | legacy.local | [P0] รัน apt update && apt upgrade -y |  | [P0] รัน apt update && apt upgrade -y |
| todos | 2 | done |  | legacy.local | [P0] ตั้ง timezone เป็น Asia/Bangkok |  | [P0] ตั้ง timezone เป็น Asia/Bangkok |
| todos | 3 | done |  | legacy.local | [P0] เปิด UFW อนุญาตพอร์ต 22/80/443 |  | [P0] เปิด UFW อนุญาตพอร์ต 22/80/443 |
| todos | 4 | done |  | legacy.local | [P1] ติดตั้ง base tools ตามลิสต์ |  | [P1] ติดตั้ง base tools ตามลิสต์ |
| todos | 5 | done |  | legacy.local | [P2] ติดตั้ง Nginx + Certbot |  | [P2] ติดตั้ง Nginx + Certbot |
| todos | 6 | done |  | legacy.local | [P2] ยืนยัน edge เดียวที่พอร์ต 80/443 |  | [P2] ยืนยัน edge เดียวที่พอร์ต 80/443 |
| todos | 7 | done |  | legacy.local | [P3] ติดตั้ง PHP 8.3 stack ครบ extension |  | [P3] ติดตั้ง PHP 8.3 stack ครบ extension |
| todos | 8 | blocked |  | fb.namnan.co.th | [P3] ประเมินความจำเป็น php8.1-fpm สำหรับ fb.namnan.co.th |  | [P3] ประเมินความจำเป็น php8.1-fpm สำหรับ fb.namnan.co.th |
| todos | 9 | done |  | legacy.local | [P4] ติดตั้ง MySQL + PostgreSQL |  | [P4] ติดตั้ง MySQL + PostgreSQL |
| todos | 10 | done |  | legacy.local | [P4] ทำ hardening ขั้นต้น DB ทั้งสองตัว |  | [P4] ทำ hardening ขั้นต้น DB ทั้งสองตัว |
| todos | 11 | done |  | legacy.local | [P5] ติดตั้ง Python runtime + build-essential |  | [P5] ติดตั้ง Python runtime + build-essential |
| todos | 12 | done |  | legacy.local | [P5] ติดตั้ง Node.js + npm + pm2 |  | [P5] ติดตั้ง Node.js + npm + pm2 |
| todos | 13 | done |  | legacy.local | [P6] สร้าง systemd service แยกต่อแอป |  | [P6] สร้าง systemd service แยกต่อแอป |
| todos | 14 | done |  | legacy.local | [P6] ตั้ง logrotate และ backup cron |  | [P6] ตั้ง logrotate และ backup cron |
| todos | 15 | done |  | legacy.local | [P6] สร้างโครงโฟลเดอร์ /srv/apps /srv/backups /var/log/apps |  | [P6] สร้างโครงโฟลเดอร์ /srv/apps /srv/backups /var/log/apps |
| todos | 16 | done |  | legacy.local | [P-Rule] ทุกครั้งที่ทำงานเสร็จ: update status + บันทึก activity เวลาเริ่ม/จบ |  | [P-Rule] ทุกครั้งที่ทำงานเสร็จ: update status + บันทึก activity เวลาเริ่ม/จบ |
| todos | 17 | done |  | legacy.local | [P0] ดำเนินการ reboot หลัง maintenance window (required by libc6/dbus) |  | [P0] ดำเนินการ reboot หลัง maintenance window (required by libc6/dbus) |
| todos | 18 | done |  | legacy.local | [P5-Optional] อัปเกรด Node.js เป็น v22 LTS (ตอนนี้ติดตั้ง v18 จาก apt) |  | [P5-Optional] อัปเกรด Node.js เป็น v22 LTS (ตอนนี้ติดตั้ง v18 จาก apt) |
| todos | 19 | todo |  | legacy.local | [Audit] ออก SSL จริงสำหรับทุกโดเมนที่จะย้าย (ตอนนี้ certbot ยังไม่มี cert) |  | [Audit] ออก SSL จริงสำหรับทุกโดเมนที่จะย้าย (ตอนนี้ certbot ยังไม่มี cert) |
| todos | 20 | todo |  | legacy.local | [Audit] ทดสอบ backup script รอบแรกและตรวจไฟล์ใน /srv/backups |  | [Audit] ทดสอบ backup script รอบแรกและตรวจไฟล์ใน /srv/backups |
| todos | 21 | todo |  | legacy.local | [Audit] ผูกแอปจริงเข้ากับ app-node@ / app-python@ (ตอนนี้ยังไม่มี instance) |  | [Audit] ผูกแอปจริงเข้ากับ app-node@ / app-python@ (ตอนนี้ยังไม่มี instance) |
| todos | 22 | todo |  | legacy.local | [Class-Cutover] ตั้ง freeze window และแจ้งช่วงงาน |  | [Class-Cutover] ตั้ง freeze window และแจ้งช่วงงาน |
| todos | 23 | done |  | legacy.local | [Class-Cutover] เก็บ inventory ต้นทาง (nginx, app path, cron, env, uploads) |  | [Class-Cutover] เก็บ inventory ต้นทาง (nginx, app path, cron, env, uploads) |
| todos | 24 | done |  | legacy.local | [Class-Cutover] Full backup DB + files + config จากต้นทาง |  | [Class-Cutover] Full backup DB + files + config จากต้นทาง |
| todos | 25 | done |  | legacy.local | [Class-Cutover] ทดสอบ restore backup บนเครื่องใหม่แบบแยกพื้นที่ |  | [Class-Cutover] ทดสอบ restore backup บนเครื่องใหม่แบบแยกพื้นที่ |
| todos | 26 | done |  | legacy.local | [Class-Cutover] ทดสอบ app readiness บนเครื่องใหม่ด้วย host override |  | [Class-Cutover] ทดสอบ app readiness บนเครื่องใหม่ด้วย host override |
| todos | 27 | done |  | legacy.local | [Class-Cutover] เตรียม SSL issuance (certbot) หลัง DNS ชี้เข้าเครื่องใหม่ |  | [Class-Cutover] เตรียม SSL issuance (certbot) หลัง DNS ชี้เข้าเครื่องใหม่ |
| todos | 28 | todo |  | legacy.local | [Class-Cutover] ลด TTL ล่วงหน้าและบันทึกค่า DNS เดิม |  | [Class-Cutover] ลด TTL ล่วงหน้าและบันทึกค่า DNS เดิม |
| todos | 29 | blocked |  | legacy.local | [Class-Cutover] เปลี่ยน DNS และรัน post-cutover smoke checklist |  | [Class-Cutover] เปลี่ยน DNS และรัน post-cutover smoke checklist |
| todos | 30 | doing |  | legacy.local | [Class-Cutover] ติดตาม 24 ชั่วโมงและกำหนด rollback trigger |  | [Class-Cutover] ติดตาม 24 ชั่วโมงและกำหนด rollback trigger |
| todos | 31 | blocked |  | class.lnwsj.com | Cloudflare lnwsj.com: adjust www.class DNS/proxy then re-issue SSL |  | Cloudflare lnwsj.com: adjust www.class DNS/proxy then re-issue SSL |
| todos | 32 | done |  | legacy.local | [Ops-Log] อัปเดต timesheet app: checklist + deep test + performance diagnosis |  | [Ops-Log] อัปเดต timesheet app: checklist + deep test + performance diagnosis |
| todos | 33 | done |  | todo.namnan.co.th | Deploy viewer.js debounce+initial-load fix to todo.namnan.co.th |  | Deploy viewer.js debounce+initial-load fix to todo.namnan.co.th |


## Topic Matches: web

| kind | id | score | status | project | site | source_web | target_web | requirement | title |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| activities | 64 | 25 | done | todo-namnan-v1 | todo.namnan.co.th | AGENTS.md,Readme.md,AI Full Dev API | todo.namnan.co.th | AI must record and answer source website, target website, requirement, and cautions for web work | start: add source-target requirements caution fields |
| debug_items | 1 | 15 | open | www.class.lnwsj.com | www.class.lnwsj.com |  | www.class.lnwsj.com | Post-cutover smoke: www.class.lnwsj.com TLS handshake fail + old-origin https rollback check fail | Post-cutover smoke: www.class.lnwsj.com TLS handshake fail + old-origin https rollback check fail |
| debug_items | 2 | 13 | blocked | www.class.lnwsj.com | www.class.lnwsj.com |  | www.class.lnwsj.com | www.class.lnwsj.com HTTPS handshake failure | www.class.lnwsj.com HTTPS handshake failure |
| activities | 18 | 9 | done | lnwsj.com | legacy.local |  | legacy.local | Created Cloudflare DNS import zone file for lnwsj.com (44 records) | Created Cloudflare DNS import zone file for lnwsj.com (44 records) |
| todos | 31 | 8 | blocked | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Cloudflare lnwsj.com: adjust www.class DNS/proxy then re-issue SSL | Cloudflare lnwsj.com: adjust www.class DNS/proxy then re-issue SSL |
| plans | 3 | 8 | done | legacy-project | legacy.local |  | legacy.local | P2 Web + SSL | P2 Web + SSL |
| activities | 71 | 7 | done | todo-namnan-v1 | todo.namnan.co.th | todo.sj88ai.com,110.164.146.205,/home/aiagent/Documents/Ai Work/ai_work_app.py | todo.sj88ai.com | ให้คนอื่นเข้าใช้ AI Work App ผ่าน todo.sj88ai.com ได้ | start: publish AI Work App on todo.sj88ai.com |
| activities | 27 | 7 | done | timesheet app | class.lnwsj.com |  | class.lnwsj.com | ปรับ Viewer: เพิ่มฟิลเตอร์ site/domain และแสดง activities บนบอร์ด | ปรับ Viewer: เพิ่มฟิลเตอร์ site/domain และแสดง activities บนบอร์ด |
| activities | 67 | 6 | done | todo-namnan-v1 | todo.namnan.co.th | ai_work_reports/topic_timeline,index.html,data.json | local topic_timeline program | ทดสอบเปิดโปรแกรมที่ทำจริงและแคปรูปการทำงานอย่างละเอียด | start: test and screenshot topic timeline program |
| activities | 21 | 6 | done | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Ran post-cutover smoke test for class.lnwsj.com | Ran post-cutover smoke test for class.lnwsj.com |
| activities | 75 | 5 | done | todo-namnan-v1 | todo.namnan.co.th | local server 110.164.146.205, Caddy :80/:443, /etc/caddy, Caddy admin API | SSL/route inventory for hostnames on this machine | สรุป SSL ในเครื่องนี้และ path/route ว่าแต่ละโดเมนวิ่งไปไหน | start: inspect local SSL and routing paths |
| activities | 69 | 5 | done | todo-namnan-v1 | todo.namnan.co.th | AGENTS.md,Readme.md,WORK_SCHEMA.md,ai_full_dev.py,topic_timeline.py | local ai_work_app in /home/aiagent/Documents/Ai Work | มีแอปจริงในโฟลเดอร์นี้สำหรับเปิดดู/refresh/ให้ AI อ่านเขียน ไม่ใช่แค่ static report | start: build local AI Work app in repo |
| plans | 9 | 5 | in_progress | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Cutover Plan: class.lnwsj.com DNS switch to new server | Cutover Plan: class.lnwsj.com DNS switch to new server |
| todos | 19 | 5 | todo | Audit | legacy.local |  | legacy.local | [Audit] ออก SSL จริงสำหรับทุกโดเมนที่จะย้าย (ตอนนี้ certbot ยังไม่มี cert) | [Audit] ออก SSL จริงสำหรับทุกโดเมนที่จะย้าย (ตอนนี้ certbot ยังไม่มี cert) |
| activities | 70 | 4 | done | todo-namnan-v1 | todo.namnan.co.th | local AI Work App | todo.namnan.co.th | AI Work App can write activity records through AI Full Dev API | selftest: AI Work App write endpoint |
| activities | 65 | 4 | done | todo-namnan-v1 | todo.namnan.co.th | source.example.test | target.example.test | AI can answer source and target site plus requirement and cautions | selftest: work context fields |
| activities | 5 | 4 | done | VPSPro Migration | legacy.local |  | legacy.local | P2 complete: nginx+certbot installed, nginx active on :80, ufw open 80/443 | P2 complete: nginx+certbot installed, nginx active on :80, ufw open 80/443 |
| activities | 74 | 3 | done | todo-namnan-v1 | todo.namnan.co.th | /home/aiagent/Documents/Ai Work working tree | git repository main | commit current AI Work repo state so the work is saved in Git | start: commit AI Work repository |
| activities | 72 | 3 | done | todo-namnan-v1 | todo.namnan.co.th | todo.sj88ai.com | todo.sj88ai.com | public read works and write requires token | selftest: public AI Work App write token guard |
| activities | 60 | 3 | done | Ai Agent Full Dev | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com |  | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com | อัปเดตกติกา log: ใช้ project/site ตาม context จริง | อัปเดตกติกา log: ใช้ project/site ตาม context จริง |
| activities | 23 | 3 | done | VPSPro | class.lnwsj.com |  | class.lnwsj.com | Rerun smoke test closeout for class.lnwsj.com | Rerun smoke test closeout for class.lnwsj.com |
| todos | 27 | 3 | done | plans | legacy.local |  | legacy.local | [Class-Cutover] เตรียม SSL issuance (certbot) หลัง DNS ชี้เข้าเครื่องใหม่ | [Class-Cutover] เตรียม SSL issuance (certbot) หลัง DNS ชี้เข้าเครื่องใหม่ |
| activities | 20 | 3 | done | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Issued Let's Encrypt SSL on new origin for class.lnwsj.com | Issued Let's Encrypt SSL on new origin for class.lnwsj.com |
| activities | 16 | 3 | done | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Planned class.lnwsj.com pre-cutover readiness checklist | Planned class.lnwsj.com pre-cutover readiness checklist |
| todos | 28 | 3 | todo | plans | legacy.local |  | legacy.local | [Class-Cutover] ลด TTL ล่วงหน้าและบันทึกค่า DNS เดิม | [Class-Cutover] ลด TTL ล่วงหน้าและบันทึกค่า DNS เดิม |
| activities | 45 | 2 | done | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | ตั้งค่า repo ให้ใช้ AI Full Dev API เท่านั้น | ตั้งค่า repo ให้ใช้ AI Full Dev API เท่านั้น |
| activities | 29 | 2 | done | todo.namnan.co.th | todo.namnan.co.th |  | todo.namnan.co.th | [V1 Deploy] todo.namnan.co.th production deploy complete | [V1 Deploy] todo.namnan.co.th production deploy complete |
| activities | 26 | 2 | done | vpspro-migration | legacy.local |  | legacy.local | วิเคราะห์สาเหตุเพจโหลดช้า: แยก networkidle vs load | วิเคราะห์สาเหตุเพจโหลดช้า: แยก networkidle vs load |
| todos | 29 | 2 | blocked | plans | legacy.local |  | legacy.local | [Class-Cutover] เปลี่ยน DNS และรัน post-cutover smoke checklist | [Class-Cutover] เปลี่ยน DNS และรัน post-cutover smoke checklist |
| todos | 23 | 2 | done | plans | legacy.local |  | legacy.local | [Class-Cutover] เก็บ inventory ต้นทาง (nginx, app path, cron, env, uploads) | [Class-Cutover] เก็บ inventory ต้นทาง (nginx, app path, cron, env, uploads) |
| activities | 17 | 2 | done | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Prepared maintenance index.html on 157.85.98.240 for class.lnwsj.com cutover | Prepared maintenance index.html on 157.85.98.240 for class.lnwsj.com cutover |
| todos | 5 | 2 | done | P2 | legacy.local |  | legacy.local | [P2] ติดตั้ง Nginx + Certbot | [P2] ติดตั้ง Nginx + Certbot |
| activities | 61 | 1 | done | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | start: improve AI Full Dev search and report system | start: improve AI Full Dev search and report system |
| activities | 49 | 1 | done | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | จบงาน: ยืนยันใช้งาน todo.namnan.co.th เท่านั้นและล็อกฟิลด์บังคับครบ | จบงาน: ยืนยันใช้งาน todo.namnan.co.th เท่านั้นและล็อกฟิลด์บังคับครบ |
| activities | 31 | 1 | done | todo.namnan.co.th | todo.namnan.co.th |  | todo.namnan.co.th | [P0 Guardrails] Enforced required fields, Definition of Done, and risk alert dashboard | [P0 Guardrails] Enforced required fields, Definition of Done, and risk alert dashboard |
| activities | 30 | 1 | done | todo.namnan.co.th | todo.namnan.co.th |  | todo.namnan.co.th | [V1.1 Deploy] activity metadata dropdown suggestions enabled | [V1.1 Deploy] activity metadata dropdown suggestions enabled |
| todos | 26 | 1 | done | plans | legacy.local |  | legacy.local | [Class-Cutover] ทดสอบ app readiness บนเครื่องใหม่ด้วย host override | [Class-Cutover] ทดสอบ app readiness บนเครื่องใหม่ด้วย host override |
| todos | 24 | 1 | done | plans | legacy.local |  | legacy.local | [Class-Cutover] Full backup DB + files + config จากต้นทาง | [Class-Cutover] Full backup DB + files + config จากต้นทาง |
| activities | 19 | 1 | done | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Copied class.lnwsj.com data from old server to 157.85.98.240 without deleting source | Copied class.lnwsj.com data from old server to 157.85.98.240 without deleting source |
| todos | 22 | 1 | todo | plans | legacy.local |  | legacy.local | [Class-Cutover] ตั้ง freeze window และแจ้งช่วงงาน | [Class-Cutover] ตั้ง freeze window และแจ้งช่วงงาน |
| activities | 15 | 1 | done | VPSPro Migration | legacy.local |  | legacy.local | Reboot completed on 157.85.98.240 and post-boot services healthy | Reboot completed on 157.85.98.240 and post-boot services healthy |


## Open Items

| kind | id | status | project | site | source_web | target_web | requirement | cautions | title |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| activities | 41 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | รับมาตรฐานการบันทึกและเริ่มใช้งาน Todo API |  | รับมาตรฐานการบันทึกและเริ่มใช้งาน Todo API |
| activities | 42 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | กำลังทดสอบ v3 แบบ 10 รอบพร้อมตรวจ parallel/GPU/correctness |  | กำลังทดสอบ v3 แบบ 10 รอบพร้อมตรวจ parallel/GPU/correctness |
| activities | 43 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | แก้ไข machine_name ให้ตรงสเปกจริงของเครื่องปัจจุบัน |  | แก้ไข machine_name ให้ตรงสเปกจริงของเครื่องปัจจุบัน |
| activities | 44 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | ยืนยันใช้งาน Todo API ตามมาตรฐานบังคับล่าสุด |  | ยืนยันใช้งาน Todo API ตามมาตรฐานบังคับล่าสุด |
| activities | 48 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | เริ่มงาน: ยืนยันมาตรฐานการบันทึก start/end และปรับรายละเอียดตามจริง |  | เริ่มงาน: ยืนยันมาตรฐานการบันทึก start/end และปรับรายละเอียดตามจริง |
| activities | 50 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | เริ่มงาน: ปรับ AI AutoCut ให้คิวทีละงาน + GPU ขนาน + split ตามไฟล์อัปเสร็จทันที |  | เริ่มงาน: ปรับ AI AutoCut ให้คิวทีละงาน + GPU ขนาน + split ตามไฟล์อัปเสร็จทันที |
| activities | 51 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | ปรับ v3 upload->split แบบทันที + GPU parallel tmp1..tmpN |  | ปรับ v3 upload->split แบบทันที + GPU parallel tmp1..tmpN |
| activities | 53 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | เริ่ม stress test v3 10 รอบ |  | เริ่ม stress test v3 10 รอบ |
| activities | 55 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | เริ่มเทสเทียบ v1 vs v3 อย่างละ 10 รอบ |  | เริ่มเทสเทียบ v1 vs v3 อย่างละ 10 รอบ |
| activities | 57 | in_progress | todo-namnan-v1 | todo.namnan.co.th |  | todo.namnan.co.th | เริ่มทำรายงาน HTML รายรอบ v1 vs v3 |  | เริ่มทำรายงาน HTML รายรอบ v1 vs v3 |
| activities | 66 | in_progress | Ai Agent Full Dev | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com |  | tt2026online-v1.sj88ai.com,tt2026online-v3.sj88ai.com | เริ่มทำกราฟเทียบเวลา v1 vs v3 |  | เริ่มทำกราฟเทียบเวลา v1 vs v3 |
| debug_items | 1 | open | www.class.lnwsj.com | www.class.lnwsj.com |  | www.class.lnwsj.com | Post-cutover smoke: www.class.lnwsj.com TLS handshake fail + old-origin https rollback check fail |  | Post-cutover smoke: www.class.lnwsj.com TLS handshake fail + old-origin https rollback check fail |
| debug_items | 2 | blocked | www.class.lnwsj.com | www.class.lnwsj.com |  | www.class.lnwsj.com | www.class.lnwsj.com HTTPS handshake failure |  | www.class.lnwsj.com HTTPS handshake failure |
| plans | 9 | in_progress | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Cutover Plan: class.lnwsj.com DNS switch to new server |  | Cutover Plan: class.lnwsj.com DNS switch to new server |
| todos | 8 | blocked | fb.namnan.co.th | fb.namnan.co.th |  | fb.namnan.co.th | [P3] ประเมินความจำเป็น php8.1-fpm สำหรับ fb.namnan.co.th |  | [P3] ประเมินความจำเป็น php8.1-fpm สำหรับ fb.namnan.co.th |
| todos | 19 | todo | Audit | legacy.local |  | legacy.local | [Audit] ออก SSL จริงสำหรับทุกโดเมนที่จะย้าย (ตอนนี้ certbot ยังไม่มี cert) |  | [Audit] ออก SSL จริงสำหรับทุกโดเมนที่จะย้าย (ตอนนี้ certbot ยังไม่มี cert) |
| todos | 20 | todo | Audit | legacy.local |  | legacy.local | [Audit] ทดสอบ backup script รอบแรกและตรวจไฟล์ใน /srv/backups |  | [Audit] ทดสอบ backup script รอบแรกและตรวจไฟล์ใน /srv/backups |
| todos | 21 | todo | Audit | legacy.local |  | legacy.local | [Audit] ผูกแอปจริงเข้ากับ app-node@ / app-python@ (ตอนนี้ยังไม่มี instance) |  | [Audit] ผูกแอปจริงเข้ากับ app-node@ / app-python@ (ตอนนี้ยังไม่มี instance) |
| todos | 22 | todo | plans | legacy.local |  | legacy.local | [Class-Cutover] ตั้ง freeze window และแจ้งช่วงงาน |  | [Class-Cutover] ตั้ง freeze window และแจ้งช่วงงาน |
| todos | 28 | todo | plans | legacy.local |  | legacy.local | [Class-Cutover] ลด TTL ล่วงหน้าและบันทึกค่า DNS เดิม |  | [Class-Cutover] ลด TTL ล่วงหน้าและบันทึกค่า DNS เดิม |
| todos | 29 | blocked | plans | legacy.local |  | legacy.local | [Class-Cutover] เปลี่ยน DNS และรัน post-cutover smoke checklist |  | [Class-Cutover] เปลี่ยน DNS และรัน post-cutover smoke checklist |
| todos | 30 | doing | plans | legacy.local |  | legacy.local | [Class-Cutover] ติดตาม 24 ชั่วโมงและกำหนด rollback trigger |  | [Class-Cutover] ติดตาม 24 ชั่วโมงและกำหนด rollback trigger |
| todos | 31 | blocked | class.lnwsj.com | class.lnwsj.com |  | class.lnwsj.com | Cloudflare lnwsj.com: adjust www.class DNS/proxy then re-issue SSL |  | Cloudflare lnwsj.com: adjust www.class DNS/proxy then re-issue SSL |


## AI Usage

- This report is a read-only snapshot from AI Full Dev API.
- Source of truth remains `https://todo.namnan.co.th` and `ai_full_dev.py` API calls.
- For web work, read `source_web`, `target_web`, `requirement`, and `cautions` before acting.
- Regenerate before answering counts:

```bash
python3 ai_full_dev.py report --topic ssl --min-score 2 --out ai_work_reports/latest.md
python3 repo_search.py index
```
