feat(v3): restructure project + add complete frontend
- Restructure: move backend from new_project/ to backend/ - Add full React/TypeScript frontend (37 pages, 17 services, 16 type defs, 11 query hooks) - Add docs/ with SRS specs, user stories, and workflow documentation - Update .gitignore for new directory layout Workflows implemented: WF1 User Signup, WF2 Placement Test, WF3 Exam Configuration, WF4 General English Exam, WF5 Course Generation, WF6 Entity Student Onboarding, AI Course Generation, Adaptive Learning Engine UI, White-Label Branding, Score Release Made-with: Cursor
This commit is contained in:
74
custom_addons/encoach_placement/views/cat_session_views.xml
Normal file
74
custom_addons/encoach_placement/views/cat_session_views.xml
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_cat_session_form" model="ir.ui.view">
|
||||
<field name="name">encoach.cat.session.form</field>
|
||||
<field name="model">encoach.cat.session</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="CAT Session">
|
||||
<header>
|
||||
<field name="status" widget="statusbar" statusbar_visible="active,completed"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="student_id"/>
|
||||
<field name="subject_id"/>
|
||||
<field name="current_section"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="started_at"/>
|
||||
<field name="completed_at"/>
|
||||
<field name="current_theta"/>
|
||||
<field name="current_sem"/>
|
||||
<field name="questions_answered"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Autosave Data" name="autosave">
|
||||
<field name="autosave_data"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_cat_session_list" model="ir.ui.view">
|
||||
<field name="name">encoach.cat.session.list</field>
|
||||
<field name="model">encoach.cat.session</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="CAT Sessions">
|
||||
<field name="student_id"/>
|
||||
<field name="status" widget="badge" decoration-info="status == 'active'" decoration-success="status == 'completed'" decoration-danger="status == 'abandoned'"/>
|
||||
<field name="current_theta"/>
|
||||
<field name="current_sem"/>
|
||||
<field name="questions_answered"/>
|
||||
<field name="started_at"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_cat_session_search" model="ir.ui.view">
|
||||
<field name="name">encoach.cat.session.search</field>
|
||||
<field name="model">encoach.cat.session</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search CAT Sessions">
|
||||
<field name="student_id"/>
|
||||
<separator/>
|
||||
<filter string="Active" name="active" domain="[('status', '=', 'active')]"/>
|
||||
<filter string="Completed" name="completed" domain="[('status', '=', 'completed')]"/>
|
||||
<filter string="Abandoned" name="abandoned" domain="[('status', '=', 'abandoned')]"/>
|
||||
<separator/>
|
||||
<filter string="Student" name="group_student" context="{'group_by': 'student_id'}"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_cat_session" model="ir.actions.act_window">
|
||||
<field name="name">Placements</field>
|
||||
<field name="res_model">encoach.cat.session</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
16
custom_addons/encoach_placement/views/placement_menus.xml
Normal file
16
custom_addons/encoach_placement/views/placement_menus.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<menuitem id="menu_placements"
|
||||
name="Placements"
|
||||
parent="encoach_core.menu_encoach_students"
|
||||
action="encoach_placement.action_cat_session"
|
||||
sequence="20"/>
|
||||
|
||||
<menuitem id="menu_student_abilities"
|
||||
name="Student Abilities"
|
||||
parent="encoach_core.menu_encoach_students"
|
||||
action="encoach_placement.action_student_ability"
|
||||
sequence="30"/>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_student_ability_form" model="ir.ui.view">
|
||||
<field name="name">encoach.student.ability.model.form</field>
|
||||
<field name="model">encoach.student.ability.model</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Student Ability">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="student_id"/>
|
||||
<field name="subject_id"/>
|
||||
<field name="skill"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="theta"/>
|
||||
<field name="sem"/>
|
||||
<field name="last_updated"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_student_ability_list" model="ir.ui.view">
|
||||
<field name="name">encoach.student.ability.model.list</field>
|
||||
<field name="model">encoach.student.ability.model</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Student Abilities">
|
||||
<field name="student_id"/>
|
||||
<field name="skill"/>
|
||||
<field name="theta"/>
|
||||
<field name="sem"/>
|
||||
<field name="last_updated"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_student_ability_search" model="ir.ui.view">
|
||||
<field name="name">encoach.student.ability.model.search</field>
|
||||
<field name="model">encoach.student.ability.model</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Student Abilities">
|
||||
<field name="student_id"/>
|
||||
<separator/>
|
||||
<filter string="Listening" name="listening" domain="[('skill', '=', 'listening')]"/>
|
||||
<filter string="Reading" name="reading" domain="[('skill', '=', 'reading')]"/>
|
||||
<filter string="Writing" name="writing" domain="[('skill', '=', 'writing')]"/>
|
||||
<filter string="Speaking" name="speaking" domain="[('skill', '=', 'speaking')]"/>
|
||||
<filter string="Grammar" name="grammar" domain="[('skill', '=', 'grammar')]"/>
|
||||
<filter string="Vocabulary" name="vocabulary" domain="[('skill', '=', 'vocabulary')]"/>
|
||||
<separator/>
|
||||
<filter string="Student" name="group_student" context="{'group_by': 'student_id'}"/>
|
||||
<filter string="Subject" name="group_subject" context="{'group_by': 'subject_id'}"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_student_ability" model="ir.actions.act_window">
|
||||
<field name="name">Student Abilities</field>
|
||||
<field name="res_model">encoach.student.ability.model</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user