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:
23
custom_addons/encoach_taxonomy/data/default_subjects.xml
Normal file
23
custom_addons/encoach_taxonomy/data/default_subjects.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="subject_english" model="encoach.subject">
|
||||
<field name="name">English</field>
|
||||
<field name="code">ENG</field>
|
||||
<field name="description">English Language</field>
|
||||
<field name="sequence">1</field>
|
||||
</record>
|
||||
<record id="subject_math" model="encoach.subject">
|
||||
<field name="name">Mathematics</field>
|
||||
<field name="code">MATH</field>
|
||||
<field name="description">Mathematics</field>
|
||||
<field name="sequence">2</field>
|
||||
</record>
|
||||
<record id="subject_it" model="encoach.subject">
|
||||
<field name="name">Information Technology</field>
|
||||
<field name="code">IT</field>
|
||||
<field name="description">Information Technology and Computer Science</field>
|
||||
<field name="sequence">3</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
304
custom_addons/encoach_taxonomy/data/math_it_taxonomy.xml
Normal file
304
custom_addons/encoach_taxonomy/data/math_it_taxonomy.xml
Normal file
@@ -0,0 +1,304 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- ===================== ENGLISH DOMAINS & TOPICS ===================== -->
|
||||
<record id="domain_eng_listening" model="encoach.domain">
|
||||
<field name="name">Listening</field>
|
||||
<field name="subject_id" ref="subject_english"/>
|
||||
<field name="description">Listening comprehension skills</field>
|
||||
</record>
|
||||
<record id="domain_eng_reading" model="encoach.domain">
|
||||
<field name="name">Reading</field>
|
||||
<field name="subject_id" ref="subject_english"/>
|
||||
<field name="description">Reading comprehension and analysis</field>
|
||||
</record>
|
||||
<record id="domain_eng_writing" model="encoach.domain">
|
||||
<field name="name">Writing</field>
|
||||
<field name="subject_id" ref="subject_english"/>
|
||||
<field name="description">Written communication skills</field>
|
||||
</record>
|
||||
<record id="domain_eng_speaking" model="encoach.domain">
|
||||
<field name="name">Speaking</field>
|
||||
<field name="subject_id" ref="subject_english"/>
|
||||
<field name="description">Spoken communication and fluency</field>
|
||||
</record>
|
||||
<record id="domain_eng_grammar" model="encoach.domain">
|
||||
<field name="name">Grammar</field>
|
||||
<field name="subject_id" ref="subject_english"/>
|
||||
<field name="description">English grammar rules and usage</field>
|
||||
</record>
|
||||
<record id="domain_eng_vocabulary" model="encoach.domain">
|
||||
<field name="name">Vocabulary</field>
|
||||
<field name="subject_id" ref="subject_english"/>
|
||||
<field name="description">Word knowledge and usage</field>
|
||||
</record>
|
||||
|
||||
<!-- English Topics -->
|
||||
<record id="topic_eng_conversation" model="encoach.topic">
|
||||
<field name="name">Conversation Comprehension</field>
|
||||
<field name="domain_id" ref="domain_eng_listening"/>
|
||||
</record>
|
||||
<record id="topic_eng_monologue" model="encoach.topic">
|
||||
<field name="name">Monologue Comprehension</field>
|
||||
<field name="domain_id" ref="domain_eng_listening"/>
|
||||
</record>
|
||||
<record id="topic_eng_note_taking" model="encoach.topic">
|
||||
<field name="name">Note Taking & Form Completion</field>
|
||||
<field name="domain_id" ref="domain_eng_listening"/>
|
||||
</record>
|
||||
<record id="topic_eng_skimming" model="encoach.topic">
|
||||
<field name="name">Skimming & Scanning</field>
|
||||
<field name="domain_id" ref="domain_eng_reading"/>
|
||||
</record>
|
||||
<record id="topic_eng_detailed_reading" model="encoach.topic">
|
||||
<field name="name">Detailed Reading</field>
|
||||
<field name="domain_id" ref="domain_eng_reading"/>
|
||||
</record>
|
||||
<record id="topic_eng_inference" model="encoach.topic">
|
||||
<field name="name">Inference & Implication</field>
|
||||
<field name="domain_id" ref="domain_eng_reading"/>
|
||||
</record>
|
||||
<record id="topic_eng_task1_writing" model="encoach.topic">
|
||||
<field name="name">Task 1 — Report/Letter Writing</field>
|
||||
<field name="domain_id" ref="domain_eng_writing"/>
|
||||
</record>
|
||||
<record id="topic_eng_task2_essay" model="encoach.topic">
|
||||
<field name="name">Task 2 — Essay Writing</field>
|
||||
<field name="domain_id" ref="domain_eng_writing"/>
|
||||
</record>
|
||||
<record id="topic_eng_part1_intro" model="encoach.topic">
|
||||
<field name="name">Part 1 — Introduction & Interview</field>
|
||||
<field name="domain_id" ref="domain_eng_speaking"/>
|
||||
</record>
|
||||
<record id="topic_eng_part2_cue" model="encoach.topic">
|
||||
<field name="name">Part 2 — Cue Card</field>
|
||||
<field name="domain_id" ref="domain_eng_speaking"/>
|
||||
</record>
|
||||
<record id="topic_eng_part3_discussion" model="encoach.topic">
|
||||
<field name="name">Part 3 — Discussion</field>
|
||||
<field name="domain_id" ref="domain_eng_speaking"/>
|
||||
</record>
|
||||
<record id="topic_eng_tenses" model="encoach.topic">
|
||||
<field name="name">Tenses</field>
|
||||
<field name="domain_id" ref="domain_eng_grammar"/>
|
||||
</record>
|
||||
<record id="topic_eng_conditionals" model="encoach.topic">
|
||||
<field name="name">Conditionals</field>
|
||||
<field name="domain_id" ref="domain_eng_grammar"/>
|
||||
</record>
|
||||
<record id="topic_eng_passive_voice" model="encoach.topic">
|
||||
<field name="name">Passive Voice</field>
|
||||
<field name="domain_id" ref="domain_eng_grammar"/>
|
||||
</record>
|
||||
<record id="topic_eng_articles_determiners" model="encoach.topic">
|
||||
<field name="name">Articles & Determiners</field>
|
||||
<field name="domain_id" ref="domain_eng_grammar"/>
|
||||
</record>
|
||||
<record id="topic_eng_academic_vocab" model="encoach.topic">
|
||||
<field name="name">Academic Vocabulary</field>
|
||||
<field name="domain_id" ref="domain_eng_vocabulary"/>
|
||||
</record>
|
||||
<record id="topic_eng_collocations" model="encoach.topic">
|
||||
<field name="name">Collocations & Phrasal Verbs</field>
|
||||
<field name="domain_id" ref="domain_eng_vocabulary"/>
|
||||
</record>
|
||||
|
||||
<!-- ===================== MATHEMATICS DOMAINS & TOPICS ===================== -->
|
||||
<record id="domain_math_algebra" model="encoach.domain">
|
||||
<field name="name">Algebra</field>
|
||||
<field name="subject_id" ref="subject_math"/>
|
||||
<field name="description">Algebraic expressions, equations, and functions</field>
|
||||
</record>
|
||||
<record id="domain_math_geometry" model="encoach.domain">
|
||||
<field name="name">Geometry</field>
|
||||
<field name="subject_id" ref="subject_math"/>
|
||||
<field name="description">Shapes, areas, volumes, and geometric proofs</field>
|
||||
</record>
|
||||
<record id="domain_math_calculus" model="encoach.domain">
|
||||
<field name="name">Calculus</field>
|
||||
<field name="subject_id" ref="subject_math"/>
|
||||
<field name="description">Limits, derivatives, integrals</field>
|
||||
</record>
|
||||
<record id="domain_math_statistics" model="encoach.domain">
|
||||
<field name="name">Statistics & Probability</field>
|
||||
<field name="subject_id" ref="subject_math"/>
|
||||
<field name="description">Data analysis, probability, distributions</field>
|
||||
</record>
|
||||
<record id="domain_math_linear_algebra" model="encoach.domain">
|
||||
<field name="name">Linear Algebra</field>
|
||||
<field name="subject_id" ref="subject_math"/>
|
||||
<field name="description">Matrices, vectors, linear transformations</field>
|
||||
</record>
|
||||
<record id="domain_math_number_theory" model="encoach.domain">
|
||||
<field name="name">Number Theory</field>
|
||||
<field name="subject_id" ref="subject_math"/>
|
||||
<field name="description">Integers, primes, divisibility</field>
|
||||
</record>
|
||||
|
||||
<!-- Math Topics -->
|
||||
<record id="topic_math_linear_eq" model="encoach.topic">
|
||||
<field name="name">Linear Equations</field>
|
||||
<field name="domain_id" ref="domain_math_algebra"/>
|
||||
</record>
|
||||
<record id="topic_math_quadratic_eq" model="encoach.topic">
|
||||
<field name="name">Quadratic Equations</field>
|
||||
<field name="domain_id" ref="domain_math_algebra"/>
|
||||
</record>
|
||||
<record id="topic_math_polynomials" model="encoach.topic">
|
||||
<field name="name">Polynomials</field>
|
||||
<field name="domain_id" ref="domain_math_algebra"/>
|
||||
</record>
|
||||
<record id="topic_math_functions" model="encoach.topic">
|
||||
<field name="name">Functions & Graphs</field>
|
||||
<field name="domain_id" ref="domain_math_algebra"/>
|
||||
</record>
|
||||
<record id="topic_math_triangles" model="encoach.topic">
|
||||
<field name="name">Triangles & Trigonometry</field>
|
||||
<field name="domain_id" ref="domain_math_geometry"/>
|
||||
</record>
|
||||
<record id="topic_math_circles" model="encoach.topic">
|
||||
<field name="name">Circles</field>
|
||||
<field name="domain_id" ref="domain_math_geometry"/>
|
||||
</record>
|
||||
<record id="topic_math_coordinate" model="encoach.topic">
|
||||
<field name="name">Coordinate Geometry</field>
|
||||
<field name="domain_id" ref="domain_math_geometry"/>
|
||||
</record>
|
||||
<record id="topic_math_limits" model="encoach.topic">
|
||||
<field name="name">Limits & Continuity</field>
|
||||
<field name="domain_id" ref="domain_math_calculus"/>
|
||||
</record>
|
||||
<record id="topic_math_derivatives" model="encoach.topic">
|
||||
<field name="name">Derivatives</field>
|
||||
<field name="domain_id" ref="domain_math_calculus"/>
|
||||
</record>
|
||||
<record id="topic_math_integrals" model="encoach.topic">
|
||||
<field name="name">Integrals</field>
|
||||
<field name="domain_id" ref="domain_math_calculus"/>
|
||||
</record>
|
||||
<record id="topic_math_descriptive" model="encoach.topic">
|
||||
<field name="name">Descriptive Statistics</field>
|
||||
<field name="domain_id" ref="domain_math_statistics"/>
|
||||
</record>
|
||||
<record id="topic_math_probability" model="encoach.topic">
|
||||
<field name="name">Probability</field>
|
||||
<field name="domain_id" ref="domain_math_statistics"/>
|
||||
</record>
|
||||
<record id="topic_math_matrices" model="encoach.topic">
|
||||
<field name="name">Matrix Operations</field>
|
||||
<field name="domain_id" ref="domain_math_linear_algebra"/>
|
||||
</record>
|
||||
<record id="topic_math_vectors" model="encoach.topic">
|
||||
<field name="name">Vectors</field>
|
||||
<field name="domain_id" ref="domain_math_linear_algebra"/>
|
||||
</record>
|
||||
<record id="topic_math_primes" model="encoach.topic">
|
||||
<field name="name">Prime Numbers & Factorization</field>
|
||||
<field name="domain_id" ref="domain_math_number_theory"/>
|
||||
</record>
|
||||
|
||||
<!-- ===================== IT DOMAINS & TOPICS ===================== -->
|
||||
<record id="domain_it_programming" model="encoach.domain">
|
||||
<field name="name">Programming Fundamentals</field>
|
||||
<field name="subject_id" ref="subject_it"/>
|
||||
<field name="description">Core programming concepts and languages</field>
|
||||
</record>
|
||||
<record id="domain_it_databases" model="encoach.domain">
|
||||
<field name="name">Databases</field>
|
||||
<field name="subject_id" ref="subject_it"/>
|
||||
<field name="description">Database design, SQL, and data management</field>
|
||||
</record>
|
||||
<record id="domain_it_networking" model="encoach.domain">
|
||||
<field name="name">Networking</field>
|
||||
<field name="subject_id" ref="subject_it"/>
|
||||
<field name="description">Computer networks, protocols, and security</field>
|
||||
</record>
|
||||
<record id="domain_it_web_dev" model="encoach.domain">
|
||||
<field name="name">Web Development</field>
|
||||
<field name="subject_id" ref="subject_it"/>
|
||||
<field name="description">Frontend, backend, and full-stack web development</field>
|
||||
</record>
|
||||
<record id="domain_it_os" model="encoach.domain">
|
||||
<field name="name">Operating Systems</field>
|
||||
<field name="subject_id" ref="subject_it"/>
|
||||
<field name="description">OS concepts, Linux, process management</field>
|
||||
</record>
|
||||
<record id="domain_it_security" model="encoach.domain">
|
||||
<field name="name">Cybersecurity</field>
|
||||
<field name="subject_id" ref="subject_it"/>
|
||||
<field name="description">Information security principles and practices</field>
|
||||
</record>
|
||||
|
||||
<!-- IT Topics -->
|
||||
<record id="topic_it_variables" model="encoach.topic">
|
||||
<field name="name">Variables & Data Types</field>
|
||||
<field name="domain_id" ref="domain_it_programming"/>
|
||||
</record>
|
||||
<record id="topic_it_control_flow" model="encoach.topic">
|
||||
<field name="name">Control Flow</field>
|
||||
<field name="domain_id" ref="domain_it_programming"/>
|
||||
</record>
|
||||
<record id="topic_it_functions" model="encoach.topic">
|
||||
<field name="name">Functions & Modules</field>
|
||||
<field name="domain_id" ref="domain_it_programming"/>
|
||||
</record>
|
||||
<record id="topic_it_oop" model="encoach.topic">
|
||||
<field name="name">Object-Oriented Programming</field>
|
||||
<field name="domain_id" ref="domain_it_programming"/>
|
||||
</record>
|
||||
<record id="topic_it_algorithms" model="encoach.topic">
|
||||
<field name="name">Algorithms & Data Structures</field>
|
||||
<field name="domain_id" ref="domain_it_programming"/>
|
||||
</record>
|
||||
<record id="topic_it_sql_basics" model="encoach.topic">
|
||||
<field name="name">SQL Basics</field>
|
||||
<field name="domain_id" ref="domain_it_databases"/>
|
||||
</record>
|
||||
<record id="topic_it_joins" model="encoach.topic">
|
||||
<field name="name">Joins & Subqueries</field>
|
||||
<field name="domain_id" ref="domain_it_databases"/>
|
||||
</record>
|
||||
<record id="topic_it_db_design" model="encoach.topic">
|
||||
<field name="name">Database Design & Normalization</field>
|
||||
<field name="domain_id" ref="domain_it_databases"/>
|
||||
</record>
|
||||
<record id="topic_it_tcp_ip" model="encoach.topic">
|
||||
<field name="name">TCP/IP & OSI Model</field>
|
||||
<field name="domain_id" ref="domain_it_networking"/>
|
||||
</record>
|
||||
<record id="topic_it_routing" model="encoach.topic">
|
||||
<field name="name">Routing & Switching</field>
|
||||
<field name="domain_id" ref="domain_it_networking"/>
|
||||
</record>
|
||||
<record id="topic_it_html_css" model="encoach.topic">
|
||||
<field name="name">HTML & CSS</field>
|
||||
<field name="domain_id" ref="domain_it_web_dev"/>
|
||||
</record>
|
||||
<record id="topic_it_javascript" model="encoach.topic">
|
||||
<field name="name">JavaScript</field>
|
||||
<field name="domain_id" ref="domain_it_web_dev"/>
|
||||
</record>
|
||||
<record id="topic_it_backend" model="encoach.topic">
|
||||
<field name="name">Backend Development</field>
|
||||
<field name="domain_id" ref="domain_it_web_dev"/>
|
||||
</record>
|
||||
<record id="topic_it_linux" model="encoach.topic">
|
||||
<field name="name">Linux Administration</field>
|
||||
<field name="domain_id" ref="domain_it_os"/>
|
||||
</record>
|
||||
<record id="topic_it_processes" model="encoach.topic">
|
||||
<field name="name">Process Management</field>
|
||||
<field name="domain_id" ref="domain_it_os"/>
|
||||
</record>
|
||||
<record id="topic_it_encryption" model="encoach.topic">
|
||||
<field name="name">Encryption & Cryptography</field>
|
||||
<field name="domain_id" ref="domain_it_security"/>
|
||||
</record>
|
||||
<record id="topic_it_threats" model="encoach.topic">
|
||||
<field name="name">Threats & Vulnerability Assessment</field>
|
||||
<field name="domain_id" ref="domain_it_security"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user