Ship three fully-wired admin areas end-to-end with APIs, seeds, tests and docs. Backend (new `encoach_lms_api` addon + existing addons): - Institutional: academic years/terms, departments, admission registers & admissions, courses/batches, lessons, fees (terms + student fees + invoicing with income-account auto-wiring), gradebook (assignments/grades), library, facilities (encoach.asset), student leave, result templates + marksheets (incl. delete-with-cascade). - Support: `encoach.ticket` model + CRUD/assignee routes; payment records derived from `op.student.fees.details` and `account.move`; platform settings backed by `encoach.code` and `ir.config_parameter` (packages + grading config). - Training: `encoach.vocab.item` + `encoach.grammar.rule` (plus progress models) with CRUD, pagination, search/level filters, and upsert-style progress endpoints. Odoo 19 compatibility: `_sql_constraints` replaced with `@api.constrains`; `ValidationError`/`UserError` mapped to HTTP 400. Frontend: - Rewire institutional admin pages (Academic Year Manager, Admissions, Courses, Lessons, Fees, Gradebook, Library, Facilities, Student Leave, Marksheets, Taxonomy, Resources) to real APIs with React Query invalidation and dialogs. - New typed services: `payments.service.ts`, `platformSettings.service.ts`, `training.service.ts`. Updated `fees/gradebook/lms/courseware/taxonomy/ resources/student-progress/generation` services + related types. - Rewrite `VocabularyPage`, `GrammarPage`, `PaymentRecordPage`, `SettingsPage`, `TicketsPage` to consume live data with search/filter/progress/CRUD flows. - New shared components: `TaxonomyCascade`, `MaterialViewer`, `teacher/TeacherLibrary`. - Favicons/branding assets and misc. UX polish across teacher/student pages. Tooling & QA: - Seeders: `seed_demo.py`, `seed_demo_data.py`, `seed_institutional.py` (idempotent, covers institutional + support + training fixtures incl. income-account wiring). - API write-flow test suites: `test_write_flows.py` (institutional), `test_support_flows.py` (support), `test_training_flows.py` (training), `test_ai_full.py`. All suites pass end-to-end. - Docs: add `docs/PROJECT_SUMMARY.md` with per-section scope, artifacts and QA. - `.gitignore`: ignore `pgdata_bak_*/`, `frontend/.vite/`, `frontend/dist/`, `frontend/node_modules/`. Made-with: Cursor
108 lines
1.3 KiB
Plaintext
108 lines
1.3 KiB
Plaintext
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
*.so
|
|
*.egg-info/
|
|
*.egg
|
|
dist/
|
|
build/
|
|
eggs/
|
|
*.whl
|
|
|
|
# Virtual environments & conda
|
|
venv/
|
|
.venv/
|
|
env/
|
|
miniconda3/
|
|
.conda-envs/
|
|
.conda-pkgs/
|
|
|
|
# PostgreSQL data
|
|
pgdata/
|
|
pgdata_bak_*/
|
|
|
|
# Frontend build cache
|
|
frontend/.vite/
|
|
frontend/dist/
|
|
frontend/node_modules/
|
|
|
|
# IDE
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Environment / secrets — never commit
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
*.pem
|
|
*.key
|
|
|
|
# Frontend (pushed separately)
|
|
new_project/encoach_frontend_new_v1/
|
|
|
|
# Large archives / zips
|
|
*.zip
|
|
*.tar.gz
|
|
*.tar.bz2
|
|
|
|
# Logs
|
|
*.log
|
|
odoo.log
|
|
|
|
# Docker
|
|
*.tar
|
|
|
|
# Node modules
|
|
node_modules/
|
|
frontend/node_modules/
|
|
|
|
# Local dev artifacts
|
|
miniconda3/
|
|
pgdata/
|
|
.conda-envs/
|
|
.conda-pkgs/
|
|
|
|
# Odoo core source (cloned separately)
|
|
odoo/
|
|
|
|
# Local Odoo config and data
|
|
odoo.conf
|
|
/data/
|
|
|
|
# Session files
|
|
sessions/
|
|
|
|
# Filestore
|
|
filestore/
|
|
|
|
# Enterprise / extra addons (not part of this repo)
|
|
addons_enterprise/
|
|
addons_extra/
|
|
new_project/enterprise-17/
|
|
|
|
# Third-party modules (downloaded separately)
|
|
new_project/openeducat_erp-19.0/
|
|
backend/openeducat_erp-19.0/
|
|
new_project/openeducat_erp-19.0.zip
|
|
new_project/openeducate_enterprise-17.zip
|
|
new_project/encoach_frontend_new_v1-main.zip
|
|
|
|
# Local tools
|
|
new_project/.tools/
|
|
|
|
# Coverage / test output
|
|
.coverage
|
|
htmlcov/
|
|
.tox/
|
|
|
|
# Poetry
|
|
poetry.lock
|