lovarch-cli 0.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lovarch_cli/__init__.py +16 -0
- lovarch_cli/__main__.py +10 -0
- lovarch_cli/ai/__init__.py +21 -0
- lovarch_cli/ai/gateway.py +240 -0
- lovarch_cli/api.py +111 -0
- lovarch_cli/auth/__init__.py +32 -0
- lovarch_cli/auth/keyring_store.py +214 -0
- lovarch_cli/auth/local_server.py +165 -0
- lovarch_cli/auth/pkce.py +57 -0
- lovarch_cli/auth/session.py +189 -0
- lovarch_cli/cli.py +262 -0
- lovarch_cli/clients/__init__.py +33 -0
- lovarch_cli/clients/factory.py +54 -0
- lovarch_cli/clients/local_client.py +432 -0
- lovarch_cli/clients/lovarch_storage.py +174 -0
- lovarch_cli/clients/lovarch_supabase.py +295 -0
- lovarch_cli/clients/persistence.py +166 -0
- lovarch_cli/clients/storage.py +66 -0
- lovarch_cli/commands/__init__.py +10 -0
- lovarch_cli/commands/account.py +172 -0
- lovarch_cli/commands/audit.py +394 -0
- lovarch_cli/commands/config_cmd.py +80 -0
- lovarch_cli/commands/consolidate.py +217 -0
- lovarch_cli/commands/context_cmd.py +73 -0
- lovarch_cli/commands/dev.py +287 -0
- lovarch_cli/commands/do_cmd.py +120 -0
- lovarch_cli/commands/init.py +218 -0
- lovarch_cli/commands/jobs_cmd.py +95 -0
- lovarch_cli/commands/login.py +202 -0
- lovarch_cli/commands/mcp_cmd.py +26 -0
- lovarch_cli/commands/run.py +375 -0
- lovarch_cli/commands/signup.py +185 -0
- lovarch_cli/commands/status.py +243 -0
- lovarch_cli/commands/upgrade.py +108 -0
- lovarch_cli/commands/verifica_cmd.py +174 -0
- lovarch_cli/config.py +101 -0
- lovarch_cli/config_store.py +111 -0
- lovarch_cli/credits/__init__.py +35 -0
- lovarch_cli/credits/base.py +84 -0
- lovarch_cli/credits/factory.py +36 -0
- lovarch_cli/credits/local.py +34 -0
- lovarch_cli/credits/lovarch.py +56 -0
- lovarch_cli/i18n/__init__.py +27 -0
- lovarch_cli/i18n/loader.py +121 -0
- lovarch_cli/i18n/translations/en.json +168 -0
- lovarch_cli/i18n/translations/es.json +168 -0
- lovarch_cli/i18n/translations/it.json +168 -0
- lovarch_cli/i18n/translations/pt.json +168 -0
- lovarch_cli/mcp/__init__.py +9 -0
- lovarch_cli/mcp/server.py +199 -0
- lovarch_cli/mcp/tools.py +372 -0
- lovarch_cli/sample_downloader.py +255 -0
- lovarch_cli/squad/README.md +206 -0
- lovarch_cli/squad/agents/auditor-input.md +353 -0
- lovarch_cli/squad/agents/bim-engineer.md +404 -0
- lovarch_cli/squad/agents/briefing-architect.md +249 -0
- lovarch_cli/squad/agents/cad-engineer.md +278 -0
- lovarch_cli/squad/agents/capitolato-writer.md +256 -0
- lovarch_cli/squad/agents/computo-engineer.md +258 -0
- lovarch_cli/squad/agents/concept-designer.md +399 -0
- lovarch_cli/squad/agents/contratto-architect.md +243 -0
- lovarch_cli/squad/agents/deliverable-builder.md +253 -0
- lovarch_cli/squad/agents/energy-prelim.md +388 -0
- lovarch_cli/squad/agents/pratiche-it.md +251 -0
- lovarch_cli/squad/agents/progetto-chief.md +768 -0
- lovarch_cli/squad/agents/quality-dati.md +409 -0
- lovarch_cli/squad/agents/quality-misure.md +418 -0
- lovarch_cli/squad/agents/quality-normativa.md +417 -0
- lovarch_cli/squad/agents/quality-output.md +436 -0
- lovarch_cli/squad/agents/regolatorio-it.md +278 -0
- lovarch_cli/squad/checklists/handoff-quality-gate.md +232 -0
- lovarch_cli/squad/checklists/quality-dati-checklist.md +134 -0
- lovarch_cli/squad/checklists/quality-misure-checklist.md +139 -0
- lovarch_cli/squad/checklists/quality-normativa-checklist.md +121 -0
- lovarch_cli/squad/checklists/quality-output-checklist.md +116 -0
- lovarch_cli/squad/config.yaml +408 -0
- lovarch_cli/squad/data/CHANGELOG.md +272 -0
- lovarch_cli/squad/data/agents-prd.md +428 -0
- lovarch_cli/squad/data/architettura-progetto-rules.md +328 -0
- lovarch_cli/squad/data/handoff-card-template.md +231 -0
- lovarch_cli/squad/data/mocks/catasto-visura.json +72 -0
- lovarch_cli/squad/data/mocks/firma-envelope.json +43 -0
- lovarch_cli/squad/data/prezzario-lombardia-sample.json +312 -0
- lovarch_cli/squad/scripts/api_clients.py +206 -0
- lovarch_cli/squad/scripts/architect_profile.py +276 -0
- lovarch_cli/squad/scripts/deliverable_generators.py +844 -0
- lovarch_cli/squad/scripts/generate_attico_brera_dwg.py +369 -0
- lovarch_cli/squad/scripts/generate_chianti_dxf.py +368 -0
- lovarch_cli/squad/scripts/generate_chianti_images.py +223 -0
- lovarch_cli/squad/scripts/generate_real_sample_images.py +189 -0
- lovarch_cli/squad/scripts/generate_sample_assets.py +382 -0
- lovarch_cli/squad/scripts/lovarch_client.py +1046 -0
- lovarch_cli/squad/scripts/pipeline_runner.py +2095 -0
- lovarch_cli/squad/scripts/render_dxf_to_png.py +57 -0
- lovarch_cli/squad/scripts/run_palestra_demo.sh +277 -0
- lovarch_cli/squad/scripts/simulate_squad_execution.py +515 -0
- lovarch_cli/squad/scripts/validate-squad.py +383 -0
- lovarch_cli/squad/tasks/audit-input.md +146 -0
- lovarch_cli/squad/tasks/compute-metric.md +105 -0
- lovarch_cli/squad/tasks/consolidate-dossier.md +187 -0
- lovarch_cli/squad/tasks/generate-cad-plan.md +120 -0
- lovarch_cli/squad/tasks/generate-ifc-model.md +108 -0
- lovarch_cli/squad/tasks/write-capitolato.md +100 -0
- lovarch_cli/squad/templates/asseverazione-tecnica.md +126 -0
- lovarch_cli/squad/templates/capitolato-uni-11337.md +235 -0
- lovarch_cli/squad/templates/cila-comune-milano.md +177 -0
- lovarch_cli/squad/templates/contratto-cnappc.md +220 -0
- lovarch_cli/squad/workflows/dal-brief-al-cantiere.yaml +218 -0
- lovarch_cli/squad_loader.py +114 -0
- lovarch_cli/verify/__init__.py +15 -0
- lovarch_cli/verify/contratto.py +110 -0
- lovarch_cli/verify/dossier.py +97 -0
- lovarch_cli/verify/misure.py +83 -0
- lovarch_cli/verify/normativa.py +178 -0
- lovarch_cli/version.py +13 -0
- lovarch_cli/workflows/__init__.py +9 -0
- lovarch_cli/workflows/platform.py +212 -0
- lovarch_cli-0.2.1.dist-info/METADATA +232 -0
- lovarch_cli-0.2.1.dist-info/RECORD +122 -0
- lovarch_cli-0.2.1.dist-info/WHEEL +4 -0
- lovarch_cli-0.2.1.dist-info/entry_points.txt +3 -0
- lovarch_cli-0.2.1.dist-info/licenses/LICENSE +38 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Task: consolidate-dossier
|
|
2
|
+
|
|
3
|
+
> **Pattern:** AP-TP-001
|
|
4
|
+
> **Executor:** @progetto-chief (Tier 0 orchestrator)
|
|
5
|
+
> **Squad:** architettura-progetto
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## task_name
|
|
10
|
+
Consolidate final dossier + Lovarch upload + git commit + CHANGELOG
|
|
11
|
+
|
|
12
|
+
## status
|
|
13
|
+
ACTIVE · stable · v1.0
|
|
14
|
+
|
|
15
|
+
## responsible_executor
|
|
16
|
+
- **agent**: @progetto-chief
|
|
17
|
+
- **executor_type**: AP-EP-002 (Agent + Python workers)
|
|
18
|
+
- **workers**: zipfile, git, supabase-py
|
|
19
|
+
|
|
20
|
+
## execution_type
|
|
21
|
+
**Final synchronous step** · Status: Validated → Done
|
|
22
|
+
|
|
23
|
+
## input
|
|
24
|
+
```yaml
|
|
25
|
+
required:
|
|
26
|
+
all_tier1_outputs: "All Tier 1 deliverable files"
|
|
27
|
+
qa_passes: "All applicable QA agents PASS"
|
|
28
|
+
execution_id: "pm_squad_executions UUID"
|
|
29
|
+
user_id: "Pablo admin UUID"
|
|
30
|
+
optional:
|
|
31
|
+
git_tag_format: "squad-v{version}-{timestamp}"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## output
|
|
35
|
+
```yaml
|
|
36
|
+
files:
|
|
37
|
+
- "~/projects/{slug}/README.md"
|
|
38
|
+
- "~/projects/{slug}/manifest.json" # SHA256 + sizes
|
|
39
|
+
- "05-impresa/DOSSIER-IMPRESA.zip" # if not already
|
|
40
|
+
lovarch:
|
|
41
|
+
pm_documents_uploaded: number # 27+ files
|
|
42
|
+
pm_squad_executions_status: "completed"
|
|
43
|
+
pm_squad_steps_count: number
|
|
44
|
+
git:
|
|
45
|
+
commit_sha: string
|
|
46
|
+
tag: string
|
|
47
|
+
final:
|
|
48
|
+
live_tracking_url: string
|
|
49
|
+
dossier_url: string
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## action_items
|
|
53
|
+
|
|
54
|
+
### Phase A · Bootstrap project (BEFORE Tier 1 starts · @progetto-chief calls early)
|
|
55
|
+
1. `LovarchClient.create_project_complete()` · all-in-one
|
|
56
|
+
- Creates `leads` row (Marco Rossini · CRM)
|
|
57
|
+
- Creates `pm_projects` row (Attico Brera · linked to lead)
|
|
58
|
+
- Creates `pm_phases` × 6 (Briefing/Definitivo/Pratiche/Esecutivo/DL/Consegna)
|
|
59
|
+
- Creates `pm_budget_items` × 10 (default % breakdown · opere_edili 35%, impianti 15%, etc.)
|
|
60
|
+
- Creates `financial_categories` "Onorari Architetto" (if not exists)
|
|
61
|
+
- Creates `financial_transactions` × 5 (parent + 4 SAL installments 15/25/25/35%)
|
|
62
|
+
- Creates `portal_clients` + `portal_project_access` + magic link
|
|
63
|
+
- Creates `pm_squad_executions` row (status: running)
|
|
64
|
+
- Returns: `{lead_id, project_id, phase_ids, budget_item_ids, finance_transaction_ids, portal, execution_id}`
|
|
65
|
+
|
|
66
|
+
1b. **AUTO-OPEN live tracking page in browser** (mandatory · Pablo must see progress real-time):
|
|
67
|
+
```python
|
|
68
|
+
import webbrowser
|
|
69
|
+
live_url = f"https://lovarch.com/admin/squad-execution/{execution_id}/live"
|
|
70
|
+
webbrowser.open(live_url, new=2) # opens in new tab
|
|
71
|
+
```
|
|
72
|
+
This MUST happen IMMEDIATELY after pm_squad_executions row created. Squad does not wait for Tier 1 to start before opening browser.
|
|
73
|
+
|
|
74
|
+
### Phase B · Persist Tier 1 outputs progressively (during execution)
|
|
75
|
+
2. `@concept-designer` outputs → `LovarchClient.create_moodboard_analysis()` + `add_moodboard_assets()`
|
|
76
|
+
- Insert `moodboard_analyses` (project_id linked)
|
|
77
|
+
- Insert `moodboard_generated_assets` × 9 (asset_type: flatlay_complete | atmosphere | colors)
|
|
78
|
+
- Note: NEW-HOME hero priority is flatlay_complete (3) > atmosphere (2) > colors (1)
|
|
79
|
+
|
|
80
|
+
3. `@concept-designer` 6 renders → `LovarchClient.save_render(project_id=..., metadata={ambient: ...})`
|
|
81
|
+
- Each FLUX render → INSERT `render_assets` row (project_id MANDATORY)
|
|
82
|
+
- Visible in `/new-home` ProjectDetailConnections tab + Project cover hero
|
|
83
|
+
|
|
84
|
+
4. `@cad-engineer` + `@bim-engineer` outputs → `LovarchClient.upload_documents_batch()`
|
|
85
|
+
- Each DXF, IFC, PDF → upload Storage `pm-documents` bucket + INSERT `pm_documents` row
|
|
86
|
+
- Linked to project_id + appropriate phase_id
|
|
87
|
+
|
|
88
|
+
5. `@capitolato-writer` outputs → `upload_documents_batch()` (capitolato + cronoprogramma + CAM xlsx)
|
|
89
|
+
|
|
90
|
+
6. `@computo-engineer` outputs → `upload_documents_batch()` (xlsx, pdf) + UPDATE `pm_budget_items` with actual values
|
|
91
|
+
|
|
92
|
+
7. `@pratiche-it` outputs → `upload_documents_batch()` (CILA, asseverazione, paesaggistica · phase_id = "Pratiche")
|
|
93
|
+
|
|
94
|
+
8. `@contratto-architect` outputs → `LovarchClient.create_contract(project_id=...)` + `upload_documents_batch()` (contract PDF)
|
|
95
|
+
- INSERT `contracts` row (project_id linked) · visible in ProjectDetailContract tab
|
|
96
|
+
|
|
97
|
+
9. `@deliverable-builder` outputs → `upload_documents_batch()` (presentation HTML, etc.)
|
|
98
|
+
|
|
99
|
+
10. `LovarchClient.bulk_create_tasks(project_id, tasks=[...15 tasks])`
|
|
100
|
+
- 15 team tasks with phase_id assignments + responsible + deadline
|
|
101
|
+
|
|
102
|
+
### Phase C · QA verification (Tier 2 after Tier 1 complete)
|
|
103
|
+
11. Verify all QA agents emitted PASS verdict (4/4 PASS required)
|
|
104
|
+
12. Run @quality-output `LovarchClient` integrity test:
|
|
105
|
+
- Each `pm_documents.id` reachable + public_url returns HTTP 200
|
|
106
|
+
- All `render_assets.project_id` set
|
|
107
|
+
- `moodboard_analyses` has ≥1 generated_asset
|
|
108
|
+
|
|
109
|
+
### Phase D · Final consolidation
|
|
110
|
+
13. Generate README.md with project index + URLs
|
|
111
|
+
14. Compute SHA256 + size per file → manifest.json (uploaded as pm_documents row)
|
|
112
|
+
15. Build DOSSIER-IMPRESA.zip · upload to Storage · INSERT pm_documents row (doc_type: "dossier")
|
|
113
|
+
16. `LovarchClient.update_execution(status="completed", total_duration, total_steps)`
|
|
114
|
+
17. Append entry to data/CHANGELOG.md (local + uploaded as pm_documents)
|
|
115
|
+
18. Git stage + commit + tag (squad-v2.0.0-{timestamp})
|
|
116
|
+
19. Open Finder on project folder (macOS) + AUTO-OPEN browser tabs:
|
|
117
|
+
```python
|
|
118
|
+
import webbrowser, subprocess
|
|
119
|
+
webbrowser.open(f"https://lovarch.com/admin/squad-execution/{execution_id}/dossier", new=2)
|
|
120
|
+
webbrowser.open(f"https://lovarch.com/new-home", new=2)
|
|
121
|
+
subprocess.run(["open", f"~/projects/{slug}/"]) # macOS Finder
|
|
122
|
+
```
|
|
123
|
+
- `lovarch.com/admin/squad-execution/{id}/dossier` (clickable deliverables)
|
|
124
|
+
- `lovarch.com/new-home` (project visible in ProjectsPanel grid)
|
|
125
|
+
- `~/projects/{slug}/` (Finder with all 27 files)
|
|
126
|
+
- Magic link automatically sent to client email
|
|
127
|
+
20. Print summary console + return execution_id
|
|
128
|
+
|
|
129
|
+
## acceptance_criteria
|
|
130
|
+
- [ ] All QA agents PASS verdicts received
|
|
131
|
+
- [ ] README.md generated with all 8 subfolder links
|
|
132
|
+
- [ ] manifest.json with SHA256 of every deliverable
|
|
133
|
+
- [ ] All files uploaded to pm_documents (HTTP 200 verified)
|
|
134
|
+
- [ ] pm_squad_executions status = "completed"
|
|
135
|
+
- [ ] CHANGELOG.md updated
|
|
136
|
+
- [ ] Git commit + tag created
|
|
137
|
+
- [ ] Live URL + dossier URL printed
|
|
138
|
+
|
|
139
|
+
## dependencies
|
|
140
|
+
- **Libraries:**
|
|
141
|
+
- zipfile (Python · DOSSIER.zip)
|
|
142
|
+
- hashlib (SHA256)
|
|
143
|
+
- git CLI
|
|
144
|
+
- supabase-py
|
|
145
|
+
- **APIs:**
|
|
146
|
+
- Supabase Storage (uploads)
|
|
147
|
+
- Supabase REST (pm_documents inserts)
|
|
148
|
+
- pm_squad_executions UPDATE
|
|
149
|
+
- **Files:**
|
|
150
|
+
- All Tier 1 outputs aggregated
|
|
151
|
+
- data/CHANGELOG.md (append)
|
|
152
|
+
|
|
153
|
+
## quality_gate
|
|
154
|
+
- **Gate:** QG-AP-1.5 (Output Completeness)
|
|
155
|
+
- **Reviewer:** @quality-output (already PASS prerequisite)
|
|
156
|
+
- **Final verification:** All 14 quality-output items PASS
|
|
157
|
+
|
|
158
|
+
## handoff
|
|
159
|
+
- **From:** @progetto-chief (self · final consolidation)
|
|
160
|
+
- **To:** Pablo (human · final delivery)
|
|
161
|
+
- **No further routing**
|
|
162
|
+
|
|
163
|
+
## veto_conditions
|
|
164
|
+
- Any QA agent NOT PASS → halt · re-route to retry
|
|
165
|
+
- Lovarch storage quota full → halt + notify Pablo
|
|
166
|
+
- Git commit fails → halt + investigate
|
|
167
|
+
- pm_documents insert error → halt · retry once
|
|
168
|
+
|
|
169
|
+
## estimated_time
|
|
170
|
+
**45-60 seconds**
|
|
171
|
+
|
|
172
|
+
## output_example
|
|
173
|
+
```
|
|
174
|
+
✓ All 4 QA agents PASS
|
|
175
|
+
✓ README.md generated · 8 subfolders linked
|
|
176
|
+
✓ manifest.json · 27 files · SHA256 verified
|
|
177
|
+
✓ DOSSIER-IMPRESA.zip · 15.2 MB
|
|
178
|
+
✓ Lovarch uploads: 27/27 (HTTP 200)
|
|
179
|
+
✓ pm_squad_executions: status=completed · duration=14m 32s · steps=20
|
|
180
|
+
✓ CHANGELOG.md updated · entry [Execution 1] appended
|
|
181
|
+
✓ Git commit: a3f8b2e · tag squad-v2.0.0-2026-04-25T14:46:32
|
|
182
|
+
|
|
183
|
+
Live tracking: https://lovarch.com/admin/squad-execution/5d585486-0991-4598-b880-171682ea9424/live
|
|
184
|
+
Dossier: https://lovarch.com/admin/squad-execution/5d585486-0991-4598-b880-171682ea9424/dossier
|
|
185
|
+
|
|
186
|
+
Project folder: ~/projects/attico-brera/
|
|
187
|
+
```
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Task: generate-cad-plan
|
|
2
|
+
|
|
3
|
+
> **Pattern:** AP-TP-001 (Atomic Task Anatomy · 8 mandatory fields)
|
|
4
|
+
> **Executor:** @cad-engineer (functional · Tier 1 · critical: misure_zero_tolerance)
|
|
5
|
+
> **Squad:** architettura-progetto
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## task_name
|
|
10
|
+
Generate planimetrie quotate DXF + PDF UNI ISO 5457
|
|
11
|
+
|
|
12
|
+
## status
|
|
13
|
+
ACTIVE · stable · v1.0
|
|
14
|
+
|
|
15
|
+
## responsible_executor
|
|
16
|
+
- **agent**: @cad-engineer
|
|
17
|
+
- **executor_type**: AP-EP-002 (Agent · Python local)
|
|
18
|
+
- **worker**: ezdxf, Shapely, ReportLab
|
|
19
|
+
|
|
20
|
+
## execution_type
|
|
21
|
+
**Asynchronous · Tier 1 parallel** · Output feeds @bim-engineer + @quality-misure
|
|
22
|
+
|
|
23
|
+
## input
|
|
24
|
+
```yaml
|
|
25
|
+
required:
|
|
26
|
+
stato_attuale_dxf: "Path to existing state DXF"
|
|
27
|
+
programma_spaziale_xlsx: "Path to room program from @briefing-architect"
|
|
28
|
+
requisiti_json: "Path to requisiti from @briefing-architect"
|
|
29
|
+
height_target_cm: 290 # default Milan A1
|
|
30
|
+
optional:
|
|
31
|
+
altezza_override: number # if non-standard
|
|
32
|
+
scale: "1:50" # default
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## output
|
|
36
|
+
```yaml
|
|
37
|
+
files:
|
|
38
|
+
- "03-progetto-definitivo/pianta-stato-attuale.dxf"
|
|
39
|
+
- "03-progetto-definitivo/pianta-stato-attuale.pdf"
|
|
40
|
+
- "03-progetto-definitivo/pianta-progetto.dxf"
|
|
41
|
+
- "03-progetto-definitivo/pianta-progetto.pdf"
|
|
42
|
+
- "03-progetto-definitivo/sezione-AA.pdf"
|
|
43
|
+
- "03-progetto-definitivo/prospetti.pdf"
|
|
44
|
+
- "03-progetto-definitivo/schema-quotato.json"
|
|
45
|
+
schema_quotato:
|
|
46
|
+
ambienti: array[{ nome, sup_m2, altezza_cm, rai }]
|
|
47
|
+
totale_utile_m2: number
|
|
48
|
+
totale_lordo_m2: number
|
|
49
|
+
muratura_m2: number
|
|
50
|
+
quote_principali: array[{ id, valore_cm, elemento, verified }]
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## action_items
|
|
54
|
+
1. Read stato-attuale.dxf · validate parseable
|
|
55
|
+
2. Compute layout from programma-spaziale.xlsx
|
|
56
|
+
3. Build perimeter walls (12cm) using ezdxf
|
|
57
|
+
4. Build internal partitions (8cm)
|
|
58
|
+
5. Add doors (block insertions, swing arcs)
|
|
59
|
+
6. Add windows (perimeter only · facade vincolata)
|
|
60
|
+
7. Generate dimension chains horizontal + vertical
|
|
61
|
+
8. Add room labels with name + area
|
|
62
|
+
9. Insert cartiglio CNAPPC bottom-right
|
|
63
|
+
10. Export DXF (R2018) + PDF (A1 scale 1:50)
|
|
64
|
+
11. Generate sezione-AA + prospetti
|
|
65
|
+
12. Compute schema-quotato.json
|
|
66
|
+
13. Self-verify sum chains match perimeter (±1mm)
|
|
67
|
+
|
|
68
|
+
## acceptance_criteria
|
|
69
|
+
- [ ] DXF parseable via `ezdxf.readfile()`
|
|
70
|
+
- [ ] 9 layer ISO present (CAD-A-WALL, CAD-A-DIM, etc.)
|
|
71
|
+
- [ ] Cartiglio CNAPPC 12/12 fields populated
|
|
72
|
+
- [ ] All quotes within ±1mm tolerance
|
|
73
|
+
- [ ] Sum verification: sup utile + muratura = sup lorda (±0.5%)
|
|
74
|
+
- [ ] schema-quotato.json valid (matches schema)
|
|
75
|
+
- [ ] PDF readable at 1:50 scale (text height ≥2.5mm)
|
|
76
|
+
- [ ] Min sup ambienti respect normativa (camera ≥9m², ecc.)
|
|
77
|
+
- [ ] RAI ≥1/8 sup pavimento per ambienti abitabili
|
|
78
|
+
|
|
79
|
+
## dependencies
|
|
80
|
+
- **Tools (Python local):**
|
|
81
|
+
- ezdxf 1.4.3
|
|
82
|
+
- Shapely 2.x
|
|
83
|
+
- ReportLab
|
|
84
|
+
- Trimesh (volume verification)
|
|
85
|
+
- **Files:**
|
|
86
|
+
- stato-attuale.dxf (input)
|
|
87
|
+
- programma-spaziale.xlsx (from @briefing-architect)
|
|
88
|
+
- requisiti.json
|
|
89
|
+
- **Templates:**
|
|
90
|
+
- data/architettura-progetto-rules.md §3 (UNI ISO standards)
|
|
91
|
+
|
|
92
|
+
## templates
|
|
93
|
+
- Cartiglio CNAPPC standard (ezdxf primitives)
|
|
94
|
+
- Layer ISO setup function
|
|
95
|
+
- Dimension style UNI
|
|
96
|
+
|
|
97
|
+
## quality_gate
|
|
98
|
+
- **Gate:** QG-AP-1.2 (Misure Verification Gate)
|
|
99
|
+
- **Reviewer:** @quality-misure (24-item checklist)
|
|
100
|
+
- **Threshold:** 5/5 CRITICI + ≥80% SECONDARI
|
|
101
|
+
- **Self-check:** Sum verification before handoff
|
|
102
|
+
|
|
103
|
+
## handoff
|
|
104
|
+
- **From:** @progetto-chief (outbound card)
|
|
105
|
+
- **To:** @progetto-chief (inbound card with files + schema-quotato.json)
|
|
106
|
+
- **Then via chief:** @bim-engineer (uses schema-quotato) + @quality-misure (verifies)
|
|
107
|
+
- **Required announcement:** "Ritorno al @progetto-chief. Plans generati · {n} entities · cotazioni verificate ±1mm."
|
|
108
|
+
|
|
109
|
+
## veto_conditions
|
|
110
|
+
- DWG sorgente impossibile da leggere → halt
|
|
111
|
+
- Sup lorda ≠ sup utile + muratura > 0.5% → halt
|
|
112
|
+
- Quota negativa o zero → halt
|
|
113
|
+
- Layer non-ISO → halt
|
|
114
|
+
- Cartiglio incompleto → halt
|
|
115
|
+
|
|
116
|
+
## estimated_time
|
|
117
|
+
**90-120 seconds** (DXF entities count + PDF rendering)
|
|
118
|
+
|
|
119
|
+
## output_example
|
|
120
|
+
See `@cad-engineer.md` output_examples · 187 entities · 9 layers · 24/24 quote check · 115.3 m² utile · 120.0 lorda · 4.7 muratura (pavimento finito 102.3 m²).
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Task: generate-ifc-model
|
|
2
|
+
|
|
3
|
+
> **Pattern:** AP-TP-001
|
|
4
|
+
> **Executor:** @bim-engineer (mind clone Mark Baldwin · Tier 1)
|
|
5
|
+
> **Squad:** architettura-progetto
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## task_name
|
|
10
|
+
Generate IFC4 LOD 300 model + APS viewer + quantitativi
|
|
11
|
+
|
|
12
|
+
## status
|
|
13
|
+
ACTIVE · stable · v1.0
|
|
14
|
+
|
|
15
|
+
## responsible_executor
|
|
16
|
+
- **agent**: @bim-engineer
|
|
17
|
+
- **executor_type**: AP-EP-003 (Hybrid · Python + APS API)
|
|
18
|
+
- **worker**: IfcOpenShell 0.8.4 + APS Model Derivative
|
|
19
|
+
|
|
20
|
+
## execution_type
|
|
21
|
+
**Synchronous after CAD** · Output feeds @computo-engineer + @energy-prelim
|
|
22
|
+
|
|
23
|
+
## input
|
|
24
|
+
```yaml
|
|
25
|
+
required:
|
|
26
|
+
schema_quotato_json: "From @cad-engineer"
|
|
27
|
+
dxf_path: "pianta-progetto.dxf"
|
|
28
|
+
materials_list: "From @concept-designer + briefing"
|
|
29
|
+
optional:
|
|
30
|
+
classification: "UniFormat | Uniclass" # default UniFormat
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## output
|
|
34
|
+
```yaml
|
|
35
|
+
files:
|
|
36
|
+
- "03-progetto-definitivo/modello.ifc"
|
|
37
|
+
- "03-progetto-definitivo/thumbnail-3d.png"
|
|
38
|
+
- "03-progetto-definitivo/viewer-url.txt"
|
|
39
|
+
- "03-progetto-definitivo/quantitativi.json"
|
|
40
|
+
quantitativi_schema:
|
|
41
|
+
muri: array[{ tipo, lunghezza_m, altezza_m, area_m2 }]
|
|
42
|
+
finestre: array[{ larghezza_cm, altezza_cm, quantita }]
|
|
43
|
+
porte: array[{ ... }]
|
|
44
|
+
pavimenti: array[{ ... }]
|
|
45
|
+
totale_aree_per_categoria: object
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## action_items
|
|
49
|
+
1. Initialize IFC4 file via `ifcopenshell.file(schema='IFC4')`
|
|
50
|
+
2. Build IfcSite + IfcBuilding + IfcBuildingStorey
|
|
51
|
+
3. Build IfcWalls from schema-quotato (perimeter + internal)
|
|
52
|
+
4. Build IfcSlab (floor)
|
|
53
|
+
5. Build IfcDoors with panels (LOD 300)
|
|
54
|
+
6. Build IfcWindows (perimeter only)
|
|
55
|
+
7. Build IfcSpaces for ambienti
|
|
56
|
+
8. Apply property sets ISO 12006-3 (Pset_WallCommon, etc.)
|
|
57
|
+
9. Apply UniFormat classification per element
|
|
58
|
+
10. Run `ifcopenshell.validate()` · 0 errors required
|
|
59
|
+
11. Test web-ifc loads · APS Model Derivative success
|
|
60
|
+
12. Extract quantitativi via `ifcopenshell.api`
|
|
61
|
+
13. Generate thumbnail via PyVista or APS
|
|
62
|
+
|
|
63
|
+
## acceptance_criteria
|
|
64
|
+
- [ ] IFC4 schema valid
|
|
65
|
+
- [ ] `ifcopenshell.validate(model)` · 0 errors
|
|
66
|
+
- [ ] All elements have property sets ISO 12006-3
|
|
67
|
+
- [ ] All elements have UniFormat classification
|
|
68
|
+
- [ ] web-ifc loads file · ≥100 elements
|
|
69
|
+
- [ ] APS Viewer URL works (HTTP 200)
|
|
70
|
+
- [ ] quantitativi.json populated (muri, finestre, porte, pavimenti)
|
|
71
|
+
- [ ] thumbnail-3d.png generated
|
|
72
|
+
- [ ] Volumi vs DXF schema-quotato diff ≤2%
|
|
73
|
+
|
|
74
|
+
## dependencies
|
|
75
|
+
- **Libraries:**
|
|
76
|
+
- IfcOpenShell 0.8.4
|
|
77
|
+
- ifcopenshell.api (high-level)
|
|
78
|
+
- PyVista (snapshots)
|
|
79
|
+
- **APIs:**
|
|
80
|
+
- Autodesk Platform Services (Model Derivative + Viewer SDK)
|
|
81
|
+
- **Inputs:**
|
|
82
|
+
- schema-quotato.json (@cad-engineer)
|
|
83
|
+
- materials list
|
|
84
|
+
|
|
85
|
+
## templates
|
|
86
|
+
- IFC4 building skeleton template (IfcSite → IfcBuilding → IfcBuildingStorey)
|
|
87
|
+
- Property set definitions standard
|
|
88
|
+
|
|
89
|
+
## quality_gate
|
|
90
|
+
- **Gate:** QG-AP-1.2 (Misure · volumi vs DXF)
|
|
91
|
+
- **Reviewer:** @quality-misure
|
|
92
|
+
- **Threshold:** Volumi diff ≤2% vs DXF
|
|
93
|
+
|
|
94
|
+
## handoff
|
|
95
|
+
- **From:** @progetto-chief
|
|
96
|
+
- **To:** @progetto-chief (returns) → @computo-engineer (uses quantitativi) + @quality-misure (verifies)
|
|
97
|
+
- **Required announcement:** "Ritorno al @progetto-chief. IFC4 LOD 300 · {n} elements · viewer ready."
|
|
98
|
+
|
|
99
|
+
## veto_conditions
|
|
100
|
+
- IFC validate fails → REJECT internal · regenerate
|
|
101
|
+
- Volumi diff vs DXF >2% → halt + flag @quality-dati
|
|
102
|
+
- APS upload fail 3× → procede senza viewer · flag warning
|
|
103
|
+
|
|
104
|
+
## estimated_time
|
|
105
|
+
**60-90 seconds** (APS upload dominant · async)
|
|
106
|
+
|
|
107
|
+
## output_example
|
|
108
|
+
See `@bim-engineer.md` output_examples · 142 elements · IFC4 valid · UniFormat classified · viewer URL embeddable.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Task: write-capitolato
|
|
2
|
+
|
|
3
|
+
> **Pattern:** AP-TP-001
|
|
4
|
+
> **Executor:** @capitolato-writer (functional · Tier 1)
|
|
5
|
+
> **Squad:** architettura-progetto
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## task_name
|
|
10
|
+
Write capitolato speciale d'appalto + cronoprogramma 90gg
|
|
11
|
+
|
|
12
|
+
## status
|
|
13
|
+
ACTIVE · stable · v1.0
|
|
14
|
+
|
|
15
|
+
## responsible_executor
|
|
16
|
+
- **agent**: @capitolato-writer
|
|
17
|
+
- **executor_type**: AP-EP-003 (Hybrid · AI 80% + BIM Manager review 20%)
|
|
18
|
+
|
|
19
|
+
## input
|
|
20
|
+
```yaml
|
|
21
|
+
required:
|
|
22
|
+
computo_xlsx: "From @computo-engineer"
|
|
23
|
+
materiali_list: "Lista materiali con codici EPD"
|
|
24
|
+
regolatorio_json: "tipo-pratica.json from @regolatorio-it"
|
|
25
|
+
durata_giorni: 90 # default
|
|
26
|
+
optional:
|
|
27
|
+
template_uni_11337: "data/architettura-progetto-rules.md §2.5"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## output
|
|
31
|
+
```yaml
|
|
32
|
+
files:
|
|
33
|
+
- "05-impresa/capitolato-speciale.pdf"
|
|
34
|
+
- "05-impresa/cronoprogramma-90gg.pdf"
|
|
35
|
+
- "05-impresa/lista-CAM-rispettati.xlsx"
|
|
36
|
+
metrics:
|
|
37
|
+
pages: number # ≥30
|
|
38
|
+
cam_compliance_percent: number # target ≥80%
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## action_items
|
|
42
|
+
1. Load template UNI 11337-7 (cached)
|
|
43
|
+
2. Build Sezione 1 · Disposizioni generali (3pp)
|
|
44
|
+
3. Build Sezione 2 · Descrizione opere (5pp · from computo)
|
|
45
|
+
4. Build Sezione 3 · Specifiche tecniche esecuzione (12pp)
|
|
46
|
+
5. Build Sezione 4 · Materiali e prodotti (15pp · with CAM tracking)
|
|
47
|
+
6. Build Sezione 5 · Modalità esecuzione (8pp)
|
|
48
|
+
7. Build Sezione 6 · Tolleranze e prove (4pp · UNI EN 13670)
|
|
49
|
+
8. Build Sezione 7 · Sicurezza cantiere (CSP/CSE check + 6pp)
|
|
50
|
+
9. Build Sezione 8 · Oneri Appaltatore (8pp)
|
|
51
|
+
10. Build Sezione 9 · Direzione Lavori (5pp)
|
|
52
|
+
11. Build Sezione 10 · Garanzie + collaudo (4pp)
|
|
53
|
+
12. Build Sezione 11 · Penali (3pp)
|
|
54
|
+
13. Build Sezione 12 · Disposizioni finali (5pp)
|
|
55
|
+
14. Generate cronoprogramma Gantt 90gg via plotly
|
|
56
|
+
15. Generate lista-CAM-rispettati.xlsx · tracking ≥80%
|
|
57
|
+
16. Add banner BOZZA su tutti PDF
|
|
58
|
+
|
|
59
|
+
## acceptance_criteria
|
|
60
|
+
- [ ] 12 sezioni populated (no skipping)
|
|
61
|
+
- [ ] CAM 2025 tracking ≥80%
|
|
62
|
+
- [ ] Cronoprogramma 90gg with 6 fasi
|
|
63
|
+
- [ ] PSC obrigatorio sezione 7 if multi-impresa OR durata >200g/uomo
|
|
64
|
+
- [ ] Tolerances cited UNI EN 13670 + UNI ISO 5457
|
|
65
|
+
- [ ] PDF ≥30 pagine
|
|
66
|
+
- [ ] Banner BOZZA visible
|
|
67
|
+
- [ ] xlsx CAM rispettati 124+ voci tracked
|
|
68
|
+
|
|
69
|
+
## dependencies
|
|
70
|
+
- **APIs/Tools:**
|
|
71
|
+
- Gemini 3.1 Pro (gemini-3.1-pro-preview) (structured generation)
|
|
72
|
+
- WeasyPrint (HTML→PDF qualità tipografica)
|
|
73
|
+
- plotly (Gantt cronoprogramma)
|
|
74
|
+
- edge: brochure-generate (layout)
|
|
75
|
+
- **Templates:**
|
|
76
|
+
- UNI 11337-7 cached (12 sezioni)
|
|
77
|
+
- CAM Edilizia 2025 voci (DM 23/06/2022)
|
|
78
|
+
|
|
79
|
+
## quality_gate
|
|
80
|
+
- **Gate:** QG-AP-1.3 (Normativa Verification Gate)
|
|
81
|
+
- **Reviewer:** @quality-normativa
|
|
82
|
+
- **Threshold:** 6/6 CRITICI Pareto · CAM ≥80%
|
|
83
|
+
|
|
84
|
+
## handoff
|
|
85
|
+
- **From:** @progetto-chief
|
|
86
|
+
- **To:** @progetto-chief → @quality-normativa (verifies)
|
|
87
|
+
- **Required announcement:** "Ritorno al @progetto-chief. Capitolato {n}pp · CAM {percent}%."
|
|
88
|
+
|
|
89
|
+
## veto_conditions
|
|
90
|
+
- Capitolato <30 pagine → contenuto insufficiente · retry
|
|
91
|
+
- Sezione mancante (12 obbligatorie) → halt
|
|
92
|
+
- CAM compliance <60% → halt + flag
|
|
93
|
+
- Banner BOZZA missing → halt
|
|
94
|
+
- PSC sezione vuota su multi-impresa → halt
|
|
95
|
+
|
|
96
|
+
## estimated_time
|
|
97
|
+
**60-90 seconds**
|
|
98
|
+
|
|
99
|
+
## output_example
|
|
100
|
+
See `@capitolato-writer.md` output_examples · 78 pagine · 12 sezioni · CAM 87% · Gantt 90gg · banner BOZZA.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Template Asseverazione del Tecnico Abilitato
|
|
2
|
+
|
|
3
|
+
> Asseverazione che il `@pratiche-it` allega alla CILA/SCIA.
|
|
4
|
+
> Variabili tra `{{...}}` da sostituire dal squad.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## ASSEVERAZIONE TECNICA
|
|
9
|
+
|
|
10
|
+
ai sensi dell'art. 6-bis comma 5 del DPR 380/2001 (TU Edilizia)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
Il/la sottoscritt{{architetto_genere}} **Arch. {{architetto_nome}} {{architetto_cognome}}**, nat{{architetto_genere}} a {{architetto_nato_a}} il {{architetto_data_nascita}}, codice fiscale **{{architetto_cf}}**, partita IVA **{{architetto_piva}}**, iscritt{{architetto_genere}} all'**Ordine degli Architetti, Pianificatori, Paesaggisti e Conservatori della Provincia di Milano** con il numero **{{architetto_n_ordine}}**, con studio professionale in {{architetto_studio_indirizzo}}, PEC **{{architetto_pec}}**,
|
|
15
|
+
|
|
16
|
+
in qualità di tecnico abilitato incaricato dal sig./sig.ra **{{cliente_nome}} {{cliente_cognome}}** (codice fiscale {{cliente_cf}}) per la progettazione dell'intervento edilizio sull'unità immobiliare sita in **{{immobile_indirizzo_completo}}**, identificata catastalmente al **Foglio {{foglio}} · Mappale {{mappale}} · Subalterno {{subalterno}}**,
|
|
17
|
+
|
|
18
|
+
consapevole delle responsabilità penali (artt. 359 e 481 c.p.) e civili derivanti da dichiarazioni mendaci, e in particolare consapevole delle sanzioni di cui all'art. 76 del DPR 445/2000 in caso di falsa attestazione,
|
|
19
|
+
|
|
20
|
+
## ASSEVERA
|
|
21
|
+
|
|
22
|
+
### A · Conformità urbanistica
|
|
23
|
+
|
|
24
|
+
Che l'intervento descritto è **conforme**:
|
|
25
|
+
- al **PGT vigente** del Comune di Milano (variante 2024);
|
|
26
|
+
- al **Piano delle Regole** e al **Piano dei Servizi**;
|
|
27
|
+
- al **Regolamento Edilizio** comunale del Comune di Milano;
|
|
28
|
+
- agli strumenti urbanistici **sovraordinati** (Piano Provinciale, Piano Paesaggistico Regionale Lombardia).
|
|
29
|
+
|
|
30
|
+
### B · Stato legittimo dell'immobile
|
|
31
|
+
|
|
32
|
+
Che lo **stato legittimo** dell'immobile, ai sensi del decreto Salva-Casa (DL 69/2024 conv. L. 105/2024), è verificato in base ai seguenti titoli abilitativi:
|
|
33
|
+
|
|
34
|
+
{{stato_legittimo_titoli}}
|
|
35
|
+
|
|
36
|
+
(elenco titoli edilizi storici: licenza/concessione/permesso, anno, n. protocollo)
|
|
37
|
+
|
|
38
|
+
Esempio:
|
|
39
|
+
> - Licenza edilizia n. 1234/1910 del Comune di Milano (costruzione originaria)
|
|
40
|
+
> - Concessione edilizia n. 5678/1985 (ristrutturazione anni '80)
|
|
41
|
+
> - Eventuale Salva-Casa per tolleranze esecutive di costruzione attestate ai sensi del DL 69/2024
|
|
42
|
+
|
|
43
|
+
### C · Non incidenza strutturale
|
|
44
|
+
|
|
45
|
+
Che i lavori previsti **non riguardano parti strutturali** dell'edificio. In particolare:
|
|
46
|
+
- Non è prevista demolizione di muri portanti;
|
|
47
|
+
- Non sono previste aperture su muri di spina o pilastri;
|
|
48
|
+
- Non è previsto aumento di carichi sui solai esistenti rispetto al carico previsto dalla destinazione d'uso residenziale;
|
|
49
|
+
- Eventuali tramezzature interne demolite/ricostruite hanno spessore ≤ 12 cm e peso lineare contenuto.
|
|
50
|
+
|
|
51
|
+
L'intervento si configura pertanto come **opera non strutturale** ai sensi del punto 8.4.1 del DM 17/01/2018 (NTC 2018) — riparazione o intervento locale, senza miglioramento/adeguamento sismico (punti 8.4.2/8.4.3).
|
|
52
|
+
|
|
53
|
+
### D · Conformità tecnica
|
|
54
|
+
|
|
55
|
+
Che l'intervento rispetta:
|
|
56
|
+
|
|
57
|
+
a) le **norme antisismiche** vigenti (NTC 2018 + Circolare 7/2019), nei limiti di applicabilità;
|
|
58
|
+
b) le **norme antincendio** (DM 16/05/1987 n. 246 per civile abitazione);
|
|
59
|
+
c) le **norme di sicurezza** in materia di impianti (DM 37/2008 — dichiarazione di conformità a fine lavori);
|
|
60
|
+
d) le **norme igienico-sanitarie**:
|
|
61
|
+
- altezze minime ambienti abitabili: 270 cm (RE Milano art. 38);
|
|
62
|
+
- rapporto aero-illuminante (RAI) ≥ 1/8 della superficie utile (DM 5/7/1975);
|
|
63
|
+
- superficie minima camere singole 9 m², doppie 14 m²;
|
|
64
|
+
- superficie minima locale cottura 9 m² o angolo cottura 4 m²;
|
|
65
|
+
e) le **norme di efficientamento energetico** (D.Lgs 102/2014 e DM 26/06/2015), nei limiti applicabili a interventi di ristrutturazione;
|
|
66
|
+
f) le **norme paesaggistiche** (D.Lgs 42/2004 e DPR 31/2017) — vedi punto F.
|
|
67
|
+
|
|
68
|
+
### E · Conformità ambientale (CAM 2025)
|
|
69
|
+
|
|
70
|
+
Che l'intervento **rispetta in via volontaria** i criteri ambientali minimi (CAM Edilizia 2025) di cui al DM 23 giugno 2022 e successive modifiche del MASE:
|
|
71
|
+
- impiego di materiali con **contenuto riciclato** ≥ 30% (laterizi) e ≥ 15% (cls);
|
|
72
|
+
- demolizione **selettiva** con recupero ≥ 70% dei rifiuti edili;
|
|
73
|
+
- legno **certificato FSC/PEFC**;
|
|
74
|
+
- materiali isolanti dotati di **DAP/EPD** (Dichiarazione Ambientale di Prodotto).
|
|
75
|
+
|
|
76
|
+
(I CAM 2025 non sono obbligatori per il privato, ma il committente ha richiesto adesione per finalità ambientali e per ottimizzare il valore dell'immobile.)
|
|
77
|
+
|
|
78
|
+
### F · Vincoli paesaggistici e ambientali
|
|
79
|
+
|
|
80
|
+
Che l'immobile **ricade** in:
|
|
81
|
+
|
|
82
|
+
[**X**] Zona vincolata · {{vincolo_descrizione}}
|
|
83
|
+
|
|
84
|
+
Esempio:
|
|
85
|
+
> Zona A1 PGT Milano · Nucleo di Antica Formazione (NAF) Brera · tutela tramite PGT (NAF); eventuale vincolo paesaggistico, ove sussistente, è ex D.Lgs 42/2004 art. 136 (provvedimento dichiarativo di notevole interesse pubblico) — NON art. 142 lett. m), che riguarda le zone di interesse archeologico.
|
|
86
|
+
|
|
87
|
+
In relazione a tali vincoli:
|
|
88
|
+
|
|
89
|
+
[**{{paesaggistica_tipo}}**] È stata predisposta autorizzazione paesaggistica con procedura **{{paesaggistica_procedura}}** (allegato A esonero / allegato B semplificata / ordinaria art. 146 D.Lgs 42/2004), come da relazione paesaggistica allegata.
|
|
90
|
+
|
|
91
|
+
### G · Conflitti di interesse
|
|
92
|
+
|
|
93
|
+
Che il sottoscritto **non ha conflitti di interesse** con il committente, e dichiara di non aver svolto incarichi presso il medesimo immobile in qualità di valutatore o altro nei dodici mesi precedenti.
|
|
94
|
+
|
|
95
|
+
### H · Polizza RC
|
|
96
|
+
|
|
97
|
+
Che è in essere idonea polizza di responsabilità civile professionale presso **{{rc_compagnia}}** n. **{{rc_polizza}}**, con massimale di **€ {{rc_massimale}}**, in corso di validità fino al {{rc_scadenza}}.
|
|
98
|
+
|
|
99
|
+
### I · Documentazione
|
|
100
|
+
|
|
101
|
+
Che gli **elaborati progettuali allegati** alla CILA sono completi, coerenti e adeguati alla descrizione dell'intervento, e in particolare contengono:
|
|
102
|
+
- planimetrie dello stato attuale, di progetto, e sovrapposto in scala 1:50;
|
|
103
|
+
- sezioni;
|
|
104
|
+
- prospetti (se interessati);
|
|
105
|
+
- relazione tecnica illustrativa;
|
|
106
|
+
- documentazione fotografica;
|
|
107
|
+
- visura catastale aggiornata.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
In fede.
|
|
112
|
+
|
|
113
|
+
Milano, lì **{{data_firma}}**
|
|
114
|
+
|
|
115
|
+
**Il tecnico abilitato:**
|
|
116
|
+
|
|
117
|
+
Arch. {{architetto_nome}} {{architetto_cognome}}
|
|
118
|
+
Iscritto Ordine Architetti Milano n. {{architetto_n_ordine}}
|
|
119
|
+
|
|
120
|
+
**Firma digitale qualificata** (eIDAS QES) + **timbro Ordine**:
|
|
121
|
+
|
|
122
|
+
[Apposizione firma digitale tramite dispositivo certificato qualificato]
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
> **Nota:** Il presente documento è parte integrante della CILA presentata al Comune di Milano e deve essere firmato digitalmente dal tecnico con certificato qualificato, ai sensi del Reg. UE 910/2014 (eIDAS) e CAD (D.Lgs 82/2005).
|