dev immobile

This commit is contained in:
Kevin Adametz 2026-05-08 10:41:03 +02:00
parent 18ca2ce858
commit e198d842ce
18 changed files with 5931 additions and 3 deletions

View file

@ -0,0 +1,438 @@
from __future__ import annotations
import json
import re
from pathlib import Path
from typing import Any
OBSIDIAN_LIST = Path("/Volumes/Obsidian/DEV-Vault/b2in/immobilien/Immobilien Dubai.md")
LOCAL_EXTRACTION = Path("dev/immobilien 07-05-2026/azizi-extraction.json")
OFFICIAL_LINKS_OUTPUT = Path("dev/immobilien 07-05-2026/azizi-official-links.json")
TOP_PROJECTS_OUTPUT = Path("dev/immobilien 07-05-2026/azizi-top-projects-research.json")
TOP_PROJECTS: dict[str, dict[str, Any]] = {
"mina": {
"title": "Mina",
"district": "Palm Jumeirah",
"category": "Sofort verfügbar - Luxus-Prestige",
"status": "Fertiggestellt / Resale",
"unit_types": ["Apartments", "Penthouses"],
"unit_count": "178 Apartments + 4 Penthouses",
"price_from": "ab AED 2,6 Mio laut Konzeptbriefing; aktuelle Verfügbarkeit prüfen",
"handover": "Fertiggestellt 2021",
"positioning": "Etablierte Palm-Jumeirah-Adresse mit Waterfront-/Prestige-Fokus.",
"key_facts": [
"Palm Jumeirah, östlicher Halbmond",
"Bestandsobjekt, neue Einheiten nur nach Verfügbarkeit im Zweitmarkt",
"Geeignet für Eigennutzer mit Palm-Präferenz und Bestandsinvestoren",
],
"research_status": "Konzeptdaten belastbar; lokale SharePoint-Ordner vorhanden, aber ohne verwertbare Dateien; offizielle URL als Projektanker.",
},
"royal-bay": {
"title": "Royal Bay",
"district": "Palm Jumeirah",
"category": "Sofort verfügbar - Luxus-Prestige",
"status": "Fertiggestellt / Resale",
"unit_types": ["Apartments", "Penthouses"],
"unit_count": "90 Apartments + 2 Penthouses",
"price_from": "Verfügbarkeit auf Anfrage",
"handover": "Fertiggestellt",
"positioning": "Kleinere, privatere Palm-Jumeirah-Adresse gegenüber Mina.",
"key_facts": [
"Palm Jumeirah",
"Bewusst kleine Hausgemeinschaft",
"Geeignet für Eigennutzer mit Privatheitsfokus",
],
"research_status": "Konzeptdaten belastbar; offizielle URL aus Obsidian-Liste; keine lokale SharePoint-Abdeckung gefunden.",
},
"creek-views": {
"title": "Creek Views",
"district": "Al Jaddaf / Dubai Healthcare City",
"category": "Sofort verfügbar - für schnelle Cashflow-Investments",
"status": "Fertiggestellt / Bestand",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
"unit_count": "634 Einheiten laut Konzeptbriefing",
"price_from": "Verfügbarkeit auf Anfrage",
"handover": "Fertiggestellt",
"positioning": "Zentrale Cashflow-Adresse zwischen Dubai Creek, Downtown und Flughafen.",
"key_facts": [
"Offizielles Factsheet: Studios, 1- und 2-Bedroom-Apartments",
"Offizielles Factsheet: Dubai Creek ca. 2 Minuten, Downtown Dubai ca. 7 Minuten, DXB ca. 7 Minuten",
"Panoramablick auf Dubai Creek und Skyline, Terrassen, Retail- und Leisure-Hubs",
],
"research_status": "Sehr gute lokale SharePoint-Abdeckung mit Factsheets und Bildern.",
},
"creek-views-ii": {
"title": "Creek Views II",
"district": "Al Jaddaf / Dubai Healthcare City",
"category": "Sofort verfügbar - für schnelle Cashflow-Investments",
"status": "Kürzlich übergeben / Bestand",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
"unit_count": "Teil des Creek-Views-Ensembles",
"price_from": "Verfügbarkeit auf Anfrage",
"handover": "Kürzlich übergeben",
"positioning": "Jüngere Ergänzung des Creek-Views-Konzepts in bewährter Lage.",
"key_facts": [
"SharePoint enthält Factsheets, Renderings und Fertigstellungs-/Foto-Material",
"Gleiche Standortlogik wie Creek Views: DHCC, Dubai Creek, kurze Wege zu Downtown und Flughafen",
"Geeignet für konservative Yield-Investoren mit schneller Vermietbarkeit",
],
"research_status": "Gute lokale SharePoint-Abdeckung; Factsheet-Dateien teils mehrsprachig/CH/RUS, deutsche Website-Texte besser aus Konzept + englischer Quelle ableiten.",
},
"azizi-riviera": {
"title": "Azizi Riviera",
"district": "MBR City / Meydan",
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
"status": "Phasenweise fertiggestellt / weitere Phasen aktiv",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "3 Bedroom", "Retail"],
"unit_count": "12.285 Apartments laut Azizi Folding Map V.10",
"price_from": "Aktuelle Phase prüfen",
"handover": "Phase abhängig",
"positioning": "Master-Planned Community mit Crystal Lagoon, Lifestyle und Rendite-Logik.",
"key_facts": [
"Riviera umfasst eine 2,7 km lange schwimmbare Crystal Lagoon",
"Riviera ist in mehrere Lifestyle-Zonen gegliedert: Retail Boulevard, Lagoon Walk und Grünflächen",
"Kurze Wege nach Downtown Dubai und Meydan",
],
"research_status": "Azizi Folding Map V.10 liefert direkten Apartment-Count; lokaler SharePoint-Ordner ist weitgehend leer.",
},
"riviera-reve": {
"title": "Riviera Rêve",
"district": "MBR City / Meydan",
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
"status": "Off-Plan / Ultra-Luxus-Phase",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Duplex Penthouses"],
"unit_count": "5.061 Homes in 24 Ultra-Luxus-Gebäuden",
"price_from": "Aktuelle Verfügbarkeit prüfen",
"handover": "Phase abhängig",
"positioning": "Exklusivste Riviera-Phase für Käufer, die Community-Vorteile mit höherer Ausstattung verbinden.",
"key_facts": [
"Web-/Pressesource: 24 Ultra-Luxus-Gebäude",
"Web-/Pressesource: über 2.600 Studios, 1.579 One-Bedroom, 876 Two-Bedroom",
"Ausstattungspositionierung mit Smart-Home, hochwertigen Materialien und 5-Sterne-Service-Ambiente",
],
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Web-/Pressesource ergänzt offizielle URL.",
},
"riviera-beachfront": {
"title": "Riviera Beachfront",
"district": "MBR City / Meydan",
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
"status": "Im Bau / Near Handover",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Retail"],
"unit_count": "555 Einheiten in drei 20-geschossigen Entwicklungen",
"price_from": "Aktuelle Verfügbarkeit prüfen",
"handover": "Q4 2025 laut 2025-Bauupdates",
"positioning": "Premium-Linie der Riviera direkt an der Crystal Lagoon.",
"key_facts": [
"Bauupdate 2025: Beachfront I erreichte 70-81% Baufortschritt",
"Drei 20-geschossige Entwicklungen mit direktem Beach-/Lagoon-Zugang",
"Amenities: Pools, Gym, BBQ, Kinderspielbereiche, Yoga-Spaces, Retail",
],
"research_status": "Lokaler SharePoint-Ordner ohne verwertbare Dateien; Web-/Bauupdates liefern harte Fakten.",
},
"park-avenue": {
"title": "Park Avenue",
"district": "Meydan / MBR City",
"category": "Flaggschiff Meydan - Azizis größtes aktives Quartier",
"status": "Fertiggestellt / Resale",
"unit_types": ["Apartments", "Retail"],
"unit_count": "274 Apartments laut Azizi Folding Map V.10",
"price_from": "Verfügbarkeit auf Anfrage",
"handover": "2023/2024 laut Konzeptbriefing",
"positioning": "Boutique-Community in MBR City, ruhiger als die großen Riviera-Türme.",
"key_facts": [
"274 Apartments laut Azizi Folding Map V.10",
"Meydan Avenue / MBR City",
"Geeignet für Eigennutzer und Resale-Investoren mit Wunsch nach kleinerer Community",
],
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Azizi Folding Map V.10 bestätigt 274 Apartments.",
},
"star": {
"title": "Star",
"district": "Al Furjan",
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
"status": "Fertiggestellt / Resale",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
"unit_count": "Offizielle Seite: 310 Studios, 46 One-Bedroom, 102 Two-Bedroom",
"price_from": "Verfügbarkeit auf Anfrage",
"handover": "Fertiggestellt",
"positioning": "Al-Furjan-Klassiker mit Metro-Nähe und breiter Mietzielgruppe.",
"key_facts": [
"Offizielle Seite: Metro Station ca. 1 Minute, Mohammed Bin Zayed Road ca. 1 Minute",
"Offizielle Seite: Dubai Marina & JBR ca. 10 Minuten, Expo City ca. 12 Minuten",
"Amenities: Pool, Gym, Garage/Parking, City Views, Sauna",
],
"research_status": "Gute lokale Bildabdeckung; offizielle Seite liefert Unit-Mix und Standortzeiten.",
},
"roy-mediterranean": {
"title": "ROY Mediterranean",
"district": "Al Furjan",
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
"status": "Fertiggestellt / Resale",
"unit_types": ["Apartments", "Retail"],
"unit_count": "271 Apartments + Retail laut Konzeptbriefing",
"price_from": "Verfügbarkeit auf Anfrage",
"handover": "Fertiggestellt",
"positioning": "Etablierte Al-Furjan-Adresse mit Volumen und Resale-Liquidität.",
"key_facts": [
"Al Furjan mit Metro-Anbindung und guter Erreichbarkeit von Jebel Ali, Dubai Marina und Expo City",
"Ground-Floor-Retail stärkt Alltagstauglichkeit und Vermietbarkeit",
"Geeignet für Yield- und Volumeninvestoren",
],
"research_status": "Lokale Bildabdeckung vorhanden; harte Unit-Zahl aus Konzeptbriefing, offizielle URL als Projektanker.",
},
"farishta": {
"title": "Farishta",
"district": "Al Furjan",
"category": "Ready Rendite - etablierte Adressen in Al Furjan",
"status": "Fertiggestellt / Resale",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "Penthouses"],
"unit_count": "137 Studios, 124 One-Bedroom, 23 Two-Bedroom laut Azizi-Al-Furjan-Katalogauszug",
"price_from": "Verfügbarkeit auf Anfrage",
"handover": "Fertiggestellt 2020 laut Konzeptbriefing",
"positioning": "Niedriger Risiko-Einstieg in Al Furjan mit Metro- und Straßenanbindung.",
"key_facts": [
"Zwischen Sheikh Zayed Road und Sheikh Mohammed Bin Zayed Road positioniert",
"SharePoint enthält Renderings, Completion Photos und Floor Plans",
"Geeignet für Erstinvestoren und Cashflow-orientierte Käufer",
],
"research_status": "Gute lokale SharePoint-Abdeckung; Unit-Mix aus Azizi-Katalog-/Suchauszug weicht leicht vom Konzept ab und sollte vor Livegang final geprüft werden.",
},
"azizi-grand": {
"title": "Azizi Grand",
"district": "Dubai Sports City",
"category": "Bald bezugsfertig - Bauphase weit fortgeschritten",
"status": "Im Bau / Near Handover",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
"unit_count": "411 Apartments laut Azizi Folding Map V.10",
"price_from": "Aktuelle Verfügbarkeit prüfen",
"handover": "Q1 2026 laut Bauupdates",
"positioning": "Kurze Restlaufzeit bis Cashflow in einer sport- und familiennahen Lage.",
"key_facts": [
"411 Apartments laut Azizi Folding Map V.10",
"Building Height B+G+3P+14 laut Azizi Folding Map V.10",
"Bauupdate September 2025: 57% Baufortschritt",
"Bauupdate November 2025: 67% Baufortschritt",
"Amenities: Gym, zwei Pools, Kinderspielbereiche, BBQ, Landschaftsgärten",
],
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Web-/Bauupdates liefern harte Fakten.",
},
"beach-oasis": {
"title": "Beach Oasis",
"district": "Dubai Studio City",
"category": "Bald bezugsfertig - Bauphase weit fortgeschritten",
"status": "Im Bau / Phase abhängig",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom"],
"unit_count": "1.416 Apartments in 4 Buildings laut Azizi Folding Map V.10",
"price_from": "ab ca. AED 480k-822k je Phase/Quelle; aktuelle Verfügbarkeit prüfen",
"handover": "Phase abhängig: 2024/2025 bzw. Phase 2 bis 2026 laut Webquellen",
"positioning": "Studio-City-Einstieg mit Lagunen-/Beach-Feeling im bezahlbaren Segment.",
"key_facts": [
"1.416 Apartments laut Azizi Folding Map V.10",
"Dubai Studio City, Medien- und Entertainment-Hub",
"Lagoon-style swimming pool und man-made beach",
"Outdoor courtyard, Cafes/Restaurants, Gym, landscaped gardens",
],
"research_status": "Wichtig: lokaler Treffer ist überwiegend Jaddaf Beach Oasis, nicht Studio City Beach Oasis. Für Live-Daten Studio-City-Quelle priorisieren.",
},
"burj-azizi": {
"title": "Burj Azizi",
"district": "Sheikh Zayed Road / Trade Centre",
"category": "Ultra-Prestige & Mega-Communities",
"status": "Im Bau / Off-Plan",
"unit_types": ["Holiday Homes", "Freehold Apartments", "Penthouses", "Hotel", "Retail"],
"unit_count": "1.037 Residences, 725 m und 140+ Floors laut Azizi Folding Map V.10",
"price_from": "offizielle Burj-Azizi-Seite: ab AED 8,5 Mio bis AED 1 Mrd; Launch-Presse: ab AED 10.000/sqft",
"handover": "Bis Ende 2028 laut Programm-/Pressekontext; im Konzept 2028-2030",
"positioning": "Headline-Projekt: zweithöchster Tower der Welt und einziges Freehold-Projekt auf dem Sheikh-Zayed-Road-Strip.",
"key_facts": [
"Azizi Folding Map V.10: 725 Meter, 140+ Floors, 1.037 Residences, Sheikh Zayed Road",
"Offizielle Seite: Highest Observation Deck 649m, Highest Club 567m, Highest Hotel Lobby 498m",
"Offizielle Kontaktseite: Retail Ground-L7, Apartments Level 37-69, Penthouses Level 72-88, Observation Deck Level 130",
],
"research_status": "Azizi Folding Map V.10 liefert direkte Zahlen; sehr gute offizielle Burj-Azizi-Webquelle; keine lokale SharePoint-Abdeckung gefunden.",
},
"monaco-mansions": {
"title": "Monaco Mansions",
"district": "Dubai South / Azizi Venice",
"category": "Ultra-Prestige & Mega-Communities",
"status": "Im Bau / Off-Plan",
"unit_types": ["6 Bedroom Mansions", "7 Bedroom Mansions", "8 Bedroom Mansions"],
"unit_count": "109 Mansions",
"price_from": "ab AED 45 Mio laut Konzeptbriefing",
"handover": "Q4 2026 laut Konzeptbriefing; final prüfen",
"positioning": "Exklusivstes Villen-Segment innerhalb der Venice-Community.",
"key_facts": [
"Azizi Folding Map V.10 nennt 109 Villas im Azizi-Venice-Kontext",
"Positioniert für HNI-Käufer, Familien und Trophy-Asset-Investoren",
"Investmentthese ist an Dubai South, Flughafenentwicklung und Venice-Masterplan gekoppelt",
],
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Venice-Web-/Pressesources bestätigen Mansion-Kontext, projektgenaue Verfügbarkeit final prüfen.",
},
"azizi-venice": {
"title": "Azizi Venice",
"district": "Dubai South",
"category": "Ultra-Prestige & Mega-Communities",
"status": "Im Bau / Mega-Community",
"unit_types": ["Apartments", "Villas", "Mansions", "Retail"],
"unit_count": "34.795+ Apartments, 102 Apartment Buildings und 109 Villas laut Azizi Folding Map V.10",
"price_from": "ab ca. AED 650k laut Konzeptbriefing; aktuelle Phase prüfen",
"handover": "Phasenweise ab 2026 laut Konzeptbriefing",
"positioning": "Große Dubai-South-Wachstumsthese mit Lagoon, Cultural District und Nähe zu Al Maktoum Airport.",
"key_facts": [
"Azizi Folding Map V.10: 34.795+ Apartments, 102 Apartment Buildings, 109 Villas",
"18 km Freshwater Lagoon, Opera House, Theatre, Exhibition Hall, Performing Arts Academy",
"Nähe zu Al Maktoum International Airport; Retail Boulevard, Hotels, Schulen, Krankenhaus",
],
"research_status": "Lokaler SharePoint-Ordner leer; mehrere Web-/Pressesources liefern harte Masterplan-Fakten.",
},
"azizi-milan": {
"title": "Azizi Milan",
"district": "Azizi Milan / Sheikh Mohammed Bin Zayed Road",
"category": "Ultra-Prestige & Mega-Communities",
"status": "Im Bau / Master-Planned Community",
"unit_types": ["Apartments", "Retail", "Hospitality", "Mixed Use"],
"unit_count": "100 Buildings und 80.000 Apartments laut Azizi Folding Map V.10",
"price_from": "Aktuelle Gebäudephase prüfen",
"handover": "Phase abhängig",
"positioning": "AED-75-Mrd.-Masterplan mit italienischer Design-/Fashion-Positionierung.",
"key_facts": [
"Azizi Folding Map V.10: 100 Buildings und 80.000 Apartments",
"Web-/Pressesources: AED 75 Mrd. und 40 Mio sqft GFA",
"Milan Heights als lagoon-facing Enclave innerhalb Azizi Milan",
"Lage an Sheikh Mohammed Bin Zayed Road, wichtiger Verbindungsachse zwischen Emiraten",
],
"research_status": "Sehr gute lokale SharePoint-Abdeckung für einzelne AM-Gebäude und Milan Heights; Webquellen ergänzen Masterplan-Fakten.",
},
"azizi-wasel": {
"title": "Azizi Wasel",
"district": "Dubai Islands",
"category": "Ultra-Prestige & Mega-Communities",
"status": "Off-Plan / New Launch",
"unit_types": ["Studios", "1 Bedroom", "2 Bedroom", "3 Bedroom", "Penthouses"],
"unit_count": "221 Apartments laut Azizi Folding Map V.10",
"price_from": "ab ca. AED 1,04-1,1 Mio je Quelle",
"handover": "Q2 2027 bis Q1 2028 je Quelle; final prüfen",
"positioning": "Frühphasiger Einstieg in Dubai Islands als künftige Premium-Inseldestination.",
"key_facts": [
"221 Apartments laut Azizi Folding Map V.10",
"Building Height 3B+G+13 laut Azizi Folding Map V.10",
"Dubai Islands / Deira Waterfront",
"Studios bis 3-Bedroom Apartments sowie 3-4-Bedroom Penthouses",
"50/50 Payment Plan wird konsistent in Webquellen genannt",
],
"research_status": "Keine lokale SharePoint-Abdeckung gefunden; Azizi Folding Map V.10 bestätigt 221 Apartments und Building Height 3B+G+13.",
},
}
def slugify(name: str) -> str:
value = name.lower()
value = value.replace("ê", "e")
value = re.sub(r"[^a-z0-9]+", "-", value).strip("-")
return value
def parse_official_links() -> list[dict[str, str]]:
current_area = ""
projects: list[dict[str, str]] = []
for line in OBSIDIAN_LIST.read_text(encoding="utf-8").splitlines():
heading = re.match(r"^###\s+📍\s+(.+)$", line)
if heading:
current_area = heading.group(1).strip()
continue
link = re.match(r"- \*\*(.+?):\*\* \[(https://www\.azizidevelopments\.com/[^\]]+)\]", line.strip())
if not link:
continue
title, url = link.groups()
projects.append(
{
"slug": slugify(title),
"title": title,
"area": current_area,
"official_url": url,
}
)
return projects
def main() -> None:
official_links = parse_official_links()
official_by_url = {item["official_url"]: item for item in official_links}
official_by_slug = {item["slug"]: item for item in official_links}
local = json.loads(LOCAL_EXTRACTION.read_text(encoding="utf-8"))
local_projects = local["projects"]
enriched: list[dict[str, Any]] = []
for slug, project in TOP_PROJECTS.items():
local_project = local_projects.get(slug, {})
if slug == "beach-oasis":
local_project = {
"source_dirs": [],
"coverage": {"files": 0, "images": 0, "xlsx": 0, "small_fact_pdfs": 0},
"image_candidates": [],
"pdf_extracts": [],
"xlsx_extracts": [],
}
official_url = local_project.get("official_url")
official = official_by_url.get(official_url or "") or official_by_slug.get(slug)
enriched.append(
{
"slug": slug,
"title": project["title"],
"official_url": official_url or (official or {}).get("official_url"),
"official_list_area": (official or {}).get("area"),
**project,
"local_sharepoint": {
"source_dirs": local_project.get("source_dirs", []),
"coverage": local_project.get("coverage", {}),
"image_candidates": local_project.get("image_candidates", [])[:6],
"fact_sources": [item["path"] for item in local_project.get("pdf_extracts", [])]
+ [item["path"] for item in local_project.get("xlsx_extracts", [])],
},
}
)
OFFICIAL_LINKS_OUTPUT.write_text(
json.dumps(
{
"source": str(OBSIDIAN_LIST),
"count": len(official_links),
"projects": official_links,
},
ensure_ascii=False,
indent=2,
),
encoding="utf-8",
)
TOP_PROJECTS_OUTPUT.write_text(
json.dumps(
{
"source_files": {
"official_link_list": str(OBSIDIAN_LIST),
"local_sharepoint_extraction": str(LOCAL_EXTRACTION),
},
"note": "Working research data for the B2in Dubai real-estate page. Pricing, availability and handover dates must be confirmed before publication.",
"projects": enriched,
},
ensure_ascii=False,
indent=2,
),
encoding="utf-8",
)
print(f"Wrote {OFFICIAL_LINKS_OUTPUT}")
print(f"Wrote {TOP_PROJECTS_OUTPUT}")
if __name__ == "__main__":
main()