Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
75555d5
Merge pull request #631 from PROCOLLAB-github/dev
Toksi86 Apr 23, 2026
f86461a
Merge pull request #633 from PROCOLLAB-github/dev
Toksi86 Apr 23, 2026
2c6e31a
Merge pull request #649 from PROCOLLAB-github/dev
Toksi86 Jun 10, 2026
4b5606c
Make email settings configurable
TThanos3000 Jul 16, 2026
e71527b
Merge pull request #650 from PROCOLLAB-github/feature/configurable-em…
TThanos3000 Jul 17, 2026
1793978
Add scoped throttling for public auth endpoints
TThanos3000 Jul 19, 2026
0a05469
Align auth register throttle scope
TThanos3000 Jul 19, 2026
6867cd5
Read scoped throttle rates dynamically
TThanos3000 Jul 19, 2026
3388e54
Fix post-only throttle direct test
TThanos3000 Jul 19, 2026
95bd2e7
Merge pull request #651 from PROCOLLAB-github/codex/api-scoped-thrott…
TThanos3000 Jul 19, 2026
f64fa35
Document application, project and submission domain model
TThanos3000 Jul 19, 2026
c7a6c24
Merge pull request #652 from PROCOLLAB-github/feature/application-pro…
TThanos3000 Jul 19, 2026
1614343
Add application model
TThanos3000 Jul 19, 2026
dc4f4d4
Merge pull request #653 from PROCOLLAB-github/feature/application-model
TThanos3000 Jul 19, 2026
b3c0dac
Add application API
TThanos3000 Jul 20, 2026
da0cfd1
Merge pull request #654 from PROCOLLAB-github/feature/application-api
TThanos3000 Jul 20, 2026
dc26e1c
Add submission model
TThanos3000 Jul 20, 2026
00f6b78
Merge pull request #655 from PROCOLLAB-github/feature/submission-model
TThanos3000 Jul 20, 2026
6ba74bb
Add submission API
TThanos3000 Jul 20, 2026
fb4658a
Merge pull request #656 from PROCOLLAB-github/feature/submission-api
TThanos3000 Jul 20, 2026
29bb30b
Add env-based host configuration
TThanos3000 Jul 21, 2026
ff0ee65
Merge pull request #657 from PROCOLLAB-github/feature/env-hosts-config
TThanos3000 Jul 21, 2026
d62048c
Document case championship domain
TThanos3000 Jul 21, 2026
14a563e
Merge pull request #658 from PROCOLLAB-github/docs/case-championship-…
TThanos3000 Jul 21, 2026
f63beda
Add application team models
TThanos3000 Jul 21, 2026
9102c85
Merge pull request #659 from PROCOLLAB-github/feature/application-tea…
TThanos3000 Jul 21, 2026
86c5edc
Add program participation policy
TThanos3000 Jul 21, 2026
b573898
Merge pull request #660 from PROCOLLAB-github/feature/program-partici…
TThanos3000 Jul 21, 2026
19521a3
Add application team domain service
TThanos3000 Jul 21, 2026
cf88061
Merge pull request #661 from PROCOLLAB-github/feature/application-tea…
TThanos3000 Jul 21, 2026
2b25546
Add team permissions and API
TThanos3000 Jul 21, 2026
6d63f8a
Merge pull request #662 from PROCOLLAB-github/feature/team-permission…
TThanos3000 Jul 22, 2026
36974e8
Add team invitation flow
TThanos3000 Jul 22, 2026
7b39052
Merge pull request #663 from PROCOLLAB-github/feature/team-invites-api
TThanos3000 Jul 22, 2026
a027d11
Add team invite candidate search
TThanos3000 Jul 22, 2026
cdc81c8
Merge pull request #664 from PROCOLLAB-github/feature/team-invite-can…
TThanos3000 Jul 22, 2026
44c5f37
Expose program application policy
TThanos3000 Jul 22, 2026
08fdff6
Merge pull request #665 from PROCOLLAB-github/feature/program-applica…
TThanos3000 Jul 23, 2026
35647a3
Document submission evaluation domain
TThanos3000 Jul 24, 2026
f0c606b
Merge pull request #666 from PROCOLLAB-github/docs/submission-evaluat…
TThanos3000 Jul 24, 2026
88c54b7
Add submission evaluation models
TThanos3000 Jul 26, 2026
5cd8f88
Harden evaluation score validation
TThanos3000 Jul 26, 2026
cfb63a8
Merge pull request #667 from PROCOLLAB-github/feature/submission-eval…
TThanos3000 Jul 26, 2026
c0372c7
Add submission assignment API
TThanos3000 Jul 26, 2026
5f1a188
Fix assignment API schema compatibility
TThanos3000 Jul 26, 2026
4a92819
Merge pull request #668 from PROCOLLAB-github/feature/submission-assi…
TThanos3000 Jul 26, 2026
e4b7f43
Add roadmap synchronization workflow
TThanos3000 Jul 27, 2026
747f449
Add roadmap fields to pull request template
TThanos3000 Jul 27, 2026
d08c9a6
Fix pull request event payload parsing
TThanos3000 Jul 27, 2026
c6bbcf2
Merge pull request #669 from PROCOLLAB-github/feature/dev-071-roadmap…
TThanos3000 Jul 27, 2026
225060c
Add expert evaluation backend flow
TThanos3000 Jul 27, 2026
a264a00
Fix evaluation API CI compatibility
TThanos3000 Jul 27, 2026
6368cc5
Merge pull request #670 from PROCOLLAB-github/feature/dev-050-expert-…
TThanos3000 Jul 27, 2026
4e92eb5
Add React dev demo data command
TThanos3000 Jul 27, 2026
a905e6d
Merge pull request #671 from PROCOLLAB-github/feature/dev-072-demo-data
TThanos3000 Jul 28, 2026
95139dc
fix postgres application row locking
TThanos3000 Jul 28, 2026
c80bbbd
Merge pull request #672 from PROCOLLAB-github/fix/dev-072-postgres-ap…
TThanos3000 Jul 28, 2026
0127dcb
add submitted evaluation amendments
TThanos3000 Jul 29, 2026
5f81ccf
Merge pull request #673 from PROCOLLAB-github/feature/dev-073-evaluat…
TThanos3000 Jul 29, 2026
de2bd67
add backend postgres ci
TThanos3000 Jul 30, 2026
fe79351
fix postgres row locking compatibility
TThanos3000 Jul 30, 2026
3df062a
make ci database cleanup deterministic
TThanos3000 Jul 30, 2026
dd3a0b6
Merge pull request #674 from PROCOLLAB-github/infra/dev-074-backend-p…
TThanos3000 Jul 30, 2026
3ed3263
add backend react dev autodeploy
TThanos3000 Jul 31, 2026
6af421f
Merge pull request #675 from PROCOLLAB-github/infra/dev-075-backend-r…
TThanos3000 Jul 31, 2026
7a24d89
fix react dev celery service name
TThanos3000 Jul 31, 2026
accd9d5
Merge pull request #676 from PROCOLLAB-github/fix/dev-075-react-dev-c…
TThanos3000 Jul 31, 2026
f8605d9
fix react dev deploy stdin handling
TThanos3000 Jul 31, 2026
265d4bd
fix compose no tty option
TThanos3000 Jul 31, 2026
5ca7a28
Merge pull request #677 from PROCOLLAB-github/fix/dev-075-compose-run…
TThanos3000 Jul 31, 2026
f7fe758
use short no tty option for react dev deploy
TThanos3000 Jul 31, 2026
48c5a96
Merge pull request #678 from PROCOLLAB-github/fix/dev-075-compose-run…
TThanos3000 Jul 31, 2026
948d032
add manager program overview api
TThanos3000 Jul 31, 2026
8496d72
Merge pull request #679 from PROCOLLAB-github/feature/dev-076-manager…
TThanos3000 Jul 31, 2026
85da69c
Add project lifecycle API
TThanos3000 Aug 2, 2026
9c455da
Fix project creation database locking
TThanos3000 Aug 2, 2026
f5933b0
Merge pull request #680 from PROCOLLAB-github/feature/dev-077-project…
TThanos3000 Aug 3, 2026
c6d310f
Add standalone project creation API
TThanos3000 Aug 3, 2026
31c44be
Fix project publication validation
TThanos3000 Aug 3, 2026
8da2b97
Merge pull request #681 from PROCOLLAB-github/feature/dev-078-project…
TThanos3000 Aug 3, 2026
90524df
Add project goals and achievements workspace API
TThanos3000 Aug 5, 2026
dc6fb1b
Merge pull request #682 from PROCOLLAB-github/feature/dev-082-project…
TThanos3000 Aug 6, 2026
3f52b9a
Add project invitation API
TThanos3000 Aug 6, 2026
8820394
Merge pull request #683 from PROCOLLAB-github/feature/dev-079-project…
TThanos3000 Aug 6, 2026
e535604
Use prebuilt image for React-dev deploy
TThanos3000 Aug 6, 2026
bc872a2
Merge pull request #684 from PROCOLLAB-github/infra/backend-react-dev…
TThanos3000 Aug 6, 2026
c52e254
Allow manual CI to trigger React-dev deploy
TThanos3000 Aug 6, 2026
cab9834
Merge pull request #685 from PROCOLLAB-github/fix/react-dev-manual-ci…
TThanos3000 Aug 6, 2026
4576e99
Add news feed API
TThanos3000 Aug 6, 2026
8e55476
Merge pull request #686 from PROCOLLAB-github/feature/dev-083-news-fe…
TThanos3000 Aug 7, 2026
b64986b
Add React dev industry reference data
TThanos3000 Aug 7, 2026
1725db9
Merge pull request #687 from PROCOLLAB-github/fix/react-dev-industry-…
TThanos3000 Aug 7, 2026
0581448
Add vacancies to project workspace detail
TThanos3000 Aug 7, 2026
fafdc2c
Merge pull request #688 from PROCOLLAB-github/feature/dev-087-workspa…
TThanos3000 Aug 10, 2026
ab646a2
Add React dev news feed demo data
TThanos3000 Aug 10, 2026
5ca9227
Merge pull request #689 from PROCOLLAB-github/feature/dev-083-news-fe…
TThanos3000 Aug 10, 2026
78daced
Add project invitation candidate search
TThanos3000 Aug 10, 2026
6bbee17
Merge pull request #690 from PROCOLLAB-github/feature/dev-079-project…
TThanos3000 Aug 10, 2026
bd860e6
Add project subscription workspace API
TThanos3000 Aug 10, 2026
80caacc
Merge pull request #691 from PROCOLLAB-github/feature/dev-084-project…
TThanos3000 Aug 11, 2026
93f27ca
Add subscribed projects API
TThanos3000 Aug 11, 2026
6c9e0d8
Merge pull request #692 from PROCOLLAB-github/feature/dev-084-subscri…
TThanos3000 Aug 11, 2026
c7756a6
Add safe public profile API
TThanos3000 Aug 11, 2026
6dc7790
Fix public profile avatar regression test
TThanos3000 Aug 11, 2026
ec77544
Merge pull request #693 from PROCOLLAB-github/feature/dev-090-public-…
TThanos3000 Aug 12, 2026
771ac1c
Add typed social links API
TThanos3000 Aug 12, 2026
10ccced
Merge pull request #694 from PROCOLLAB-github/feature/dev-090-social-…
TThanos3000 Aug 12, 2026
aa5da44
Add program analytics access contract
TThanos3000 Aug 13, 2026
969f5b1
Merge pull request #695 from PROCOLLAB-github/feature/dev-091-analyti…
TThanos3000 Aug 13, 2026
45278a3
Add secure vacancy workflow API
TThanos3000 Aug 13, 2026
b792a75
Fix vacancy workflow regression tests
TThanos3000 Aug 13, 2026
9d59951
Fix vacancy search test portability
TThanos3000 Aug 13, 2026
37d7c1c
Merge pull request #696 from PROCOLLAB-github/feature/dev-093-vacanci…
TThanos3000 Aug 13, 2026
c468044
Add in-app notifications contract
TThanos3000 Aug 15, 2026
52be5bb
Fix notification read locking
TThanos3000 Aug 15, 2026
4116d31
Fix notification transition deduplication
TThanos3000 Aug 15, 2026
0db55b9
Merge pull request #697 from PROCOLLAB-github/feature/dev-094-notific…
TThanos3000 Aug 15, 2026
cb4e13b
fix: validate news attachment links
TThanos3000 Aug 21, 2026
9075dc9
Merge pull request #698 from PROCOLLAB-github/hotfix/news-attachments
TThanos3000 Aug 21, 2026
c5d9022
fix: make news audience migration non-atomic
TThanos3000 Aug 21, 2026
70766a1
Merge pull request #702 from PROCOLLAB-github/hotfix/master-news-0010…
TThanos3000 Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,29 @@
DEBUG=
DJANGO_SECRET_KEY=

# Дополнительные домены для изолированных dev-контуров; в боевом окружении переменные необязательны.
EXTRA_ALLOWED_HOSTS=
EXTRA_CSRF_TRUSTED_ORIGINS=
# Пример для react-dev:
# EXTRA_ALLOWED_HOSTS=api-react-dev.procollab.ru,react-dev.procollab.ru
# EXTRA_CSRF_TRUSTED_ORIGINS=https://api-react-dev.procollab.ru,https://react-dev.procollab.ru

EMAIL_USER=
EMAIL_BACKEND=anymail.backends.unisender_go.EmailBackend
VERIFY_EMAIL_REDIRECT_URL=https://app.procollab.ru/auth/verification/
EMAIL_PASSWORD=
EMAIL_HOST=
EMAIL_PORT=

DRF_THROTTLE_AUTH_REGISTER=5/min
DRF_THROTTLE_AUTH_RESEND_EMAIL=3/min
DRF_THROTTLE_AUTH_RESET_PASSWORD=3/min
DRF_THROTTLE_TOKEN_OBTAIN=10/min
DRF_THROTTLE_PROGRAM_REGISTER_NEW=10/min
DRF_THROTTLE_APPLICATION_CREATE=10/min
DRF_THROTTLE_SUBMISSION_CREATE=10/min
DRF_THROTTLE_EVALUATION_AMEND=30/min

SENTRY_DSN=

DATABASE_NAME=
Expand All @@ -27,3 +45,5 @@ TELEGRAM_CHANNEL=

CLICKUP_API_TOKEN=
CLICKUP_SPACE_ID=
ALLOW_REACT_DEV_DEMO_SEED=False
REACT_DEV_DEMO_PASSWORD=
14 changes: 14 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,20 @@

Кратко опишите изменения и при необходимости приложите ссылку на задачу.

## Roadmap

Укажите связанные доработки из Google-таблицы.

```text
Roadmap-IDs: DEV-000
Roadmap-Complete: DEV-000
Roadmap-Partial:
```

- `Roadmap-IDs` — все связанные доработки.
- `Roadmap-Complete` — доработки, полностью закрываемые этим PR.
- `Roadmap-Partial` — доработки, реализованные только частично.

## Проверка

Укажите, как проверялись изменения.
Expand Down
161 changes: 161 additions & 0 deletions .github/workflows/backend-postgres-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
# Roadmap: DEV-074
name: Backend PostgreSQL CI

on:
pull_request:
branches:
- master
push:
branches:
- master
workflow_dispatch:

permissions:
contents: read

concurrency:
group: backend-postgres-ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
postgres-tests:
name: Backend PostgreSQL CI
runs-on: ubuntu-latest
timeout-minutes: 30

services:
postgres:
image: postgres:15-alpine
env:
POSTGRES_DB: procollab_ci
POSTGRES_USER: procollab_ci
POSTGRES_PASSWORD: procollab_ci_password
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U procollab_ci -d procollab_ci"
--health-interval 10s
--health-timeout 5s
--health-retries 5

env:
PYTHONUNBUFFERED: "1"
PYTHONDONTWRITEBYTECODE: "1"
DJANGO_SETTINGS_MODULE: procollab.settings_ci
DJANGO_SECRET_KEY: ci-only-not-production-secret
DEBUG: "False"
DATABASE_NAME: procollab_ci
DATABASE_USER: procollab_ci
DATABASE_PASSWORD: procollab_ci_password
DATABASE_HOST: 127.0.0.1
DATABASE_PORT: "5432"
ALLOW_REACT_DEV_DEMO_SEED: "False"
AUTOPOSTING_ON: "False"

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install dependencies
run: |
python -m pip install "poetry==1.2.2"
poetry config virtualenvs.create true
poetry install --no-interaction --no-ansi --no-root

- name: Verify PostgreSQL connection and locking support
run: |
poetry run python - <<'PY'
import django

django.setup()

from django.db import connection

connection.ensure_connection()
assert connection.vendor == "postgresql", connection.vendor
assert connection.features.has_select_for_update
print(f"Database vendor: {connection.vendor}")
print(
"select_for_update support: "
f"{connection.features.has_select_for_update}"
)
PY

- name: Check Django configuration
run: poetry run python manage.py check

- name: Check Django models
run: poetry run python manage.py check --tag models

- name: Check migration consistency
run: poetry run python manage.py makemigrations --check --dry-run

- name: Apply migrations
run: poetry run python manage.py migrate --noinput

- name: Check CI settings formatting
run: poetry run black --check procollab/settings_ci.py

- name: Lint CI settings
run: poetry run flake8 procollab/settings_ci.py

- name: Run PostgreSQL locking and constraint tests
run: |
poetry run python manage.py test \
partner_programs.tests.test_expert_evaluation_api.ConcurrentEvaluationSubmitTests \
partner_programs.tests.test_application_team_models.ApplicationTeamDatabaseConstraintTests \
partner_programs.tests.test_application_team_service.ApplicationTeamServiceSequentialConflictTests \
partner_programs.tests.test_program_participation_policy.PartnerProgramParticipationPolicyConstraintTests \
partner_programs.tests.test_team_api \
partner_programs.tests.test_team_invite_api \
partner_programs.tests.test_team_invite_service \
partner_programs.tests.test_team_management_service \
--verbosity 2

- name: Run full backend test suite
run: poetry run python manage.py test --verbosity 1 --keepdb

- name: Remove retained PostgreSQL test database
if: always()
run: |
poetry run python - <<'PY'
import os

import psycopg2
from psycopg2 import sql

test_database = "test_procollab_ci"

connection = psycopg2.connect(
dbname=os.environ["DATABASE_NAME"],
user=os.environ["DATABASE_USER"],
password=os.environ["DATABASE_PASSWORD"],
host=os.environ["DATABASE_HOST"],
port=os.environ["DATABASE_PORT"],
)
connection.autocommit = True

try:
with connection.cursor() as cursor:
cursor.execute(
"""
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = %s
AND pid <> pg_backend_pid()
""",
[test_database],
)
cursor.execute(
sql.SQL("DROP DATABASE IF EXISTS {}").format(
sql.Identifier(test_database)
)
)
finally:
connection.close()
PY
Loading
Loading