feat: slug change + streaming fix + specs
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s

This commit is contained in:
markov 2026-03-13 22:55:52 +01:00
parent f7622e13d5
commit e5ce44e438
4 changed files with 43 additions and 21 deletions

View File

@ -1,5 +1,5 @@
# Dev environment # Dev environment
TRACKER_DATABASE_URL=postgresql+asyncpg://team_board:team_board@postgres:5432/team_board_dev TRACKER_DATABASE_URL=postgresql+asyncpg://team_board:team_board@172.17.0.1:5432/team_board
TRACKER_REDIS_URL=redis://redis:6379/0 TRACKER_REDIS_URL=redis://redis:6379/0
TRACKER_ENV=dev TRACKER_ENV=dev
TRACKER_JWT_SECRET=dev-secret-not-for-production TRACKER_JWT_SECRET=dev-secret-not-for-production

View File

@ -5,29 +5,11 @@ services:
- "8100:8100" - "8100:8100"
env_file: env_file:
- .env.dev - .env.dev
depends_on: extra_hosts:
postgres: - "host.docker.internal:host-gateway"
condition: service_healthy
volumes: volumes:
- ./src:/app/src - ./src:/app/src
- ./data/uploads:/data/uploads - ./data/uploads:/data/uploads
- ./data/projects:/data/projects - ./data/projects:/data/projects
command: uvicorn tracker.app:app --host 0.0.0.0 --port 8100 --reload --reload-dir /app/src command: uvicorn tracker.app:app --host 0.0.0.0 --port 8100 --reload --reload-dir /app/src
restart: unless-stopped restart: unless-stopped
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: team_board
POSTGRES_PASSWORD: team_board
POSTGRES_DB: team_board_dev
ports:
- "5433:5432"
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U team_board -d team_board_dev"]
interval: 5s
timeout: 3s
retries: 5
restart: unless-stopped

33
docker-compose.yml.bak Normal file
View File

@ -0,0 +1,33 @@
services:
tracker:
build: .
ports:
- "8100:8100"
env_file:
- .env.dev
depends_on:
postgres:
condition: service_healthy
volumes:
- ./src:/app/src
- ./data/uploads:/data/uploads
- ./data/projects:/data/projects
command: uvicorn tracker.app:app --host 0.0.0.0 --port 8100 --reload --reload-dir /app/src
restart: unless-stopped
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: team_board
POSTGRES_PASSWORD: team_board
POSTGRES_DB: team_board_dev
ports:
- "5433:5432"
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U team_board -d team_board_dev"]
interval: 5s
timeout: 3s
retries: 5
restart: unless-stopped

View File

@ -51,6 +51,7 @@ class MemberCreateResponse(BaseModel):
class MemberUpdate(BaseModel): class MemberUpdate(BaseModel):
name: str | None = None name: str | None = None
slug: str | None = None
role: str | None = None role: str | None = None
status: str | None = None status: str | None = None
avatar_url: str | None = None avatar_url: str | None = None
@ -155,6 +156,12 @@ async def update_member(member_id: str, req: MemberUpdate, db: AsyncSession = De
if req.name is not None: if req.name is not None:
member.name = req.name member.name = req.name
if req.slug is not None:
# Check uniqueness
existing = await db.execute(select(Member).where(Member.slug == req.slug, Member.id != member.id))
if existing.scalar_one_or_none():
raise HTTPException(409, f"Slug '{req.slug}' already taken")
member.slug = req.slug
if req.role is not None: if req.role is not None:
member.role = req.role member.role = req.role
if req.status is not None: if req.status is not None: