Dùng AI viết tài liệu FDD: vì sao bị trả về và cách rà trước khi gửi
Dùng AI viết tài liệu FDD, GAP List, tin nhắn cho key user hay bị trả về vì chôn kết luận, giọng dev, dịch tên field. Bốn câu hỏi rà kèm ví dụ trước và sau.
Dùng AI viết tài liệu FDD thì bản nháp hay bị trả về vì bốn lỗi: kết luận nằm dưới đáy, giọng dev trong tài liệu khách ký, tên field bị dịch hoặc thay bằng thuật ngữ tự chế, và những câu không thêm dữ kiện nào. Danh sách từ cấm không bắt được bốn lỗi này. Phải rà bằng câu hỏi.
Tôi là functional consultant, phần kỹ thuật tự làm cùng AI. FDD, GAP List, Issue Log, email và tin nhắn cho key user tôi để AI viết nháp rồi sửa tay. Mỗi lần bị trả bài, tôi đặt bản AI viết cạnh bản tôi sửa và ghi lại chỗ khác nhau. Phần ghi chép đó giờ là skill công khai erp-doc-voice trên GitHub, gồm 37 nhóm dấu hiệu: 13 nhóm lấy từ trang Wikipedia:Signs of AI writing, 24 nhóm rút từ tài liệu dự án bị trả về.
Vì sao danh sách từ cấm không cứu được tài liệu#
Từ cấm chỉ là triệu chứng. Gốc của văn AI là mô hình kéo mọi câu về mức trung bình: chi tiết riêng của dự án bị thay bằng câu đúng với mọi dự án.
Bản AI viết:
Hệ thống cần cung cấp khả năng theo dõi tồn kho theo lô một cách hiệu quả, đảm bảo tính chính xác và kịp thời của dữ liệu, từ đó nâng cao hiệu quả quản lý kho.
Bản sửa:
Hệ thống theo dõi tồn kho theo Lot No. và hạn sử dụng. Khi xuất hàng, POS chặn lô đã quá hạn và gợi ý lô có hạn gần nhất.
Bỏ "một cách hiệu quả", "đảm bảo tính chính xác", "từ đó nâng cao hiệu quả" thì bản đầu gần như không còn gì. Tôi rà mọi đoạn bằng hai câu:
- Câu này thêm dữ kiện, con số, tên riêng, điều kiện hay hệ quả nào mà câu trước chưa có? Không có thì xóa.
- Dán nguyên đoạn này sang tài liệu của khách khác mà vẫn đúng? Thì viết lại.
Bốn câu hỏi rà FDD do AI viết trước khi gửi#
1. Câu đầu tiên đã là câu trả lời chưa?#
AI hay mở bằng bối cảnh, nguồn tham khảo, bảng số, rồi mới tới kết luận. Người đọc chỉ đọc một câu rồi bỏ thì câu đó phải đủ. Khi giải thích cách BC phân bổ item charge, bản nháp mở bằng câu dẫn code và phần lẻ 0,00001 ở dòng thứ hai. Bản sửa mở bằng: "Code không có bước dồn phần lẻ vào một dòng. Nó tính lần lượt từng dòng theo Line No., dòng cuối nhận nguyên phần còn lại." Bảng số xuống sau. Ví dụ này được viết đầy đủ trong bài phần lẻ khi phân bổ item charge rơi vào dòng nào.
2. Ai ký tài liệu này?#
GAP List và FDD gửi khách là tài liệu chức năng. Người ký là khách hàng, họ không cần biết có mấy hàm. Ba lỗi tôi bị bắt trong một GAP List về version công thức sản xuất:
| AI viết | Bản gửi khách |
|---|---|
| Cột Solution mở bằng "Codeunit Recipe Version Mgt. có ba hàm và một bảng trạng thái:" rồi liệt kê hàm | Thêm chức năng Xử lý version theo ngày, gồm action trên Recipe Card, bảng lịch sử và bảng trạng thái |
| Dẫn mã object vào cột Solution, kiểu "(Cod50104, Rep50105)" | Gọi tên chức năng người dùng thấy trên màn hình |
| "Quick Guide cho Data" nằm trong cột Solution | Chuyển sang kế hoạch triển khai, vì đó là tài liệu, không phải giải pháp phần mềm |
Quy tắc tôi áp cho FDD từ đó: không tên object kỹ thuật, không ID của object tự viết, không codeunit, procedure, event, tableextension. ID của object chuẩn BC thì giữ, ví dụ Purchase Header (38), vì key user và dev đều tra theo đó. Danh sách object cho dev để ở file nội bộ.
3. Tên field, page có còn nguyên như trên màn hình không?#
Đây là lỗi nặng nhất vì người đọc không tra ngược được. Một bản giải thích công thức phân bổ viết Round(số tiền, 1 đồng) thay cho Currency."Amount Rounding Precision". Người đọc tưởng số 1 ghi cứng trong code, và tưởng dòng đầu không áp tham số đó, trong khi code áp cho mọi dòng.
Cùng họ là tự đặt từ tiếng Việt cho thứ trong nghề đã có tên:
| AI tự chế | Người trong nghề nói |
|---|---|
| bản tin, bộ bản tin chuẩn | message, bộ message chuẩn |
| diễn tập chuyển dữ liệu | kiểm thử chuyển dữ liệu |
| ảnh chụp tồn kho | số tồn tại thời điểm chốt |
| gán tay (trong FDD) | gán thủ công |
Câu kiểm: nói từ này trong cuộc họp, khách gật đầu ngay hay phải hỏi lại. Có từ đúng chữ mà sai chiều. "Nhận hàng theo ASN" viết cho bên đang nhận hàng thì người đọc hiểu ngược, vì trong quy trình của họ ASN gắn với lúc xuất. Viết thẳng "lệnh nhập kho".
4. Còn câu nào chỉ có ích cho người viết không?#
Hai loại hay sót. Thứ nhất là đoạn kết kể lại những gì vừa nói: xóa đi mà người đọc không mất gì thì xóa. Thứ hai là ghi chú người lập file để lại cho chính mình. Một file WBS gửi khách còn ghi chú "Chỉ tính ngày công Dev." và "Tính 15% tổng ngày công Functional và Dev, công thức tự tính". Công thức trong ô đã nói điều đó, người nhận đọc xong không biết thêm việc gì phải làm. Email gửi kèm file cũng vậy: bản AI viết kể lại nội dung file kèm bốn việc nhờ xác nhận, bản tôi gửi còn bốn câu.
Tin nhắn hướng dẫn key user: ba cặp trước và sau#
Tin nhắn cho người dùng là chỗ AI viết đúng nội dung mà người ta vẫn không làm theo, vì nó viết như báo cáo phân tích.
Sửa đơn Intercompany bằng config package#
Bản AI viết là một bảng có số field 125, 126, 123, cột khóa, IC Direction và IC Status kèm ghi chú "thường đã sẵn", rồi một đoạn giải thích hai bẫy. Bản tôi gửi:
Trong trường hợp anh chị không gán IC Partner trong Customer thì lúc send SO IC báo lỗi này. Thì dùng config package update cho mấy field này nhé.
Sales Header:
- Sell-to IC Partner Code = mã IC
- Bill-to IC Partner Code = mã IC
- Send IC Document = Yes
Sales Line:
- IC Partner Ref. Type = Item
- IC Partner Reference = mã hàng
Đã bỏ số field, field để mặc định, giá trị của ca test và phần giải thích cơ chế. Bước nào mà thiếu sẽ làm hỏng thì vẫn thêm một dòng hành động, không kèm lý do.
Một mặt hàng nhiều công thức, trả lời trên Zalo#
Một chị key user hỏi một mặt hàng dùng nhiều BOM được không. Câu trả lời đúng là Production BOM Version, và AI viết đúng. Tôi vẫn sửa năm chỗ:
| AI viết | Tôi sửa |
|---|---|
| Ba gạch đầu dòng, mỗi dòng là một câu nói với chị | Gộp thành một đoạn. Gạch đầu dòng chỉ dùng cho danh sách Field = giá trị |
| "ngày bắt đầu" | Starting Date, đúng nhãn trên màn hình |
| "chị mở lệnh sản xuất" | "trên Released Production Order", vì mỗi status có danh sách riêng |
| "công thức gốc trên BOM" | "BOM gốc", đúng chữ người hỏi dùng |
| Câu kết "Như vậy chị không phải mở thêm item mới nữa." | Bỏ, vì đó chính là điều chị đang hỏi |
Thêm "Dạ" ở đầu và "như vầy nhé" trong câu. Giọng Zalo với người lớn hơn khác giọng FDD.
Kế toán hỏi không có hóa đơn thì sao làm Purchase Invoice#
Hàng đã nhập kho, không undo được, nhà cung cấp không xuất hóa đơn và hàng phải trả lại. Bản AI viết kể cơ chế PO treo số lượng, ba bước kèm số chứng từ cụ thể, rồi tài khoản thuế làm bằng chứng. Câu đầu bản tôi gửi gỡ đúng chỗ người hỏi hiểu lầm:
PI trên BC không hẳn là ghi nhận hóa đơn GTGT đâu chị. Đây là chứng từ để kết thúc quy trình mua hàng, nếu chị đã phát sinh nhập kho rồi mà không undo được thì bắt buộc phải làm PI để kết thúc quy trình, chứ ko là ko đóng sổ được đâu.
Phần sau chỉ ghi quy tắc: Vendor Invoice No. trên PI và Vendor Cr. Memo No. trên Credit Memo ghi cùng một số, ví dụ số PO, miễn giống nhau và không để trống. In bảng kê VAT Input thì tick Exclude Reverse. Không có số chứng từ nào để người đọc hỏi lại "sao lại là số đó".
Mấy ngày sau tôi mới biết kế toán đọc phần giải thích rồi bỏ qua bước làm PI, làm thẳng Credit Memo. Tôi nghĩ lý do là lời giải thích đứng tách khỏi quy trình, người đọc coi nó là phần đọc thêm. Lần sửa thứ hai gộp lời giải thích vào quy trình đánh số, ghi rõ Kho, Kế toán, Kinh doanh làm bước nào, và thêm một câu dặn đừng làm Credit Memo ngay.
Cách tôi dạy AI viết đúng giọng#
Mỗi khi sửa tay một văn bản, tôi đưa cả hai bản cho AI, nhờ nó liệt kê chỗ khác nhau, rồi ghi vào skill kèm ví dụ trước và sau. Một câu sửa đứng riêng thì để trong ghi chú dự án. Vài câu sửa rời cùng một hướng mới thành quy tắc.
Đừng bắt AI né sạch mọi thứ trong danh sách. Người viết thật cũng dùng gạch ngang dài, cũng liệt kê ba ý. Né hết thì câu văn cụt và đều tăm tắp, kiểu gượng đó cũng lộ. Tôi ưu tiên xóa câu rỗng và cấu trúc lặp, còn từng chữ lẻ thì nới tay.
Cài skill vào Claude Code:
/plugin marketplace add dinhtiendungerp/erp-doc-voice
/plugin install erp-doc-voice@erp-doc-voice
Với Claude.ai thì upload file zip trong thư mục team-skill của repo. README viết bằng tiếng Việt.