Skip to main content

odoo-fullstack-ai-dev

Comprehensive guide for AI-First Odoo 18 full-stack development, covering Backend (ORM), Frontend (Owl), and Testing.

ソース情報

リポジトリ
Insightpulseai/odoo
ソースの最終更新活動
2026年4月9日 11:24
検出された SKILL.md の言語
英語
スター
6
フォーク
2

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
odoo-fullstack-ai-dev
description
Comprehensive guide for AI-First Odoo 18 full-stack development, covering Backend (ORM), Frontend (Owl), and Testing.
# Odoo 18 Full Stack AI-First Developer Skill ## 1. AI-First Development Protocol This skill empowers you to act as an elite "AI-First" Odoo developer. - **Code Generation**: Always prefer generating complete, runnable modules or components over snippets. - **Architecture**: Use established design patterns (e.g., Service Layer for complex logic, Mixins for reusability). - **Explanation**: When explaining code, focus on the _why_ (Odoo architecture) and _how_ (implementation details). - **Prototyping**: Use Odoo Studio concepts (or actual Studio if available) to conceptualize views/reports, then implement them in code (XML/Python) for version control. ## 2. Server Framework (Backend) ### Models & ORM - **Definition**: Inherit from `models.Model`, `models.TransientModel`, or `models.AbstractModel`. - **Fields**: - Basic: `Char`, `Text`, `Integer`, `Float`, `Boolean`, `Date`, `Datetime`, `Binary`, `Selection`, `Html`. - Relational: `Many2one`, `One2many`, `Many2many`. - Compute: `@api.depends('dep_field')` triggers. Store=True for performance unless logic is strictly dynamic. - **Methods**: - CRUD overrides: `create`, `write`, `unlink`. - Decorators: `@api.model`, `@api.constrains`, `@api.onchange` (UI only). - **AI Tip**: When generating CRUD overrides, always call `super()` explicitly. ### Security 1. **Access Rights (`ir.model.access.csv`)**: Define CRUD (1/0) permissions for Groups on Models. 2. **Record Rules (`ir.rule`)**: Domain-based filters for row-level security (e.g., User can only see their own Leads). ### Business Logic - **Environment (`self.env`)**: Access ORM, User (`self.env.user`), and Context (`self.env.context`). - **Searching**: `search(domain)`, `search_count(domain)`. Domain notation: `['&', ('field', '=', val), ('field2', '!=', val)]`. - **Mapped**: `records.mapped('field_name')` for efficient value extraction. ## 3. Web Framework (Owl) ### Components Odoo 18 uses **Owl** (Odoo Web Library), a React-like component system. - **Structure**: ```javascript import { Component, useState } from "@odoo/owl"; export class MyComponent extends Component { static template = "my_module.MyTemplate"; setup() { this.state = useState({ count: 0 }); } } ``` - **Hooks**: `onWillStart`, `onMounted`, `useService` (access RPC, User, Notification services). ### Views & Client Actions - **Registry**: Register main components in `registry.category("actions")`. - **Patching**: Use `patch()` to modify existing Odoo components (e.g., `FormController`) without replacing them. ### XML Templates (QWeb) - **Directives**: `t-if`, `t-foreach`, `t-out` (replacing `t-esc`), `t-call`. - **Inheritance**: `xpath` to inject content into existing views. ```xml <xpath expr="//field[@name='partner_id']" position="after"> <field name="custom_field"/> </xpath> ``` ## 4. Application Structure ### Module Manifest (`__manifest__.py`) - **Depends**: List all module dependencies (e.g., `['base', 'sale']`). - **Data**: List all XML/CSV files to load (security, views, data, reports). - **Assets**: Define JS/CSS bundles in the `assets` dictionary (e.g., `web.assets_backend`). ### Directory Layout ```text my_module/ ├── __manifest__.py ├── models/ │ ├── __init__.py │ └── my_model.py ├── views/ │ └── my_view.xml ├── security/ │ └── ir.model.access.csv ├── static/ │ └── src/ │ └── components/ └── tests/ ├── __init__.py └── test_my_flow.py ``` ## 5. Testing & CI ### Python Tests (`TransactionCase`) - **Location**: `tests/` directory. - **Execution**: Tests run in a transaction that rolls back after execution. - **Key Methods**: `self.env['model'].create(...)`, `self.assertEqual(...)`. - **Tagging**: `@tagged('at_install', 'post_install')` to control execution time. ### Integration - **Tours**: JavaScript integration tests that drive the UI. - **FormTours**: (Newer) verifying Form view behaviors specifically. ## 6. Odoo Studio (Prototyping) Use Studio knowledge for: - **Mockups**: Quickly visualizing a view layout before coding it in XML. - **Reports**: Designing PDF layouts visually to generate the QWeb structure. - **Automations**: Testing triggers (e.g., "On Update") to verify logic before implementing in Python listeners. ## 7. AI-Assisted Workflows - **Refactoring**: "Refactor this method to use `mapped` and `filtered` for better performance." - **Debugging**: "Analyze this traceback and suggest a fix regarding Access Rights." - **Scaffolding**: "Generate the directory structure and manifest for a module named `estate_management`." ## 8. Functional Domain Architecture (L3) Mapping business requirements to technical models. ### Finance & Accounting (`account`) - **Core Models**: - `account.move` (Journal Entries & Invoices) - `account.move.line` (Journal Items - the atomic ledger) - `account.account` (Chart of Accounts) - `account.journal` (Sales, Purchase, Bank, Cash, Misc) - **Key Concepts**: - **Reconciliation**: Matching payments (`account.payment`) with invoices via `account.partial.reconcile`. - **Analytic Accounting**: `account.analytic.line` for cost centers/project tracking. - **Fiscal Positions**: Auto-mapping taxes based on partner country/group. - **AI Tip**: "When creating an invoice via code, ensure you post it (`action_post()`) to generate the move lines." ### Sales & CRM (`sale`, `crm`) - **Core Models**: - `crm.lead` (Leads & Opportunities) - `sale.order` (Quotations & SOs) - `sale.order.line` (Line items) - **Flow**: Lead -> Opportunity -> Quotation -> SO -> Invoice/Delivery. - **Pricelists**: `product.pricelist` for currency/reign-specific pricing rules. ### Supply Chain (`stock`, `mrp`, `purchase`) - **Inventory (`stock`)**: - `stock.picking` (Transfer definition) - `stock.move` (Stock moves) - `stock.quant` (Physical inventory on hand) - **Routes**: Pull/Push rules defining logistics (e.g., MTO, Cross-dock). - **Manufacturing (`mrp`)**: - `mrp.production` (Manufacturing Orders) - `mrp.bom` (Bill of Materials) - `mrp.workcenter` (Routing/Capacity) - **Purchase (`purchase`)**: - `purchase.order`, `purchase.order.line`. ### Productivity & Content - **Documents (`documents`)**: - `documents.document`: Central file storage. - **AI Digitization**: Integration with OCR for auto-encoding vendor bills. - **Knowledge (`knowledge`)**: - `knowledge.article`: Collaborative rich-text pages. - **Templates**: Reusable structures for articles. ### Website & eCommerce (`website`, `website_sale`) - **Core Models**: - `website`: Per-domain configuration. - `website.page`: URL routing to QWeb views. - `product.public.category`: eCommerce catalog organization. - **CMS**: In-line editing uses `web_editor` snippets. ### General & Configuration (`base`) - **Core Models**: - `res.company`: Multi-company hierarchy and branches. - `res.users`: User authentication, language, and timezone. - `res.groups`: Access security (e.g., "Sales / User: Own Documents Only"). - `res.partner`: The contact book (Customers, Vendors, Employees). - **Settings**: - `res.config.settings`: Transient models for "Settings" views. - `ir.config_parameter`: System parameters (key-value storage). - **Developer Mode**: - Activated via `?debug=1`. Unlocks "Technical" menu and "Edit View Form".
GitHubで見る