159 lines
7.6 KiB
Markdown
159 lines
7.6 KiB
Markdown
# Worklog
|
||
|
||
## Log
|
||
|
||
| Timestamp | Phase | Work Block | Agent | Summary | Status |
|
||
|---|---|---|---|---|---|
|
||
| 2026-05-31 06:14 | init | 0 | a0_software_orchestrator | Project initialized | completed |
|
||
| 2026-05-31 12:32 | 0 | T001 | implementation_engineer | Created project structure, docker-compose.yml, .env.example, Makefile, README.md, .gitignore | completed |
|
||
| 2026-05-31 12:32 | 0 | T002 | implementation_engineer | Set up FastAPI app with async SQLAlchemy, Alembic migration (accounts, users), health endpoint | completed |
|
||
| 2026-05-31 12:32 | 0 | T003 | implementation_engineer | Initialized React+TS Vite project, Tailwind CSS, React Router, Zustand store, React Query, Radix UI, AppLayout, placeholder pages | completed |
|
||
| 2026-05-31 12:48 | 1 | T004 | implementation_engineer | Created Role model, updated User model with FK role_id, added Account.roles relationship, created Alembic migration for roles table, ran migrations | completed |
|
||
| 2026-05-31 12:48 | 1 | T005 | implementation_engineer | Implemented JWT security (core/security.py), auth schemas (schemas/auth.py), auth endpoints (POST /auth/register, POST /auth/login, POST /auth/refresh, GET /auth/me) with bcrypt + JWT | completed |
|
||
| 2026-05-31 12:48 | 1 | T006 | implementation_engineer | Created FastAPI dependencies (api/deps.py): get_current_user, get_current_active_user, require_permission with HTTPBearer JWT extraction, role permission check, and tenant filtering via account_id | completed |
|
||
| 2026-05-31 12:48 | 1 | T007 | implementation_engineer | Implemented user management API (GET/POST /users, GET/PUT/DELETE /users/{id}) and role management API (GET/POST /roles, PUT /roles/{id}) with admin permissions, tenant filtering, pagination | completed |
|
||
| 2026-05-31 12:48 | 1 | T008 | implementation_engineer | Completed Login/Register pages with API, ProtectedRoute component, auth-aware routing, admin Users/Roles pages with CRUD, AppLayout with conditional admin links, authStore with localStorage persistence, auto-refresh interceptor | completed |
|
||
| 2026-05-31 13:05 | 2 | T009 | implementation_engineer | Created Contact and Tag SQLAlchemy models, contact_tags M2M association table, updated Account model with contacts and tags relationships, generated and applied Alembic migration a5b1e93690ff | completed |
|
||
| 2026-05-31 13:05 | 2 | T010 | implementation_engineer | Created Pydantic schemas (schemas/contact.py), contacts CRUD router (api/v1/contacts.py) with search/filter/pagination/permissions, tags router (api/v1/tags.py) for listing/creating tags, registered both routers in api/v1/router.py | completed |
|
||
| 2026-05-31 13:05 | 2 | T011 | implementation_engineer | Created Contacts.tsx list page with search/filter/table/pagination, ContactForm.tsx shared component with company/person tabs, billing/shipping addresses, tag selector, ContactsNew.tsx create page, ContactsEdit.tsx edit page, ContactDetail.tsx detail page with info/addresses/notes/tags/projects placeholder, updated App.tsx with contacts routes, updated AppLayout.tsx with AddressBook sidebar link | completed |
|
||
## 2026-05-31 - T012: Equipment Catalog Datenbank-Modelle
|
||
|
||
**Status**: ✅ Abgeschlossen
|
||
|
||
### Erstellt
|
||
- `backend/app/models/equipment.py` – Equipment-Modell mit allen Feldern
|
||
- `backend/app/models/stock_location.py` – StockLocation-Modell
|
||
- `backend/app/models/equipment_group.py` – EquipmentGroup mit M2M-Association-Table
|
||
- `backend/app/models/account.py` – um back_populates-Beziehungen erweitert
|
||
- `backend/app/models/__init__.py` – um neue Modelle erweitert
|
||
- `backend/alembic/versions/da13d44bd483_create_equipment_stocklocation_.py` – Migration generiert und angewandt
|
||
|
||
### Nächster Task
|
||
**T013**: Equipment Catalog API (CRUD-Endpoints)
|
||
## 2026-05-31 - T013: Equipment Catalog API
|
||
|
||
**Status**: ✅ Abgeschlossen
|
||
|
||
### Erstellt
|
||
- – Pydantic-Schemas (CRUD-Requests + Responses mit Location/Supplier-Refs)
|
||
- – StockLocation-Schemas
|
||
- – EquipmentGroup-Schemas mit Item-Mengen
|
||
- – CRUD-Router mit search/filter/pagination/RBAC
|
||
- – StockLocation-CRUD
|
||
- – EquipmentGroup-CRUD mit Item-Management
|
||
- – +3 neue Router registriert
|
||
|
||
### Nächster Task
|
||
**T014**: Equipment catalog UI (Frontend)
|
||
## 2026-05-31 - T014: Equipment Catalog UI
|
||
|
||
**Status**: ✅ Abgeschlossen
|
||
|
||
### Erstellt
|
||
- – Formular mit Name, Kategorie, Status, Standort, Finanz-/Physik-Daten
|
||
- – Liste mit Search, Kategorie/Status-Filter, Pagination, RBAC
|
||
- – Create-Seite
|
||
- – Edit-Seite
|
||
- – Detailansicht mit allen Equipment-Feldern
|
||
- – Routen für /equipment, /equipment/new, /equipment/:itemId, /equipment/:itemId/edit
|
||
|
||
### Nächster Task
|
||
**T015**: Crew Datenbank-Modelle
|
||
## 2026-05-31 - T015+T016: Crew Datenbank + API
|
||
|
||
**Status**: ✅ Abgeschlossen
|
||
|
||
### Erstellt T015
|
||
- – Crew + CrewAvailability Modelle
|
||
- Alembic-Migration: 14f212e85ab6 (Tabellen: crew, crew_availabilities)
|
||
|
||
### Erstellt T016
|
||
- – Pydantic-Schemas
|
||
- – Router (Crew CRUD + Availabilities CRUD)
|
||
- Router in v1/router.py registriert
|
||
|
||
### Nächster Task
|
||
**T017**: Crew Frontend (UI)
|
||
## 2026-05-31 - T017: Crew Management UI
|
||
|
||
**Status**: ✅ Abgeschlossen
|
||
|
||
### Erstellt
|
||
-
|
||
- (Liste)
|
||
-
|
||
-
|
||
- (mit Availabilities-Anzeige)
|
||
- – Crew-Routen registriert
|
||
|
||
### Nächster Task
|
||
**T018-T020**: Vehicles (Modelle → API → UI)
|
||
## 2026-05-31 - T018-T020: Vehicles (DB + API + UI)
|
||
|
||
**Status**: ✅ Abgeschlossen
|
||
|
||
### Erstellt T018
|
||
- – Vehicle + VehicleAssignment Modelle (project_id ohne FK, da Projects später kommt)
|
||
- Alembic-Migration: 32b02c118683
|
||
- Account um vehicles-Beziehung erweitert
|
||
|
||
### Erstellt T019
|
||
- – Pydantic-Schemas
|
||
- – Router (Vehicle CRUD + Assignments)
|
||
- Router registriert
|
||
|
||
### Erstellt T020
|
||
-
|
||
- (Liste)
|
||
-
|
||
-
|
||
- (mit Assignments-Anzeige)
|
||
- – Vehicle-Routen registriert
|
||
|
||
### Nächster Task
|
||
**T022**: Project CRUD API
|
||
## 2026-05-31 - T022: Project CRUD API
|
||
|
||
**Status**: ✅ Abgeschlossen
|
||
|
||
### Erstellt
|
||
- `backend/app/schemas/project.py` – Pydantic-Schemas für Project, SubProject, ProjectFunctionGroup, ProjectFunction (Create/Update/Response/ListResponse-Varianten)
|
||
- `backend/app/api/v1/projects.py` – Router mit vollständigen CRUD-Endpunkten:
|
||
- Project: GET (list mit search/filter/pagination), POST, GET/:id, PUT/:id, DELETE/:id
|
||
- SubProject: GET list, POST create, GET/:id, PUT/:id, DELETE/:id (unter /projects/{id}/subprojects)
|
||
- ProjectFunctionGroup: GET list, POST create, GET/:id, PUT/:id, DELETE/:id (unter /projects/{id}/function-groups)
|
||
- ProjectFunction: GET list, POST create, GET/:id, PUT/:id, DELETE/:id (unter /projects/{id}/function-groups/{fg_id}/functions)
|
||
- `backend/app/api/v1/router.py` – Router registriert als projects_router
|
||
|
||
### Permission-Checks
|
||
- `projects:read` für GET-Endpunkte
|
||
- `projects:write` für POST/PUT-Endpunkte
|
||
- `projects:delete` für DELETE-Endpunkte
|
||
|
||
### Tenant-Isolation
|
||
- Alle Endpunkte filtern nach `current_user.account_id`
|
||
- SubProject/FunctionGroup/Function-Endpunkte validieren Projekt-Zugehörigkeit via account_id
|
||
|
||
### Syntax-Check
|
||
- `python -c "from app.api.v1.projects import router; print('OK')"` → OK
|
||
|
||
### Nächster Task
|
||
**T023**: Project list and detail UI
|
||
## 2026-05-31 - T025: ProjectEquipment and ProjectCrew Models + Migration
|
||
|
||
**Status**: ✅ Abgeschlossen
|
||
|
||
### Erstellt
|
||
- `backend/app/models/project.py` – Added ProjectEquipmentGroup, ProjectEquipment, ProjectCrew SQLAlchemy models with relationships
|
||
- `backend/app/models/__init__.py` – Imported new models
|
||
- `backend/alembic/versions/b183c967088f_add_project_equipment_and_crew.py` – Alembic migration (autogenerated, applied)
|
||
|
||
### Checks
|
||
- Backend start: OK (no ImportError)
|
||
- Health: 200
|
||
- Auth: Registration + Login → Token
|
||
- Endpoints: /projects, /contacts, /equipment, /crew all return 200
|
||
|
||
### Nächster Task
|
||
**T026**: Implement project equipment group and items API
|