|
1 | | -# Project Status — 2026-03-29 |
| 1 | +# Project Status — 2026-03-30 |
2 | 2 |
|
3 | | -## Huidige fase: Fase 7 (Hybrid Cloud + Multi-tenant) — deployed |
| 3 | +## Huidige fase: Fase 7 (Hybrid Cloud + Multi-tenant + Project Container) — in progress |
4 | 4 |
|
5 | 5 | ### Wat is af |
6 | 6 | - Fase 0: Research & validatie |
|
13 | 13 | - Fase 6: Nextcloud Cloud Storage — WebDAV, save/open dialog |
14 | 14 | - **Fase 7a: Project Management** — PostgreSQL backend, REST API, frontend UI |
15 | 15 | - **Fase 7b: Hybrid Nextcloud I/O** — volume mount reads, WebDAV writes, multi-tenant |
| 16 | +- **Fase 7c: Project Container Model** — migratie naar models/validation/ structuur met project.wefc manifest |
16 | 17 |
|
17 | | -### Gedaan in vorige sessie (2026-03-28) |
18 | | -- Project management systeem gebouwd (full-stack): |
19 | | - - Backend: async SQLAlchemy 2.0 + PostgreSQL (SQLite fallback) |
20 | | - - ORM models: Project + ProjectFile |
21 | | - - REST API: /api/v2/projects CRUD + file upload/download/delete |
22 | | - - Frontend: IProjectStorage interface + ServerProjectStorage + LocalProjectStorage |
23 | | - - .bvp bestandsformaat voor lokale projecten (File System Access API) |
24 | | - - ProjectList component in Backstage + i18n (NL + EN) |
25 | | - - AppShell integratie met handleOpenProject |
26 | | -- Hybrid Nextcloud I/O migratie: |
27 | | - - server/tenant_config.py: multi-tenant config loader (tenants.json) |
28 | | - - server/volume_reader.py: directe filesystem reads van NC volume mount |
29 | | - - server/routers/cloud.py: refactored cloud router (was inline in main.py) |
30 | | - - NextcloudClient: multi-tenant factory (from_tenant) + client registry |
31 | | - - docker-compose.yml: NC data volume (ro), tenant config mount |
32 | | - - config/tenants.json: 3BM tenant configuratie |
33 | | -- Ghost mode pogingen (nog niet werkend): |
34 | | - - Opacity 0.85→0.15: transparantie zelf werkt nu |
35 | | - - Reset knop werkt |
36 | | - - Geselecteerd element wordt nog NIET opaque getoond |
37 | | - - Poging 1: mesh-level material restore → werkt niet (IFC batcht elementen in shared meshes) |
38 | | - - Poging 2: fragment highlight overlay met opacity 1.0 → werkt ook niet |
39 | | - - Moet dieper onderzocht worden hoe That Open Engine fragment highlights werken |
40 | | -- Deployed naar Hetzner (commits a2d3b11, 5c8ba74, d12678f, 3674eb5) |
41 | | - |
42 | | -### Gedaan in deze sessie (2026-03-29) |
| 18 | +### Gedaan in vorige sessie (2026-03-29) |
43 | 19 | - **Ghost mode bug opgelost:** |
44 | | - - Oorzaak: material-level opacity (`mat.opacity = 0.15`) beïnvloedt alle elementen in shared meshes door IFC batching |
45 | | - - Fragment highlight overlay werd door transparante materials heen gerenderd (Three.js render order: opaque → transparent) |
46 | 20 | - Fix: vervangen door `FragmentsModel.setOpacity()` / `resetOpacity()` / `setColor()` — fragment-level per-element controle |
47 | | - - Verwijderd: `savedMaterials` map, `allGuidsCache`, `restoreMaterials()` methode |
48 | | - - Geselecteerd element krijgt nu correct volle opacity + Verdigris kleur (#44B6A8) |
| 21 | + |
| 22 | +### Gedaan in deze sessie (2026-03-30) |
| 23 | +- **Project container model migratie:** |
| 24 | + - nextcloud_client.py: nieuwe constanten (DIR_MODELS, DIR_VALIDATION, MANIFEST_FILENAME) |
| 25 | + - nextcloud_client.py: _tool_path schrijft nu naar validation/ i.p.v. 99_overige_documenten/bim-validator/ |
| 26 | + - nextcloud_client.py: list_models() met fallback models/ → 70_BIM/ |
| 27 | + - nextcloud_client.py: list_validation_files() met fallback validation/ → 99_overige_documenten/bim-validator/ |
| 28 | + - nextcloud_client.py: download_file() met fallback new → legacy |
| 29 | + - nextcloud_client.py: upload_to_validation() — altijd naar validation/ |
| 30 | + - nextcloud_client.py: manifest CRUD — read_manifest(), write_manifest(), upsert_manifest_object() |
| 31 | + - volume_reader.py: list_bim_files() met fallback models/ → 70_BIM/ |
| 32 | + - volume_reader.py: list_output_files() met fallback validation/ → 99_overige_documenten/bim-validator/ |
| 33 | + - volume_reader.py: get_file_path() met automatic legacy fallback |
| 34 | + - volume_reader.py: read_manifest() voor volume mount reads |
| 35 | + - routers/cloud.py: file listing gebruikt list_models/list_validation_files (met fallback) |
| 36 | + - routers/cloud.py: upload gaat naar validation/ directory |
| 37 | + - routers/cloud.py: save endpoint schrijft WefcValidation object naar manifest |
| 38 | + - routers/cloud.py: nieuw GET /api/cloud/projects/{project}/manifest endpoint |
| 39 | + - models/cloud.py: ManifestHeader + ManifestResponse Pydantic models |
| 40 | + - tests: 19 tests voor nextcloud_client (constanten, paths, fallback, manifest CRUD) |
| 41 | + - tests: 7 tests voor cloud endpoints (manifest, category routing, volume mount) |
| 42 | + - Alle 26 tests slagen |
49 | 43 |
|
50 | 44 | ### Nog te doen |
51 | 45 | - NC_SERVICE_PASS_3BM instellen in .env op server → cloud wordt actief |
52 | 46 | - Cloud status testen na wachtwoord configuratie |
53 | 47 | - OIDC tenant claim koppelen aan tenant selectie (nu hardcoded default "3bm") |
| 48 | +- Frontend: ProjectList component updaten voor manifest-aware weergave |
0 commit comments