- name
- odoo-agile-scrum-devops
- description
- Comprehensive Agile Scrum framework for Odoo ERP development with Finance Shared Service Center workflows, OCA community standards, CI/CD automation, BIR compliance, and multi-agency task management. Use when planning Odoo sprints, managing Finance SSC operations, deploying to DigitalOcean, or coordinating work across agencies (RIM, CKVC, BOM, JPAL, JLI, JAP, LAS, RMQB).
# Odoo Agile Scrum DevOps Master Skill
## Overview
This skill combines Agile Scrum methodologies with Odoo development best practices, Finance Shared Service Center operations, OCA community standards, and enterprise DevOps workflows. It's specifically designed for managing odoboo-workspace and InsightPulse AI projects with integration to Notion, Supabase, and DigitalOcean.
## When to Use This Skill
**Trigger this skill for:**
- Planning Odoo module development sprints (odoboo-workspace, InsightPulse AI)
- Creating user stories for Finance SSC features (BIR compliance, month-end closing, travel & expense)
- Setting up CI/CD pipelines for Odoo 18/19 deployments
- Managing multi-agency workflows across RIM, CKVC, BOM, JPAL, JLI, JAP, LAS, RMQB
- Integrating Odoo with Notion task management via MCP tools
- Deploying to DigitalOcean (project ID: 29cde7a1-8280-46ad-9fdf-dea7b21a7825)
- Connecting Odoo to Supabase (project: spdtwktxdalcfigzeqrz) for pgvector operations
- Implementing OCA module standards and contributing to OCA repositories
## Project Context
### Core Projects
1. **odoboo-workspace**: Odoo 18/19 deployment with OCA modules, DigitalOcean hosting, Supabase integration
2. **InsightPulse AI** (insightpulseai.net): Self-hosted Odoo ERP with AI document processing (PaddleOCR, RTX 4090)
3. **Finance SSC**: Multi-agency Philippine tax compliance and month-end closing automation
### Tech Stack
- **ERP**: Odoo 18/19 Community with OCA modules
- **Cloud**: DigitalOcean App Platform, Managed PostgreSQL, Spaces (S3)
- **Database**: Supabase PostgreSQL with pgvector, Qdrant vector database
- **AI/ML**: PaddleOCR-VL, Custom OCR models for BIR forms
- **DevOps**: Docker, GitHub Actions, pre-commit hooks
- **Frontend**: Vercel deployments for custom dashboards
- **Orchestration**: Docker Compose, SuperClaude multi-agent framework
---
## Sprint Planning Framework
### Sprint Cycle (2-week iterations)
#### Week 1: Planning & Development
**Days 1-2: Sprint Planning**
1. **Backlog Grooming** (use Notion MCP tools)
```
Use notion-fetch to retrieve sprint backlog from Notion database
Review and prioritize user stories with Product Owner
Estimate story points using Fibonacci sequence (1,2,3,5,8,13,21)
```
2. **Sprint Goal Definition**
- Define clear, measurable sprint goal
- Align with Finance SSC monthly objectives (month-end closing, BIR deadlines)
- Identify dependencies across agencies
3. **Task Breakdown** (use notion-create-pages)
- Break user stories into technical tasks
- Assign to team members or agencies
- Set up task tracking with External ID for deduplication
**Days 3-8: Active Development**
- Daily standup (async via Notion comments)
- Continuous integration via GitHub Actions
- Code review with OCA standards validation
#### Week 2: Review & Deployment
**Days 9-10: Sprint Review & Demo**
- Demo to stakeholders (Finance SSC team, agency representatives)
- Deploy to DigitalOcean staging environment
- Update sprint metrics in Notion
**Days 11-12: Retrospective & Planning Prep**
- Retrospective (What went well? What needs improvement?)
- Prepare backlog for next sprint
- Update documentation
### User Story Templates
#### Finance SSC User Story Template
```markdown
## User Story: [Feature Name]
**As a** [Finance Manager / Accountant / BIR Compliance Officer]
**I want** [specific functionality]
**So that** [business value / time saved / compliance achieved]
**Agency Impact:** [RIM / CKVC / BOM / JPAL / JLI / JAP / LAS / RMQB / All]
**Acceptance Criteria:**
- [ ] Criterion 1 (must be testable)
- [ ] Criterion 2 (must be measurable)
- [ ] Criterion 3 (must include compliance requirement if BIR-related)
- [ ] Automated tests written and passing
- [ ] Documentation updated in Notion
**Story Points:** [Fibonacci number]
**Priority:** [Critical / High / Medium / Low]
**Sprint:** [Sprint number and date range]
**Technical Notes:**
- Odoo module: [module_name]
- OCA dependencies: [list OCA modules]
- Supabase integration: [Yes/No, describe if yes]
- External APIs: [BIR, Notion, other]
**Definition of Done:**
- [ ] Code reviewed by 2 team members
- [ ] Passes pre-commit hooks (pylint-odoo, flake8)
- [ ] Unit tests coverage >= 80%
- [ ] Integration tests passing
- [ ] Deployed to staging and validated
- [ ] User acceptance testing completed
- [ ] Production deployment successful
- [ ] Monitoring alerts configured
```
#### Example: BIR Form 1601-C Automation
```markdown
## User Story: Automated BIR Form 1601-C Generation
**As a** Finance Manager
**I want** automated generation of BIR Form 1601-C with employee withholding tax data
**So that** I save 3 hours per month and ensure 100% BIR compliance accuracy
**Agency Impact:** All (RIM, CKVC, BOM, JPAL, JLI, JAP, LAS, RMQB)
**Acceptance Criteria:**
- [ ] System reads employee payroll data from Odoo HR module
- [ ] Generates XML in BIR eFPS format (Form 1601-C)
- [ ] Validates ATP (Authorization to Print) requirements
- [ ] Creates audit trail in Odoo with document versioning
- [ ] Supports multiple agencies with separate TIN codes
- [ ] Email notification sent to Finance SSC manager upon generation
- [ ] PDF preview generated before submission
**Story Points:** 8
**Priority:** Critical
**Sprint:** Sprint 12 - Nov 1-15, 2025
**Technical Notes:**
- Odoo module: `finance_bir_compliance`
- OCA dependencies: `account`, `hr_payroll`, `report_xlsx`
- Supabase integration: No
- External APIs: BIR eFPS API (staging), Email service
**BIR Compliance Requirements:**
- Form must include: TIN, Taxpayer Name, Address, Return Period
- Withholding tax amounts must be rounded to 2 decimal places
- XML schema validation against BIR XSD
- ATP number must be printed on hard copy
**Definition of Done:**
- [x] Code reviewed by 2 team members
- [x] Passes pre-commit hooks
- [x] Unit tests coverage 85%
- [x] Integration tests with BIR staging API passing
- [ ] Deployed to staging and validated by Finance Manager
- [ ] UAT completed with sample data from all 8 agencies
- [ ] Production deployment planned for Nov 20, 2025
- [ ] Sentry monitoring configured for BIR API errors
```
#### Example: Travel Expense OCR Processing
```markdown
## User Story: Receipt OCR with PaddleOCR Integration
**As a** Employee submitting travel expenses
**I want** to upload receipt photos that are automatically processed
**So that** I don't spend 15 minutes manually entering data per receipt
**Agency Impact:** All
**Acceptance Criteria:**
- [ ] Mobile upload interface accepts JPG/PNG/PDF
- [ ] PaddleOCR extracts: merchant name, date, total amount, tax amount
- [ ] Confidence score >= 90% for auto-approval, <90% flags for review
- [ ] Extracted data populates Odoo expense form fields
- [ ] Original image stored in DigitalOcean Spaces
- [ ] OCR results stored in Supabase with pgvector for similarity search
- [ ] Supports multiple languages (English, Tagalog)
**Story Points:** 13
**Priority:** High
**Sprint:** Sprint 13 - Nov 16-30, 2025
**Technical Notes:**
- Odoo module: `expense_management_ocr`
- OCA dependencies: `hr_expense`, `document_management`
- Supabase integration: Yes (pgvector for receipt deduplication)
- External APIs: None (self-hosted PaddleOCR on RTX 4090)
- Hardware: RTX 4090 optimization required
**Definition of Done:**
- [ ] Code reviewed by 2 team members
- [ ] GPU memory optimization completed (batch processing)
- [ ] 95% accuracy on test dataset (100 sample receipts)
- [ ] Response time < 3 seconds per receipt
- [ ] Deployed to staging with GPU server
- [ ] Performance testing under load (50 concurrent uploads)
- [ ] User documentation created with video tutorial
```
---
## Odoo Development Standards
### OCA Module Structure
Follow OCA community standards for all Odoo modules:
```
my_odoo_module/
├── __init__.py
├── __manifest__.py # Module metadata, dependencies, version
├── models/
│ ├── __init__.py
│ ├── model_name.py # Business logic, field definitions
│ └── model_name_view.xml # UI views
├── views/
│ ├── menu_items.xml
│ └── templates.xml
├── security/
│ ├── ir.model.access.csv # Access control
│ └── security_groups.xml
├── data/
│ └── data.xml # Master data
├── reports/
│ └── report_template.xml
├── static/
│ ├── description/
│ │ ├── icon.png
│ │ └── index.html
│ └── src/
│ ├── js/
│ └── css/
├── tests/
│ ├── __init__.py
│ ├── test_model.py
│ └── test_integration.py
├── i18n/ # Translations
│ ├── en_US.po
│ └── fil_PH.po # Filipino translation
├── README.rst
└── LICENSE
```
### __manifest__.py Template
```python
# Copyright 2025 Jake Tolentino
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Finance BIR Compliance",
"version": "19.0.1.0.0",
"category": "Accounting/Localizations",
"summary": "Philippine BIR tax forms automation and compliance",
"author": "Jake Tolentino, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/l10n-philippines",
"license": "AGPL-3",
"depends": [
"account",
"hr_payroll",
"l10n_ph", # Philippine localization
],
"data": [
"security/ir.model.access.csv",
"views/bir_form_views.xml",
"views/menu_items.xml",
"reports/bir_1601c_report.xml",
],
"demo": [
"demo/bir_form_demo.xml",
],
"installable": True,
"application": False,
"auto_install": False,
}
```
### Git Workflow
#### Branch Naming Convention (OCA Standard)
```bash
# Format: {version}-{type}-{module_name}
# Types: feature, fix, refactor, docs
# Examples:
git checkout -b 19.0-feature-finance_bir_compliance
git checkout -b 18.0-fix-expense_ocr_confidence
git checkout -b 19.0-refactor-multi_agency_reports
```
#### Commit Message Convention
```bash
# Format: [TAG] module_name: Short description
# Tags: ADD, FIX, REF, REM, MOV, REL, I18N, MERGE
# Examples:
git commit -m "[ADD] finance_bir_compliance: BIR Form 1601-C XML generator"
git commit -m "[FIX] expense_ocr: Handle rotated receipt images"
git commit -m "[REF] multi_agency: Optimize database queries for 8 agencies"
git commit -m "[I18N] finance_bir: Add Filipino translations for forms"
```
#### Pre-commit Hooks Setup
```bash
# Install pre-commit framework
pip install pre-commit --break-system-packages
# Create .pre-commit-config.yaml
cat > .pre-commit-config.yaml << 'EOF'
repos:
- repo: https://github.com/OCA/pylint-odoo
rev: v8.0.20
hooks:
- id: pylint-odoo
args: ["--rcfile=.pylintrc"]
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
args: ["--line-length=88"]
- repo: https://github.com/PyCQA/flake8
rev: 6.0.0
hooks:
- id: flake8
args: ["--max-line-length=88", "--extend-ignore=E203,W503"]
- repo: https://github.com/PyCQA/isort
rev: 5.12.0
hooks:
- id: isort
args: ["--profile=black"]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
args: ["--maxkb=1024"]
EOF
# Install hooks
pre-commit install
```
---
## CI/CD Pipeline Configuration
### GitHub Actions Workflow
Create `.github/workflows/odoo-ci-cd.yml`:
```yaml
name: Odoo CI/CD Pipeline
on:
push:
branches: [main, develop, '**-feature-**', '**-fix-**']
pull_request:
branches: [main, develop]
env:
ODOO_VERSION: "19.0"
POSTGRESQL_VERSION: "15"
DO_PROJECT_ID: "29cde7a1-8280-46ad-9fdf-dea7b21a7825"
SUPABASE_PROJECT_ID: "spdtwktxdalcfigzeqrz"
jobs:
lint:
name: Code Quality Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install --break-system-packages pre-commit pylint-odoo flake8 black isort
- name: Run pre-commit hooks
run: pre-commit run --all-files
- name: Run pylint-odoo
run: |
find . -name "*.py" -not -path "./venv/*" | xargs pylint-odoo --rcfile=.pylintrc
test:
name: Unit & Integration Tests
runs-on: ubuntu-latest
needs: lint
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: test_db
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo_test_password
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Odoo test image
run: |
docker build -t odoo-test:${{ env.ODOO_VERSION }} \
--build-arg ODOO_VERSION=${{ env.ODOO_VERSION }} \
-f Dockerfile.test .
- name: Run Odoo unit tests
run: |
docker run --rm \
--network host \
-e DB_HOST=localhost \
-e DB_PORT=5432 \
-e DB_USER=odoo \
-e DB_PASSWORD=odoo_test_password \
Voir sur GitHub