feat: initial backend codebase — EnCoach v3

Complete Odoo 19 backend with 25 custom addons:
- encoach_core: user/entity/role management
- encoach_api: REST API + JWT auth
- encoach_ai: OpenAI integration, AI settings, generation
- encoach_ai_course: AI-powered English & IELTS course generation
- encoach_exam_template/session: exam creation, structures, sessions
- encoach_scoring: AI auto-grading + manual approval
- encoach_vector: pgvector RAG integration
- encoach_adaptive: adaptive learning engine
- encoach_placement: placement testing
- encoach_taxonomy/resources: content taxonomy & resource management
- Plus 14 more modules for courses, branding, portal, etc.

Includes docs: user guide, generation report, developer workflow.

Made-with: Cursor
This commit is contained in:
Yamen Ahmad
2026-04-11 15:44:20 +04:00
commit 982d4bca30
371 changed files with 35211 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_ielts_check_form" model="ir.ui.view">
<field name="name">encoach.ielts.standards.check.form</field>
<field name="model">encoach.ielts.standards.check</field>
<field name="arch" type="xml">
<form string="IELTS Standards Check">
<sheet>
<group>
<group>
<field name="content_id"/>
<field name="content_type"/>
<field name="check_type"/>
</group>
<group>
<field name="passed"/>
<field name="checked_at"/>
</group>
</group>
<group>
<field name="error_detail"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_ielts_check_list" model="ir.ui.view">
<field name="name">encoach.ielts.standards.check.list</field>
<field name="model">encoach.ielts.standards.check</field>
<field name="arch" type="xml">
<list string="IELTS Standards Checks">
<field name="content_type"/>
<field name="check_type"/>
<field name="passed" widget="badge" decoration-success="passed" decoration-danger="not passed"/>
<field name="checked_at"/>
</list>
</field>
</record>
<record id="view_ielts_check_search" model="ir.ui.view">
<field name="name">encoach.ielts.standards.check.search</field>
<field name="model">encoach.ielts.standards.check</field>
<field name="arch" type="xml">
<search string="Search IELTS Checks">
<separator/>
<filter string="Passed" name="passed" domain="[('passed', '=', True)]"/>
<filter string="Failed" name="failed" domain="[('passed', '=', False)]"/>
<separator/>
<filter string="Passage" name="passage" domain="[('content_type', '=', 'passage')]"/>
<filter string="Audio" name="audio" domain="[('content_type', '=', 'audio')]"/>
<filter string="Writing Prompt" name="writing_prompt" domain="[('content_type', '=', 'writing_prompt')]"/>
<filter string="Speaking Card" name="speaking_card" domain="[('content_type', '=', 'speaking_card')]"/>
</search>
</field>
</record>
<record id="action_ielts_check" model="ir.actions.act_window">
<field name="name">IELTS Standards Checks</field>
<field name="res_model">encoach.ielts.standards.check</field>
<field name="view_mode">list,form</field>
</record>
</odoo>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<menuitem id="menu_ielts_checks"
name="IELTS Standards Checks"
parent="encoach_core.menu_encoach_content"
action="encoach_quality_gate.action_ielts_check"
sequence="10"/>
</odoo>