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:
61
custom_addons/encoach_signup/views/otp_views.xml
Normal file
61
custom_addons/encoach_signup/views/otp_views.xml
Normal file
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_otp_form" model="ir.ui.view">
|
||||
<field name="name">encoach.otp.form</field>
|
||||
<field name="model">encoach.otp</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="OTP Record">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="email"/>
|
||||
<field name="otp_hash"/>
|
||||
<field name="expires_at"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="used"/>
|
||||
<field name="resend_count"/>
|
||||
<field name="created_at"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_otp_list" model="ir.ui.view">
|
||||
<field name="name">encoach.otp.list</field>
|
||||
<field name="model">encoach.otp</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="OTP Records" create="false" edit="false">
|
||||
<field name="email"/>
|
||||
<field name="otp_hash"/>
|
||||
<field name="expires_at"/>
|
||||
<field name="used" widget="badge" decoration-success="used" decoration-muted="not used"/>
|
||||
<field name="resend_count"/>
|
||||
<field name="created_at"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_otp_search" model="ir.ui.view">
|
||||
<field name="name">encoach.otp.search</field>
|
||||
<field name="model">encoach.otp</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search OTP Records">
|
||||
<field name="email"/>
|
||||
<separator/>
|
||||
<filter string="Used" name="used" domain="[('used', '=', True)]"/>
|
||||
<filter string="Unused" name="unused" domain="[('used', '=', False)]"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_otp" model="ir.actions.act_window">
|
||||
<field name="name">OTP Records</field>
|
||||
<field name="res_model">encoach.otp</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
16
custom_addons/encoach_signup/views/signup_menus.xml
Normal file
16
custom_addons/encoach_signup/views/signup_menus.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<menuitem id="menu_student_profiles"
|
||||
name="Student Profiles"
|
||||
parent="encoach_core.menu_encoach_students"
|
||||
action="encoach_signup.action_student_profile"
|
||||
sequence="10"/>
|
||||
|
||||
<menuitem id="menu_otp_records"
|
||||
name="OTP Records"
|
||||
parent="encoach_core.menu_encoach_config"
|
||||
action="encoach_signup.action_otp"
|
||||
sequence="50"/>
|
||||
|
||||
</odoo>
|
||||
74
custom_addons/encoach_signup/views/student_profile_views.xml
Normal file
74
custom_addons/encoach_signup/views/student_profile_views.xml
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_student_profile_form" model="ir.ui.view">
|
||||
<field name="name">encoach.student.profile.form</field>
|
||||
<field name="model">encoach.student.profile</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Student Profile">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="user_id"/>
|
||||
<field name="cefr_level"/>
|
||||
<field name="target_band"/>
|
||||
<field name="learning_goal"/>
|
||||
<field name="hours_per_week"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="study_mode"/>
|
||||
<field name="exam_date"/>
|
||||
<field name="placement_completed"/>
|
||||
<field name="entity_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="learning_style"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_student_profile_list" model="ir.ui.view">
|
||||
<field name="name">encoach.student.profile.list</field>
|
||||
<field name="model">encoach.student.profile</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Student Profiles">
|
||||
<field name="user_id"/>
|
||||
<field name="cefr_level"/>
|
||||
<field name="target_band"/>
|
||||
<field name="study_mode"/>
|
||||
<field name="placement_completed"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_student_profile_search" model="ir.ui.view">
|
||||
<field name="name">encoach.student.profile.search</field>
|
||||
<field name="model">encoach.student.profile</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Student Profiles">
|
||||
<field name="user_id"/>
|
||||
<field name="cefr_level"/>
|
||||
<separator/>
|
||||
<filter string="Pre-A1" name="pre_a1" domain="[('cefr_level', '=', 'pre_a1')]"/>
|
||||
<filter string="A1" name="a1" domain="[('cefr_level', '=', 'a1')]"/>
|
||||
<filter string="A2" name="a2" domain="[('cefr_level', '=', 'a2')]"/>
|
||||
<filter string="B1" name="b1" domain="[('cefr_level', '=', 'b1')]"/>
|
||||
<filter string="B2" name="b2" domain="[('cefr_level', '=', 'b2')]"/>
|
||||
<filter string="C1" name="c1" domain="[('cefr_level', '=', 'c1')]"/>
|
||||
<filter string="C2" name="c2" domain="[('cefr_level', '=', 'c2')]"/>
|
||||
<separator/>
|
||||
<filter string="Entity" name="group_entity" context="{'group_by': 'entity_id'}"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_student_profile" model="ir.actions.act_window">
|
||||
<field name="name">Student Profiles</field>
|
||||
<field name="res_model">encoach.student.profile</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user