Sări la conținutul principal

Raportare riscuri

Acest caz de utilizare arată cum să generezi rapoarte detaliate de evaluare riscuri pentru proprietăți.

Folosești Python?

SDK-ul Python avvolează puncte finale riscuri într-un client tipizat — client.risk.point_risk(payload) returnează direct octeți PDF.

Scenariu

Generează rapoarte de riscuri pentru:

  • Proprietăți individuale (riscuri punct)
  • Proprietăți cu analiză zonă înconjurătoare (riscuri punct-buffer)
  • Creează rapoarte PDF sau HTML pentru stakeholderi

Raport riscuri punct

Generează raport riscuri pentru o locație unică:

{
"point": {
"type": "Point",
"coordinates": [-74.0060, 40.7128]
},
"layers": {
"names": ["flood_risk", "seismic_risk", "environmental"],
"source": "portfolio_01"
},
"map": {
"baseLayer": "OpenStreetMap",
"baseLayerType": "tile",
"zoom": 14
},
"author": "John Smith"
}

Formate de ieșire:

  • application/pdf - Document PDF
  • text/html - Document HTML

Raport riscuri punct-buffer

Analizează riscuri cu context zonă înconjurătoare folosind buffere concentrice:

{
"point": {
"type": "Point",
"coordinates": [-74.0060, 40.7128]
},
"buffer": {
"radiuses": [1000, 5000],
"style": "circle"
},
"layers": {
"names": ["flood_risk", "seismic_risk", "environmental"],
"source": "portfolio_01"
},
"filters": [
{"field": "property_type", "value": "residential"}
],
"aggregationColumns": ["risk_score", "mitigation_cost"],
"map": {
"baseLayer": "OpenStreetMap",
"baseLayerType": "tile",
"zoom": 14
},
"author": "John Smith",
"locale": "en-US"
}

Exemple cod

Generează raport PDF (JavaScript)

async function generateRiskReportPDF(lat, lon, reportName) {
const apiKey = process.env.QARTA_API_KEY;

const requestBody = {
point: {
type: "Point",
coordinates: [lon, lat]
},
layers: {
names: ["flood_risk", "seismic_risk", "environmental"],
source: "portfolio_01"
},
map: {
baseLayer: "OpenStreetMap",
baseLayerType: "tile",
zoom: 14
},
author: "Risk Team"
};

const response = await fetch(
'https://graph.quarticle.ro/graph/api/v1/reports/risk/point',
{
method: 'POST',
headers: {
'Authorization': `${apiKey}`,
'Content-Type': 'application/json',
'Accept': 'application/pdf'
},
body: JSON.stringify(requestBody)
}
);

const pdfBuffer = await response.buffer();
const fs = require('fs');
fs.writeFileSync(`${reportName}.pdf`, pdfBuffer);
console.log(`Report saved: ${reportName}.pdf`);
}

// Utilizare
await generateRiskReportPDF(40.7128, -74.0060, 'property_123_risk_report');

Generează raport HTML (Python)

import requests
import json

def generate_risk_report_html(lat, lon, output_file):
api_key = os.getenv('QARTA_API_KEY')

request_body = {
'point': {
'type': 'Point',
'coordinates': [lon, lat]
},
'layers': {
'names': ['flood_risk', 'seismic_risk', 'environmental'],
'source': 'portfolio_01'
},
'map': {
'baseLayer': 'OpenStreetMap',
'baseLayerType': 'tile',
'zoom': 14
},
'author': 'Risk Team'
}

response = requests.post(
'https://graph.quarticle.ro/graph/api/v1/reports/risk/point',
headers={
'Authorization': f'{api_key}',
'Content-Type': 'application/json',
'Accept': 'text/html'
},
json=request_body
)

with open(output_file, 'w') as f:
f.write(response.text)

print(f'Report saved: {output_file}')

# Utilizare
generate_risk_report_html(40.7128, -74.0060, 'property_risk_report.html')

Rapoarte riscuri batch

Generează mai multe rapoarte în programatic:

async function generateBatchRiskReports(properties) {
const apiKey = process.env.QARTA_API_KEY;
const reports = [];

for (const property of properties) {
console.log(`Generating report for ${property.name}...`);

const requestBody = {
point: {
type: "Point",
coordinates: [property.lon, property.lat]
},
layers: {
names: ["flood_risk", "seismic_risk"],
source: "portfolio_01"
},
map: {
baseLayer: "OpenStreetMap",
baseLayerType: "tile",
zoom: 14
},
author: "Risk Team"
};

const response = await fetch(
'https://graph.quarticle.ro/graph/api/v1/reports/risk/point',
{
method: 'POST',
headers: {
'Authorization': `${apiKey}`,
'Content-Type': 'application/json',
'Accept': 'application/pdf'
},
body: JSON.stringify(requestBody)
}
);

const pdfBuffer = await response.buffer();
const fs = require('fs');
const filename = `reports/${property.id}_risk_report.pdf`;
fs.writeFileSync(filename, pdfBuffer);

reports.push({
property: property.name,
file: filename,
timestamp: new Date().toISOString()
});
}

return reports;
}

Rapoarte riscuri V2

Punctele finale V2 suportă filtre imbricate îmbunătățite și modele date V2. Utilizează punctele finale /graph/api/v2/reports/risk/ în loc de v1.

Diferență: V2 acceptă filters_v2 în loc de filters:

{
"filters_v2": [
{
"field": "property_type",
"value": "residential",
"filters": [
{"field": "occupancy", "value": "occupied"}
]
}
]
}

Conținut raport

Rapoartele de obicei includ:

  • Rezumat riscuri - Scor riscuri general și clasificări
  • Riscuri de mediu - Inundații, seismic, contaminare, etc.
  • Vizualizare hartă - Locație pe hartă cu zone de riscuri
  • Analiză detaliată - Tabele de date și metrici
  • Recomandări - Strategii de atenuare
  • Date istorice - Tendințe și modele

Cazuri de utilizare

  • Due diligence pre-achiziție - Evaluează riscuri înainte de cumpărare
  • Underwriting asigurare - Generează rapoarte pentru asiguratori
  • Comunicare investitori - Partajează profiluri riscuri cu stakeholderi
  • Monitorizare portofoliu - Evaluări de riscuri regulate
  • Conformare reglementară - Documentează evaluări de riscuri pentru audite

Gestionare erori

try {
const response = await fetch(
'https://graph.quarticle.ro/graph/api/v1/reports/risk/point',
{ method: 'POST', ...options }
);

if (!response.ok) {
const error = await response.json();
console.error(`Error: ${error.errorMessage.message}`);
return null;
}

return await response.buffer();

} catch (error) {
console.error('Report generation failed:', error);
return null;
}

Pași următori