aee0f09db8
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
145 lines
6.1 KiB
Python
145 lines
6.1 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Anpassa branschspecifika infographics per undersektor.
|
||
Användning: python3 customize-industry.py [industry-dir]
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
import re
|
||
from pathlib import Path
|
||
|
||
# Branschspecifika konfigurationer
|
||
INDUSTRIES = {
|
||
'facade-inspection': {
|
||
'name': 'Fasadinspektion',
|
||
'step_1_title': 'Hitta fasader nära dig',
|
||
'step_1_desc': 'Se tillgängliga fasaduppdrag på kartan. Välj byggnader i ditt område.',
|
||
'step_2_title': 'Dokumentera skick',
|
||
'step_2_desc': 'Fotografera fasad, fönster och entré enligt instruktionerna i appen.',
|
||
'step_3_title': 'Få betalt',
|
||
'step_3_desc': 'Ladda upp bilderna. Godkännande inom 24h. Betalt varje måndag.',
|
||
'value_1_title': 'Snabbare än traditionell besiktning',
|
||
'value_1_desc': 'Få bilddata inom timmar istället för veckor.',
|
||
'value_2_title': 'Kvalitetssäkrat',
|
||
'value_2_desc': 'Varje submission granskas av AI och valideras mot GPS.',
|
||
'cta_subtext': 'Börja tjäna på fasadinspektion idag.',
|
||
'cta_button_text': 'Bli Zoomer',
|
||
},
|
||
'bridge-inspection': {
|
||
'name': 'Broinspektion',
|
||
'step_1_title': 'Hitta broar i ditt område',
|
||
'step_1_desc': 'Se tillgängliga broinspektionsuppdrag. Välj de som passar din rutt.',
|
||
'step_2_title': 'Dokumentera broskick',
|
||
'step_2_desc': 'Fotografera brokropp, leder, räcken och fundament enligt spec.',
|
||
'step_3_title': 'Bidra till säkerhet',
|
||
'step_3_desc': 'Dina bilder hjälper kommuner att upptäcka skador tidigt. Betalt varje måndag.',
|
||
'value_1_title': 'Kritisk infrastruktur',
|
||
'value_1_desc': 'Hjälp till att hålla Sveriges broar säkra.',
|
||
'value_2_title': 'Högre ersättning',
|
||
'value_2_desc': 'Broinspektion betalar 200–500 kr per uppdrag.',
|
||
'cta_subtext': 'Bidra till säkrare infrastruktur och tjäna pengar.',
|
||
'cta_button_text': 'Bli broinspektör',
|
||
},
|
||
'storm-damage': {
|
||
'name': 'Stormskadebedömning',
|
||
'step_1_title': 'Få notis vid storm',
|
||
'step_1_desc': 'quiXzoom skickar push-notiser när stormskadeuppdrag aktiveras i ditt område.',
|
||
'step_2_title': 'Dokumentera skador',
|
||
'step_2_desc': 'Fotografera tak, fasader, träd och vägar. Prioritera säkerheten.',
|
||
'step_3_title': 'Snabbast betalt',
|
||
'step_3_desc': 'Stormskadeuppdrag har högst prioritet. Godkännande och betalning inom 48h.',
|
||
'value_1_title': 'Högst ersättning',
|
||
'value_1_desc': '300–500 kr per uppdrag. Bonus för snabb insamling.',
|
||
'value_2_title': 'Hjälp samhället',
|
||
'value_2_desc': 'Dina bilder påskyndar skadebedömning och återställning.',
|
||
'cta_subtext': 'Bli först på plats efter stormen.',
|
||
'cta_button_text': 'Registrera dig',
|
||
},
|
||
'property-documentation': {
|
||
'name': 'Fastighetsdokumentation',
|
||
'step_1_title': 'Hitta fastigheter',
|
||
'step_1_desc': 'Se tillgängliga fastighetsuppdrag. Välj bostadsrätter, kontor eller butiker.',
|
||
'step_2_title': 'Dokumentera noggrant',
|
||
'step_2_desc': 'Fotografera exteriör, interiör och detaljer enligt checklista.',
|
||
'step_3_title': 'Få betalt veckovis',
|
||
'step_3_desc': 'Godkända uppdrag betalas ut varje måndag. Ingen väntetid.',
|
||
'value_1_title': 'Stort utbud',
|
||
'value_1_desc': 'Många fastighetsbolag behöver löpande dokumentation.',
|
||
'value_2_title': 'Flexibelt',
|
||
'value_2_desc': 'Välj uppdrag som passar din dag.',
|
||
'cta_subtext': 'Dokumentera fastigheter och tjäna pengar.',
|
||
'cta_button_text': 'Bli Zoomer',
|
||
},
|
||
}
|
||
|
||
# Default för branscher som inte finns i config
|
||
DEFAULT_CONFIG = {
|
||
'name': 'Fältdatainsamling',
|
||
'step_1_title': 'Hitta uppdrag',
|
||
'step_1_desc': 'Se tillgängliga uppdrag nära dig i quiXzoom-appen.',
|
||
'step_2_title': 'Dokumentera',
|
||
'step_2_desc': 'Följ instruktionerna och ta bilder med din smartphone.',
|
||
'step_3_title': 'Få betalt',
|
||
'step_3_desc': 'Betalt varje vecka för godkända uppdrag.',
|
||
'value_1_title': 'Flexibelt arbete',
|
||
'value_1_desc': 'Jobba när du vill, där du vill.',
|
||
'value_2_title': 'Snabb betalning',
|
||
'value_2_desc': 'Få betalt varje måndag via Stripe.',
|
||
'cta_subtext': 'Börja tjäna pengar på fältdatainsamling idag.',
|
||
'cta_button_text': 'Bli Zoomer',
|
||
}
|
||
|
||
def customize_industry_page(industry_dir):
|
||
"""Anpassa infographic för en specifik bransch."""
|
||
industry_name = industry_dir.name
|
||
config = INDUSTRIES.get(industry_name, DEFAULT_CONFIG)
|
||
|
||
# Läs template
|
||
template_path = industry_dir.parent / '_components' / 'infographic-industry.html'
|
||
if not template_path.exists():
|
||
print(f" ❌ Template saknas: {template_path}")
|
||
return False
|
||
|
||
template = template_path.read_text(encoding='utf-8')
|
||
|
||
# Ersätt placeholders
|
||
result = template
|
||
for key, value in config.items():
|
||
placeholder = '{{' + key.upper() + '}}'
|
||
result = result.replace(placeholder, value)
|
||
|
||
# Ta bort oersatta placeholders (men inte kommentaren)
|
||
result = re.sub(r'\{\{([A-Z_]+)\}\}', lambda m: '' if m.group(1) != 'PLACEHOLDERS' else m.group(0), result)
|
||
|
||
# Skriv till fil
|
||
output_path = industry_dir / 'infographic-custom.html'
|
||
output_path.write_text(result, encoding='utf-8')
|
||
print(f" ✅ {industry_name}/infographic-custom.html skapad")
|
||
return True
|
||
|
||
def main():
|
||
root = Path(__file__).parent.parent / 'se'
|
||
|
||
print("=== Branschanpassade Infographics ===\n")
|
||
|
||
count = 0
|
||
for subdir in sorted(root.iterdir()):
|
||
if not subdir.is_dir():
|
||
continue
|
||
if subdir.name.startswith('_'):
|
||
continue
|
||
if not (subdir / 'index.html').exists():
|
||
continue
|
||
|
||
if customize_industry_page(subdir):
|
||
count += 1
|
||
|
||
print(f"\n=== {count} branschspecifika infographics skapade ===")
|
||
print("\nNästa steg:")
|
||
print(" 1. Uppdatera integrate.py för att använda custom infographics")
|
||
print(" 2. Testa lokalt")
|
||
print(" 3. Deploy till S3")
|
||
|
||
if __name__ == '__main__':
|
||
main() |