feat(ats): add batch screening mode for multi-resume ranking #126
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Code Quality | |
| on: | |
| push: | |
| branches: [ main, development ] | |
| pull_request: | |
| branches: [ main, development ] | |
| jobs: | |
| security: | |
| name: Security Analysis | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v2 | |
| with: | |
| version: "latest" | |
| - name: Install dependencies | |
| run: uv sync --extra utils --group dev | |
| - name: Run Bandit (security linter) | |
| run: | | |
| uv run bandit -r src/simple_resume/ -f json -o bandit-report.json || true | |
| uv run bandit -r src/simple_resume/ | |
| - name: Run Safety (dependency security) | |
| run: | | |
| uv run safety scan --ignore 51457 --save-as json safety-report.json || true | |
| - name: Upload security reports | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: security-reports | |
| path: | | |
| bandit-report.json | |
| safety-report.json | |
| complexity: | |
| name: Code Complexity Analysis | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v2 | |
| with: | |
| version: "latest" | |
| - name: Install dependencies | |
| run: uv sync --extra utils --group dev | |
| - name: Install complexity tools | |
| run: uv pip install radon xenon | |
| - name: Run Radon (cyclomatic complexity) | |
| run: | | |
| uv run radon cc src/simple_resume/ --min B | |
| uv run radon mi src/simple_resume/ --min B | |
| uv run radon cc src/simple_resume/ --json > radon-report.json || true | |
| - name: Run Xenon (complexity monitoring) | |
| run: uv run xenon --max-absolute B --max-modules A --max-average A src/simple_resume/ || true | |
| - name: Upload complexity reports | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: complexity-reports | |
| path: radon-report.json | |
| documentation: | |
| name: Documentation Quality | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v2 | |
| with: | |
| version: "latest" | |
| - name: Install dependencies | |
| run: uv sync --extra utils --group dev | |
| - name: Check docstring coverage | |
| run: | | |
| uv run interrogate src/simple_resume/ --fail-under 80 --quiet || true | |
| - name: Check README links | |
| run: | | |
| npm install -g markdown-link-check | |
| markdown-link-check README.md || true | |
| - name: Validate Markdown files | |
| run: | | |
| find . -name "*.md" -not -path "./.git/*" -not -path "./.venv/*" -not -path "./htmlcov/*" -exec sh -c 'uv run python -c "import markdown; content=open(\"\\$1\").read(); markdown.markdown(content); print(\"\\$1 is valid markdown\")"' _ {} \; |