Full architectural refactor from React to Odoo OWL: - 15 new Odoo modules: signup, placement, exam_template, scoring, course_gen, entity_onboard, ai_course, quality_gate, ielts_validation, pdf_report, verification, math, it, portal, exam_session - 6 modified modules: core (new user fields), exam (template types), adaptive (events/paths/settings), branding (white-label), resources (CEFR/AI fields), taxonomy (Math+IT hierarchies) - ~79 new REST API endpoints across all controller packages - ~50 admin backend views (form/list/kanban/search/menu) - 5 custom OWL components: dashboard, content pool, exam validation, gap analysis, adaptive timeline - POS-inspired full-screen exam session with 9 question renderers - Student portal with 12 website pages (QWeb + OWL) - AI/ML services: IRT 3PL CAT engine, CEFR mapper, quality gates, IELTS validator, SymPy math scorer, speaking evaluator, adaptive engine - Seed data: IELTS/TOEFL/STEP/IC3 templates, 30+ sample questions, English/Math/IT taxonomy trees with 50+ topics - Updated requirements.txt with new dependencies Made-with: Cursor
156 lines
4.5 KiB
Plaintext
156 lines
4.5 KiB
Plaintext
|
||
|
||
|
||
# Developer Workflow Manual — EnCoach Backend & Frontend
|
||
|
||
## One-Time Setup (Do This Once)
|
||
|
||
**Step 1 — Clone the repositories**
|
||
```bash
|
||
git clone https://git.albousalh.com/devops/encoach_backend_new_v2.git
|
||
git clone https://git.albousalh.com/devops/encoach_frontend_new_v2.git
|
||
```
|
||
|
||
**Step 2 — Switch to the working branch**
|
||
```bash
|
||
cd encoach_backend_new_v2
|
||
git checkout full_stack_dev
|
||
|
||
cd ../encoach_frontend_new_v2
|
||
git checkout full_stack_dev
|
||
```
|
||
|
||
**Step 3 — Install the `tea` CLI (to open PRs from terminal)**
|
||
```bash
|
||
# macOS
|
||
brew install tea
|
||
|
||
# Or download directly:
|
||
# https://gitea.com/gitea/tea/releases
|
||
|
||
# Configure it (run once):
|
||
tea login add --name encoach --url https://git.albousalh.com --token YOUR_TOKEN
|
||
```
|
||
> To get your token: log in at `https://git.albousalh.com` → top-right avatar → Settings → Applications → Generate Token.
|
||
|
||
---
|
||
|
||
## Every Day — Starting Work
|
||
|
||
**Step 4 — Always pull the latest before coding**
|
||
```bash
|
||
git checkout full_stack_dev
|
||
git pull origin full_stack_dev
|
||
```
|
||
> This makes sure you have the latest code before making changes.
|
||
|
||
---
|
||
|
||
## Making Changes
|
||
|
||
**Step 5 — Make your code changes locally**
|
||
|
||
Work as normal in your editor. No restrictions on what you change.
|
||
|
||
**Step 6 — If you add a new Python package**, add it to `new_project/requirements.txt`:
|
||
```
|
||
openai>=1.50
|
||
your-new-package>=x.x
|
||
```
|
||
|
||
**Step 7 — If you add a new Odoo addon**, place it under `new_project/custom_addons/your_module/` and make sure:
|
||
- The `__manifest__.py` lists **all** modules you reference via `comodel_name=` in its `depends` list.
|
||
- Notify Talal — new addons need a one-time manual install on the server (see end of this doc).
|
||
|
||
---
|
||
|
||
## Pushing Your Work
|
||
|
||
**Step 8 — Stage and commit your changes**
|
||
```bash
|
||
git add .
|
||
git commit -m "Short description of what you changed"
|
||
```
|
||
|
||
**Step 9 — Push to your working branch**
|
||
```bash
|
||
git push origin full_stack_dev
|
||
```
|
||
|
||
**Step 10 — Open a Pull Request** (asks Talal for review/approval)
|
||
```bash
|
||
tea pr create \
|
||
--repo devops/encoach_backend_new_v2 \
|
||
--head full_stack_dev \
|
||
--base main \
|
||
--title "Brief title of your changes" \
|
||
--description "What you changed and why"
|
||
```
|
||
> For frontend, replace `encoach_backend_new_v2` with `encoach_frontend_new_v2`.
|
||
|
||
**Step 11 — Notify Talal** that a PR is waiting for his review.
|
||
|
||
---
|
||
|
||
## After Talal Approves & Merges
|
||
|
||
**Step 12 — Deployment is fully automatic.** You do not need to do anything on the server.
|
||
|
||
What happens behind the scenes:
|
||
1. Talal merges the PR on `https://git.albousalh.com`
|
||
2. The server detects the merge to `main`
|
||
3. The deploy script pulls the latest code
|
||
4. Docker rebuilds the image (if `Dockerfile` or `requirements.txt` changed — takes ~10–15 min; otherwise ~1 min)
|
||
5. The container restarts with the new code
|
||
|
||
**Step 13 — Verify it worked** by checking the live URL:
|
||
- Frontend: `http://5.189.151.117:3000`
|
||
- Backend API: `http://5.189.151.117:8069/api/login`
|
||
|
||
---
|
||
|
||
## Checking Logs If Something Goes Wrong
|
||
|
||
SSH into the server (ask Talal for credentials) and run:
|
||
```bash
|
||
# Backend logs
|
||
docker logs backend-v2-odoo --tail 50
|
||
|
||
# Frontend logs
|
||
docker logs encoach-frontend --tail 50
|
||
```
|
||
|
||
---
|
||
|
||
## Special Case: Adding a New Odoo Addon
|
||
|
||
New addons need a **one-time manual install** on the server (the database doesn't know about them yet). Tell Talal and he will run:
|
||
```bash
|
||
ssh root@5.189.151.117
|
||
docker stop backend-v2-odoo
|
||
docker run --rm \
|
||
--network backend-v2_default \
|
||
-v /opt/encoach/backend-v2/odoo-docker.conf:/etc/odoo/odoo.conf:ro \
|
||
-v /opt/encoach/backend-v2/new_project/custom_addons:/mnt/custom_addons:ro \
|
||
-v /opt/encoach/backend-v2/new_project/enterprise-19:/mnt/enterprise:ro \
|
||
-v /opt/encoach/backend-v2/new_project/openeducat_erp-19.0:/mnt/openeducat:ro \
|
||
-v odoo-web-data:/var/lib/odoo \
|
||
encoach-backend:latest \
|
||
odoo -c /etc/odoo/odoo.conf -d encoach_v2 -i your_new_module --stop-after-init
|
||
docker start backend-v2-odoo
|
||
```
|
||
> After the first install, all future deploys update it automatically.
|
||
|
||
---
|
||
|
||
## Quick Reference
|
||
|
||
| Action | Command |
|
||
|---|---|
|
||
| Pull latest | `git pull origin full_stack_dev` |
|
||
| Commit | `git add . && git commit -m "message"` |
|
||
| Push | `git push origin full_stack_dev` |
|
||
| Open PR (backend) | `tea pr create --repo devops/encoach_backend_new_v2 --head full_stack_dev --base main --title "..."` |
|
||
| Open PR (frontend) | `tea pr create --repo devops/encoach_frontend_new_v2 --head full_stack_dev --base main --title "..."` |
|
||
| View logs (backend) | `docker logs backend-v2-odoo --tail 50` |
|
||
| View logs (frontend) | `docker logs encoach-frontend --tail 50` | |