EnCoach Odoo 19 custom modules

Full backend implementation with custom Odoo modules:
- encoach_api: Core API, user management, JWT auth
- encoach_exam: Exam generation (reading, writing, listening, speaking)
- encoach_evaluate: AI-powered evaluation (writing, speaking)
- encoach_training: Training tips and walkthrough
- encoach_storage: File storage management
- encoach_payment: Stripe, PayPal, Paymob integration
- encoach_mail: Email notifications

Made-with: Cursor
This commit is contained in:
Talal Sharabi
2026-03-14 16:46:46 +04:00
commit f5b627256f
168 changed files with 13428 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_encoach_training_tip_tree" model="ir.ui.view">
<field name="name">encoach.training.tip.tree</field>
<field name="model">encoach.training.tip</field>
<field name="arch" type="xml">
<list string="Training Tips">
<field name="tip_id"/>
<field name="category"/>
<field name="content"/>
</list>
</field>
</record>
<record id="view_encoach_training_tip_form" model="ir.ui.view">
<field name="name">encoach.training.tip.form</field>
<field name="model">encoach.training.tip</field>
<field name="arch" type="xml">
<form string="Training Tip">
<sheet>
<group>
<group>
<field name="tip_id"/>
<field name="category"/>
</group>
</group>
<group>
<field name="content" widget="text"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_encoach_training_tip" model="ir.actions.act_window">
<field name="name">Training Tips</field>
<field name="res_model">encoach.training.tip</field>
<field name="view_mode">list,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first training tip.
</p>
<p>
Training tips provide personalized advice for users based on categories like strategy, writing skills, and reading skills.
</p>
</field>
</record>
<menuitem id="menu_encoach_training_tips"
name="Training Tips"
parent="encoach_core.menu_encoach_training"
action="action_encoach_training_tip"
sequence="20"/>
</odoo>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_encoach_training_tree" model="ir.ui.view">
<field name="name">encoach.training.tree</field>
<field name="model">encoach.training</field>
<field name="arch" type="xml">
<list string="Training Records">
<field name="user_id"/>
<field name="created_at"/>
<field name="legacy_id"/>
</list>
</field>
</record>
<record id="view_encoach_training_form" model="ir.ui.view">
<field name="name">encoach.training.form</field>
<field name="model">encoach.training</field>
<field name="arch" type="xml">
<form string="Training Record">
<sheet>
<group>
<group>
<field name="user_id"/>
<field name="created_at"/>
</group>
<group>
<field name="legacy_id"/>
</group>
</group>
<group>
<group>
<field name="exams" widget="json"/>
</group>
<group>
<field name="tips" widget="json"/>
</group>
<group>
<field name="weak_areas" widget="json"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_encoach_training" model="ir.actions.act_window">
<field name="name">Training Records</field>
<field name="res_model">encoach.training</field>
<field name="view_mode">list,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first training record.
</p>
<p>
Training records store personalized exam data, tips, and weak areas for each user.
</p>
</field>
</record>
<menuitem id="menu_encoach_training_records"
name="Training Records"
parent="encoach_core.menu_encoach_training"
action="action_encoach_training"
sequence="10"/>
</odoo>

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_encoach_walkthrough_tree" model="ir.ui.view">
<field name="name">encoach.walkthrough.tree</field>
<field name="model">encoach.walkthrough</field>
<field name="arch" type="xml">
<list string="Walkthroughs">
<field name="name"/>
<field name="module"/>
</list>
</field>
</record>
<record id="view_encoach_walkthrough_form" model="ir.ui.view">
<field name="name">encoach.walkthrough.form</field>
<field name="model">encoach.walkthrough</field>
<field name="arch" type="xml">
<form string="Walkthrough">
<sheet>
<group>
<group>
<field name="name"/>
<field name="module"/>
</group>
</group>
<group>
<field name="content" widget="json"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_encoach_walkthrough" model="ir.actions.act_window">
<field name="name">Walkthroughs</field>
<field name="res_model">encoach.walkthrough</field>
<field name="view_mode">list,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first walkthrough.
</p>
<p>
Walkthroughs provide guided content for Reading, Listening, Writing, Speaking, and Level modules.
</p>
</field>
</record>
<menuitem id="menu_encoach_walkthroughs"
name="Walkthroughs"
parent="encoach_core.menu_encoach_training"
action="action_encoach_walkthrough"
sequence="30"/>
</odoo>