v9.2.1: re-enable ms-word on all platforms + real filenames in URLs

User clarified: with the new open-link URLs (https + no query string +
ending .docx), pressing the button DID open the file in Word 16.101+
on their Mac — only the OLD URL forms (http, query strings) were
ignored. The previous disable-on-Mac was based on terminal tests that
hit the old forms / cold-start races, so it removed working behavior.

- useVersionOpen: fireWordScheme = openInWord !== 'off' (default ''
  and 'on' fire on ALL platforms; only explicit 'off' is download-only)
- Notice updated: "กำลังเปิดไฟล์ใน Word ให้อัตโนมัติ — หากไม่เปิด
  ไฟล์อยู่ที่โฟลเดอร์ Downloads แล้ว" (covers cold-start drop)
- Docs corrected with v9.2.1 header (old forms were the broken ones;
  new form confirmed working via real usage) + correction markers on
  the v9.2 test record + CLAUDE.md rule 13 rewritten
- web 60/60 + build; QA reviewer FAIL round 1 (5 doc/comment minors,
  all fixed) → PASS round 2

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
Suphonchai Phoonsawat 2026-09-10 14:33:12 +07:00
parent f4b2ff9d28
commit 4f54af4e24
7 changed files with 30 additions and 29 deletions

View file

@ -178,7 +178,7 @@ QA reviewer: **PASS**, 2 rounds, 3 findings fixed (build compatibility, pending
| `open-word:` / `launch-word:` scheme | ❌ ไม่ยิง request |
| `open -a "Microsoft Word" /tmp/.../v1.docx` | ✅ เปิดได้ (แต่เรียกจากเว็บไม่ได้ — browser sandbox + backend รัน server กลางใน production) |
→ ข้อสรุป: **download-first** คือกลไกเดียวที่ deterministic ทุกเครื่อง (commit ตามด้วย v9.2); `ms-word:ofe` เหลือเป็น best-effort ควบคู่
→ ข้อสรุปตอนนั้น (v9.2): download-first เป็นกลไกหลัก + `ms-word:ofe` เป็น best-effort ควบคู่ · **แก้ไขความเข้าใจ (v9.2.1):** การใช้งานจริงหลัง deploy v9.2 ยืนยันว่า open-link แบบใหม่ (https + ไม่มี query + จบ .docx ท้าย path) **เปิดใน Word 16.101+ ได้จริงผ่าน browser** (ที่พังคือ URL แบบเก่า http/มี query เท่านั้น — การทดสอบผ่าน terminal `open` ก่อนหน้าให้ผลลบเพราะทดสอบ URL รูปแบบเก่า/ตอน cold-start) default จึงกลับมายิง ms-word ทุกแพลตฟอร์ม + ดาวน์โหลดสำรองทันทีทุกครั้ง
QA reviewer: **PASS**, 2 rounds, 8 findings แก้ครบไม่มีที่ถูกปฏิเสธ (2026-09-10) — round 1: blocker `.at(-1)` ใน test ใหม่ตัดกับ tsconfig `lib: es2020` ทำ `addin npm run build` พัง (jest ไม่ type-check จึงรอดมา) + minors 4 (นับจำนวน test ผิดในตารางนี้, stale notices ระหว่างสองปุ่ม submit, AlertBox สำเร็จไม่ใช่ `type="success"`, `isTrackedDocument` ไม่มี production caller → เก็บไว้พร้อมหมายเหตุเหตุผล) · round 2: minors 2 + pre-existing 1 (หัวเอกสาร/สถานะเก่าใน acceptance-review, CLAUDE.md, implementation-plan header). ค้าง manual บน Word จริงตามรายการด้านบน.
@ -193,3 +193,5 @@ QA reviewer รอบ v9.2 (download-first + open-link): **PASS**, 1 round (2026
QA reviewer รอบ follow-up v9.2 (เลิกยิง ms-word บน Mac default + จดสูตร sideload): **PASS**, 1 round (2026-09-10) — minors 3: แก้ 2 (sync implementation plan กับ spec + ตัวเลข 60, comment เก่าใน create page) · ปฏิเสธ 1 พร้อมเหตุผล: ปุ่มยังชื่อ "เปิดใน Word" บน Mac ทั้งที่ตอนนี้=ดาวน์โหลด — notice หลังกดอธิบายชัดและชื่อปุ่มเดิมมาก่อนการเปลี่ยนนี้ เปลี่ยนชื่อกระทบ UX ที่ทีมคุ้นเคย เก็บเป็นข้อสังเกตไว้ก่อน (จะเปลี่ยนเมื่อมี feedback ผู้ใช้จริง)
QA reviewer รอบ v9.2.1 (ชื่อไฟล์จริงใน URL open-link): **PASS**, 1 round (2026-09-10) — user แจ้งได้แต่คำว่า "file" เพราะ v9.2 ตั้งท้าย URL เป็น file.docx ตายตัว · minors 2 แก้ครบ: sync spec changelog + เพิ่ม tests ป้องกัน (tampered stamp/templateId และสลับนามสกุล .docx↔.pdf บน version route ต้อง 404 — พบระหว่างเขียนว่า draft route ไม่ผูกชื่อท้ายกับลายเซ็นเพราะ format เป็น docx เสมอ จึงย้ายเคสนามสกุลไป version route ที่ format ผูกลายเซ็นจริง) · reviewer ยืนยัน URL name = disposition name เสมอ (คำนวณจาก source เดียวกัน) และ escaping ชื่อไทยผ่าน end-to-end
QA reviewer รอบ v9.2.1 re-enable (เปิด ms-word ทุก platform กลับ): **FAIL → แก้ครบ → PASS**, 2 rounds (2026-09-10) — round 1: minors 5 ทั้งหมดเป็น doc/comment ที่ขัดกับเรื่องที่แก้ (comment nuxt.config ยังบอกไม่ยิงบน Mac, spec header/heading v9.2 ยังพูดว่า "เมินทุกรูปแบบ" โดยไม่มีป้ายแก้ไข, implementation plan เขียนประวัติศาสตร์ใหม่ให้ v9.2, comment เก่าใน spec.ts) — โค้ดเองผ่านหมด (toggle logic fail-open, notice ตรงจริงทั้ง 3 ผลลัพธ์, tests ครบ matrix) · round 2: ตรวจซ้ำหลังแก้ — ผ่าน