Files
vergabe-teilnahme/CLAUDE.md
2026-05-08 14:26:48 +02:00

3.4 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

Vergabe Teilnahme is a web-based tender/bid management system (internal collaboration tool) that supports a company through the full lifecycle of public and private procurement bids — from initial research through post-award retrospective. The language of the application and all domain documentation is German.

The authoritative requirements are in wiki/ProductRequirementsDocument.md. Technical architecture in wiki/ArchitectureBlueprint.md. Use cases in wiki/UseCaseCatalog.md.

Tech Stack

Django 6.x · uv (package manager) · Tailwind CSS v4 (via Vite) · HTMX 2.x · Alpine.js 3.x · PostgreSQL 16+ (psycopg3)

Entwicklungs-Commands

make db           # PostgreSQL via Docker starten (oder infra-postgres-1 verwenden)
make dev          # Django-Dev-Server (Port 8000)
make css          # Tailwind CSS im Watch-Modus
make migrate      # Migrations generieren und ausführen
make test         # pytest ausführen
make lint         # ruff + mypy
uv run manage.py test vergabe_teilnahme.apps.<app>   # Einzelne App testen
uv run pytest vergabe_teilnahme/apps/<app>/tests/    # Einzelne Testdatei

Projektstruktur

vergabe_teilnahme/
├── apps/           # Alle Django-Apps
│   ├── core/       # FlexibleModel, CustomAttribute, EntityFieldConfig, Freigabe
│   ├── accounts/   # Mitarbeiter (AbstractUser)
│   └── ...         # je eine App pro Fachdomäne
├── settings/       # base.py, dev.py, prod.py
└── urls.py

static/
├── src/main.css    # Tailwind-Quelldatei (mit @layer components und @theme brand tokens)
├── vendor/         # HTMX, Alpine.js (lokal, kein CDN)
└── dist/           # Build-Output (gitignored)

workplans/          # Ralph-Loop-Workplans (WP-0001 bis WP-0012)
wiki/               # PRD, Blueprint, Use-Case-Katalog

Shared Infrastructure Note

Port 5432 is used by infra-postgres-1 (the Custodian shared PostgreSQL container). The vergabe_db database and vergabe user are created there. docker-compose.dev.yml documents the intended standalone setup but is not started when infra container is active.

Domain Model — Key Concepts

The system manages Ausschreibungen (tenders) through 8 phases:

Phase Name
1 Recherche & Unterlagen bereitstellen
2 Teilnahmeentscheidung treffen
3 Detaillierte Durchsicht & offene Punkte
4 Bieterfragen, Subunternehmer, offene Punkte klären
5 Preismodell dokumentieren
6 Unterlagen finalisieren
7 Abgabe
8 Zuschlag / Nachbetrachtung

Core entities: Ausschreibung, Los (lot), Anforderung (requirement), Aufgabe (task), Bieterfrage (bidder question), Dokument, Subunternehmer, Preispunkt (price point), Marktbegleiter (competitor), Nachweis (compliance certificate), Referenz, Freigabe (approval), Nachbetrachtung (retrospective).

Vergleichsgewicht (comparison weight): price points carry a weight in [0.0, 2.0] (default 1.0). Weighted averages use Σ(value × weight) / Σ(weight); points with weight 0.0 are excluded from averages entirely.

Custodian State Hub

This repo is tracked by the Custodian State Hub. At session start inside this repo, call get_domain_summary("<domain_slug>") via the state-hub MCP tool. End every non-trivial session with add_progress_event().