Prompt Custom Module Odoo Hiệu Quả, An Toàn Cho Developer
Bài viết tổng hợp prompt giúp developer custom module Odoo an toàn, không sửa core, dễ test, dễ release và giảm rủi ro khi nâng cấp.

Khi deadline dí sát, nhiều developer Odoo mở AI và gõ một câu rất chung chung như “viết giúp tôi một module Odoo”. Kết quả thường là code chạy được ở bản demo nhưng dễ chạm core, thiếu security, thiếu test, và để lại nợ kỹ thuật ngay trong production.
Bài này tổng hợp các Odoo custom module prompts thực tế để bạn custom module nhanh hơn nhưng vẫn an toàn: từ bước làm rõ yêu cầu, thiết kế giải pháp, sinh code, review, test đến release. Mục tiêu không phải code thật nhanh, mà là ra module sạch, dễ bảo trì và ít ảnh hưởng tới core hoặc các module khác.
Vì sao developer Odoo cần prompt tốt thay vì prompt chung chung?
Custom module Odoo không giống viết một script rời
Odoo là một hệ thống ERP có ORM, XML views, access rights, record rules, business flow và dependency giữa nhiều module. Chỉ cần prompt thiếu ngữ cảnh, AI rất dễ sinh ra code nhìn có vẻ đúng nhưng lại phá logic sẵn có hoặc gây lỗi khi nâng cấp phiên bản.
Đó là lý do odoo custom module prompts không nên chỉ dừng ở yêu cầu “thêm field” hay “sửa form”. Prompt tốt phải nói rõ version Odoo, module liên quan, model, luồng nghiệp vụ, quyền truy cập và giới hạn kỹ thuật.
Prompt mơ hồ thường tạo ra 3 vấn đề lớn
- Sửa trực tiếp vào core hoặc override quá rộng.
- Thiếu security như access.csv, record rule, group visibility.
- Thiếu test case và thiếu kế hoạch rollback khi release.
Bài học rút ra từ các dự án production
Trong nhiều dự án Odoo production, team thường chọn “fix nhanh cho kịp deadline” bằng cách sửa thẳng view gốc hoặc thêm logic vào module có sẵn. Cách đó có thể giúp demo chạy ngay, nhưng đến lúc upgrade hoặc merge thêm custom khác thì chi phí sửa thường còn cao hơn rất nhiều.
Vấn đề không nằm ở chuyện dùng AI hay không. Vấn đề là bạn đang hỏi AI theo kiểu giúp nó hiểu hệ thống, hay đang bắt nó đoán hệ thống của bạn.
Cách chẩn đoán trước khi nhờ AI viết code
Xác định đúng phạm vi yêu cầu
Trước khi viết prompt, hãy trả lời 5 câu hỏi: sửa ở module nào, ảnh hưởng model nào, người dùng nào sử dụng, dữ liệu đi qua các bước nào, và điều gì tuyệt đối không được chạm vào. Chỉ riêng bước này đã giúp bạn giảm rất nhiều vòng sửa prompt.
- Odoo version: 16, 17 hay 18
- Module liên quan: sale, stock, account, hr, custom module nào khác
- Màn hình cần sửa: form, tree, kanban, wizard hay report
- Business rule: điều kiện hiển thị, validation, workflow
- Ràng buộc: không sửa core, phải upgrade-safe, phải hỗ trợ multi-company
Check các điểm dễ gây rủi ro
Không phải yêu cầu nào cũng chỉ là “thêm field”. Có feature nhìn đơn giản nhưng thực ra chạm vào compute field, onchange, scheduled action, mail thread hoặc quyền dữ liệu. Nếu không check từ đầu, AI rất dễ tạo ra giải pháp chạy được nhưng sai kiến trúc.
- Security và phân quyền
- Performance của compute/search domain
- Tương thích với module đang override cùng view
- Dữ liệu cũ có cần migrate hay không
Chuẩn bị context để prompt ra kết quả tốt hơn
AI càng có context đúng, output càng usable. Một prompt tốt thường có: mô tả nghiệp vụ ngắn, input/output mong muốn, file liên quan, và format đầu ra bạn muốn AI trả về.
I am working on Odoo 17 Community.
Goal:
Create a custom module to extend the Sales Order flow.
Constraints:
- Do not modify Odoo core modules.
- Use inheritance only.
- Keep the solution upgrade-safe.
- Respect existing access rights.
- Avoid breaking other custom modules.
Context:
- Main model: sale.order
- Need to add a new approval step before confirmation
- Only users in group_sales_manager can approve
- Sales users can request approval but cannot confirm without approval
- Need form view update, security, server-side validation, and test scenarios
Output format:
1. Technical design
2. File structure
3. Python code
4. XML views
5. security/ir.model.access.csv
6. Test checklist
Prompt để phân tích yêu cầu và thiết kế giải pháp
Dùng AI như một technical analyst trước khi dùng nó như coder
Sai lầm phổ biến là yêu cầu AI viết code quá sớm. Tốt hơn, hãy bắt AI phân tích requirement trước, chỉ ra rủi ro, dependency và đề xuất kiến trúc custom module Odoo phù hợp.
Cách này đặc biệt hữu ích khi feature có liên quan đến nhiều module. Nó giúp bạn thấy trước các điểm dễ vỡ thay vì phát hiện khi UAT đã gần xong.
Act as a senior Odoo solution architect. Analyze the following requirement and propose the safest customization approach. Requirement: We need to add an approval step to Sales Orders before confirmation. The approval should be required only when total_amount > 5000. Sales managers can approve. Sales users can request approval. After approval, the order can be confirmed normally. Please provide: - Recommended module design - Models and fields to extend - View changes - Security and access implications - Risks to existing workflows - Better alternatives if any - What should NOT be implemented in core
Prompt để buộc AI suy nghĩ theo hướng an toàn
Nếu bạn không nói rõ nguyên tắc, AI có thể chọn đường ngắn nhất. Vì vậy, hãy nhắc thẳng các nguyên tắc như inheritance, server-side validation, backward compatibility và minimal override.
- Ưu tiên kế thừa thay vì sửa trực tiếp
- Ưu tiên domain, constraint, validation rõ ràng
- Chỉ override khi thật sự cần
- Ghi rõ các tác động tới upgrade và existing data
Khi nào nên dừng ở mức design thay vì sinh code ngay
Nếu yêu cầu liên quan đến accounting, stock move, payroll, manufacturing hoặc multi-company, bạn nên dùng AI để design trước. Đây là những vùng mà một custom nhỏ cũng có thể kéo theo side effect lớn.
Prompt để sinh code custom module Odoo an toàn
Yêu cầu AI trả về đầy đủ file thay vì code rời rạc
Một output hữu ích không chỉ có đoạn Python. Nó cần có manifest, models, views, security và mô tả cách cài module. Khi bạn yêu cầu đủ từ đầu, chất lượng code thường tốt hơn hẳn.
Generate a complete Odoo 17 custom module based on the approved design. Rules: - New module only, no core modification - Use model inheritance - Keep method overrides minimal - Add clear comments only where needed - Follow Odoo naming conventions - Include manifest, init files, models, views, security, and sample tests Feature: - Add approval_state to sale.order - Add buttons: Request Approval, Approve - Prevent confirm action if approval is required and not approved - Show buttons based on user group - Add chatter message when approval is requested or approved Return: - Directory structure - Full code for each file - Short explanation of each file
Đừng quên yêu cầu AI xử lý view inheritance đúng cách
Rất nhiều bug Odoo đến từ XML inheritance không ổn định. Bạn nên yêu cầu AI ưu tiên xpath rõ ràng, tránh target mong manh và giải thích lý do chọn vị trí insert.
When updating XML views: - Use safe xpath expressions - Avoid brittle selectors when possible - Explain where each element is inserted - Keep compatibility with future inherited views
Prompt mẫu cho case thêm field và logic đơn giản
Không phải feature nào cũng cần prompt dài. Với các task nhỏ như thêm field, filter, button hoặc wizard, bạn vẫn nên giữ cấu trúc prompt rõ ràng.
Create an Odoo 18 custom module to extend res.partner. Requirements: - Add field customer_code (Char) - Make it unique - Show it on partner form and list view - Add search filter by customer_code - Do not modify base module - Include access rights if needed - Include server-side validation - Return install steps and test checklist
Prompt để review, test và tránh ảnh hưởng module khác
Prompt review code trước khi merge
Dù AI viết code hay người trong team viết code, bạn vẫn nên chạy thêm một vòng review bằng prompt chuyên biệt. Lúc này, AI không còn là code generator mà là reviewer.
Review this Odoo custom module as a senior reviewer. Check: - Risk of affecting core behavior - Access rights and record rule issues - Potential performance problems - Incorrect use of compute, onchange, create, write, unlink - XML inheritance risks - Missing validations - Upgrade and maintainability concerns Output: - Critical issues - Medium issues - Nice-to-have improvements - Suggested fixes
Prompt để tạo test checklist cho QA và UAT
Đây là phần rất hay bị bỏ qua khi dev đang chạy deadline. Nhưng một checklist tốt giúp team bắt được lỗi quyền, lỗi dữ liệu, lỗi UI và regression sớm hơn nhiều.
Create a QA and UAT checklist for this Odoo customization. Include: - Happy path - Permission scenarios - Invalid input cases - Regression risks - Multi-company behavior if relevant - Existing workflow compatibility - Rollback concerns after deployment
Prompt để kiểm tra ảnh hưởng chéo
Trong một dự án ERP production, tôi từng thấy một custom bên sales làm lỗi luôn portal do cùng đụng một view inheritance. Vì vậy, với các custom nằm ở model hoặc view phổ biến, luôn nên yêu cầu AI phân tích ảnh hưởng chéo.
- Module nào đang kế thừa cùng model
- View nào có thể đang bị nhiều module cùng xpath
- Automation nào sẽ chạy sau khi write/create
- Report nào bị ảnh hưởng bởi field mới
Prompt cho release, documentation và handover
Đừng dừng ở việc “code xong”
Một custom module tốt là module mà người khác còn bảo trì được sau 3 tháng hoặc 1 năm. Vì vậy, hãy dùng AI để sinh release note, deployment checklist và tài liệu handover ngắn gọn.
Prepare release documentation for this Odoo custom module. Include: - Purpose of the customization - Modules affected - New fields and buttons - Security changes - Deployment steps - Post-deployment validation - Rollback notes - Known limitations
Tạo checklist release thực tế hơn
Checklist release không nên chỉ có “deploy và test”. Nó nên bao gồm backup, update apps list, module upgrade, smoke test, permission check và log monitoring sau release.
- Backup database và filestore
- Deploy code lên staging trước
- Upgrade module theo đúng thứ tự dependency
- Smoke test các flow chính
- Theo dõi log và user feedback sau release
Internal links hữu ích cho quá trình custom
Nếu custom của bạn có import dữ liệu, bạn có thể chuẩn hóa file trước bằng CSV to Excel. Nếu cần kiểm tra checksum file build hoặc file export, dùng Hash Tool. Với các tính năng in tem, check-in hoặc mã hóa dữ liệu đơn giản, QR Generator và Image Resizer cũng khá tiện.
Best practices khi dùng AI để custom Odoo
Hãy coi prompt là một phần của quy trình phát triển
Odoo custom module prompts hiệu quả không chỉ giúp sinh code nhanh hơn. Chúng còn giúp team suy nghĩ rõ hơn về requirement, scope, risk và quality gate trước khi chạm vào production.
Cách làm bền vững là chia prompt theo từng giai đoạn: phân tích, thiết kế, code, review, test, release. Khi làm như vậy, AI trở thành công cụ hỗ trợ quy trình chứ không phải cỗ máy “viết hộ” thiếu kiểm soát.
Những nguyên tắc nên giữ cố định
- Không sửa core nếu có thể giải bằng inheritance
- Luôn nhắc đến security và validation trong prompt
- Yêu cầu output theo file structure rõ ràng
- Luôn có bước review và test checklist
- Xem AI là người hỗ trợ, không phải người quyết định cuối
Kết luận
Nếu bạn đang muốn dùng AI để custom Odoo nhanh hơn nhưng vẫn giữ hệ thống sạch, thì thứ đáng đầu tư đầu tiên không phải là model mới hay button mới, mà là chất lượng prompt. Prompt càng rõ, module càng dễ sống lâu sau ngày release.
Nếu bạn đang xây blog hoặc tool cho developer, bạn cũng có thể tham khảo thêm các công cụ hữu ích trên atdev.blog như Hash Tool, CSV to Excel, QR Generator và Image Resizer để bổ trợ cho workflow custom module, import dữ liệu và kiểm thử tài nguyên.
Câu hỏi thường gặp
Prompt tiếng Việt hay tiếng Anh tốt hơn khi làm Odoo?
Tiếng Anh thường cho output ổn định hơn, nhất là khi bạn muốn AI sinh code, tên file và technical explanation rõ ràng. Tuy nhiên, bạn vẫn có thể mô tả nghiệp vụ bằng tiếng Việt rồi yêu cầu AI trả lời bằng tiếng Anh.
Có nên paste toàn bộ codebase vào prompt không?
Không nên. Hãy chỉ cung cấp phần liên quan như model, method, XML view hoặc traceback cần thiết. Quá nhiều context không đúng chỗ thường làm output loãng hơn.
Làm sao để giảm nguy cơ AI sửa đụng core?
Hãy ghi rất rõ trong prompt: no core modification, use inheritance only, keep upgrade-safe, minimal override. Đây là một trong những ràng buộc quan trọng nhất.
AI có thể tự tạo test cho custom module Odoo không?
Có, nhưng bạn vẫn phải review lại. AI rất phù hợp để tạo test checklist, smoke test scenario và các case permission, nhưng không nên tin mù quáng.
Nên dùng một prompt dài hay nhiều prompt ngắn?
Với Odoo, nhiều prompt ngắn theo từng bước thường hiệu quả hơn. Bạn sẽ kiểm soát tốt hơn phần design, code, review và release thay vì dồn tất cả vào một lần hỏi.