173 lines
18 KiB
Plaintext
173 lines
18 KiB
Plaintext
<mxfile host="draw.io" modified="2026-02-12" agent="Claude Code" type="device">
|
|
<diagram id="a6-api" name="Mapa Integracji API">
|
|
<mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
|
|
<mxCell id="title" value="NordaBiz — Mapa Integracji API" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=22;fontStyle=1;fontColor=#1a1a2e;" vertex="1" parent="1">
|
|
<mxGeometry x="460" y="15" width="430" height="36" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="subtitle" value="Szczegółowa mapa wszystkich zewnętrznych API z endpointami, uwierzytelnianiem i przepływem danych" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=11;fontColor=#888;" vertex="1" parent="1">
|
|
<mxGeometry x="350" y="48" width="620" height="20" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- CENTRUM: NORDABIZ API LAYER -->
|
|
<mxCell id="center_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a1a2e;strokeColor=#1a1a2e;shadow=1;" vertex="1" parent="1">
|
|
<mxGeometry x="580" y="310" width="240" height="280" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="center_title" value="<b style="font-size:16px;color:#fff">NordaBiz API Layer</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
|
<mxGeometry x="610" y="318" width="200" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs1" value="<font color="#90CAF9">gemini_service.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="346" width="120" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs2" value="<font color="#90CAF9">pagespeed_client.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="366" width="130" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs3" value="<font color="#90CAF9">oauth_service.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="386" width="120" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs4" value="<font color="#90CAF9">crux_service.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="406" width="110" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs5" value="<font color="#90CAF9">youtube_service.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="426" width="130" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs6" value="<font color="#90CAF9">social_media_audit.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="446" width="140" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs7" value="<font color="#90CAF9">news_service.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="466" width="110" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs8" value="<font color="#90CAF9">krs_service.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="486" width="110" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs9" value="<font color="#90CAF9">email_service.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="506" width="120" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs10" value="<font color="#90CAF9">benchmark_service.py</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="526" width="140" height="18" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="cs_db" value="<font color="#FFF59D">→ PostgreSQL (80+ tabel)</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=10;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="553" width="160" height="18" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- GOOGLE APIs (lewa-góra) -->
|
|
<mxCell id="g_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#4285F4;shadow=1;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="80" width="440" height="250" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="g_title" value="<b style="font-size:16px;color:#4285F4">Google APIs</b><font style="font-size:10px;color:#888"> — API Key + OAuth 2.0</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="86" width="320" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="g1" value="<b>Gemini AI</b> (gemini-3-flash)<br><font style="font-size:9px">Auth: API Key | generateContent, embedContent<br>Chat, SEO insights, knowledge extraction</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#4285F4;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="116" width="410" height="42" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="g2" value="<b>PageSpeed Insights API v5</b><br><font style="font-size:9px">Auth: API Key | runPagespeed (strategy=mobile/desktop)<br>Lighthouse audits, Core Web Vitals, accessibility</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#4285F4;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="164" width="410" height="42" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="g3" value="<b>Places API (New)</b><br><font style="font-size:9px">Auth: API Key | searchText, getPlace, reviews<br>GBP data, ratings, photos, attributes</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#4285F4;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="212" width="410" height="42" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="g4" value="<b>Search Console API</b> ✅ OAuth<br><font style="font-size:9px">Auth: OAuth 2.0 | searchAnalytics.query<br>Clicks, impressions, CTR, top queries/pages</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#34A853;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="260" width="200" height="55" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="g5" value="<b>CrUX API</b><br><font style="font-size:9px">Auth: API Key | queryRecord<br>Real user field data (LCP, FID,<br>CLS, INP, TTFB)</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#4285F4;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="265" y="260" width="200" height="55" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- STRZAŁKA Google → Center -->
|
|
<mxCell id="arr_g" value="5 API" style="strokeColor=#4285F4;strokeWidth=3;fontSize=11;fontColor=#4285F4;fontStyle=1;" edge="1" source="g_bg" target="center_bg" parent="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- SOCIAL MEDIA (prawa-góra) -->
|
|
<mxCell id="sm_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4EC;strokeColor=#C62828;shadow=1;" vertex="1" parent="1">
|
|
<mxGeometry x="930" y="80" width="340" height="210" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="sm_title" value="<b style="font-size:16px;color:#C62828">Social Media</b><font style="font-size:10px;color:#888"> — Web scraping</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="86" width="280" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="sm1" value="<b>Facebook</b> — scraping stron firmowych" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#1877F2;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="116" width="310" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="sm2" value="<b>Instagram</b> — weryfikacja profili (curl -sI)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#E4405F;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="146" width="310" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="sm3" value="<b>LinkedIn</b> — scraping profili firmowych" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#0077B5;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="176" width="310" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="sm4" value="<b>YouTube Data API v3</b> — API Key | channels.list" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#FF0000;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="206" width="310" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="sm5" value="<b>TikTok + X (Twitter)</b> — link detection only" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#333;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="236" width="310" height="24" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- STRZAŁKA Social → Center -->
|
|
<mxCell id="arr_sm" value="6 platform" style="strokeColor=#C62828;strokeWidth=3;fontSize=11;fontColor=#C62828;fontStyle=1;" edge="1" source="sm_bg" target="center_bg" parent="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- REJESTRY PUBLICZNE (lewy-dół) -->
|
|
<mxCell id="reg_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E9;strokeColor=#2E7D32;shadow=1;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="400" width="440" height="150" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="reg_title" value="<b style="font-size:16px;color:#2E7D32">Rejestry Publiczne</b><font style="font-size:10px;color:#888"> — REST / SOAP</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="406" width="340" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="reg1" value="<b>KRS API</b> (Krajowy Rejestr Sądowy)<br><font style="font-size:9px">Auth: brak | Dane spółek, zarządy, wspólnicy<br>api-krs.ms.gov.pl — REST JSON</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#2E7D32;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="436" width="410" height="42" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="reg2" value="<b>CEIDG API</b> (Centralna Ewidencja Działalności Gosp.)<br><font style="font-size:9px">Auth: token | Dane JDG, PKD, adresy, status<br>dane.biznes.gov.pl — REST JSON</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#2E7D32;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="484" width="410" height="42" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- STRZAŁKA Reg → Center -->
|
|
<mxCell id="arr_reg" value="2 rejestry" style="strokeColor=#2E7D32;strokeWidth=3;fontSize=11;fontColor=#2E7D32;fontStyle=1;" edge="1" source="reg_bg" target="center_bg" parent="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- INNE SERWISY (prawy-dół) -->
|
|
<mxCell id="oth_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#E65100;shadow=1;" vertex="1" parent="1">
|
|
<mxGeometry x="930" y="350" width="340" height="200" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="oth_title" value="<b style="font-size:16px;color:#E65100">Inne Serwisy</b>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="356" width="160" height="24" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="oth1" value="<b>Microsoft Graph API</b><br><font style="font-size:9px">Auth: OAuth 2.0 | Mail.Send<br>Wysyłka e-mail (powiadomienia, reset)</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#00A4EF;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="386" width="310" height="42" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="oth2" value="<b>Brave Search API</b><br><font style="font-size:9px">Auth: API Key | Web search<br>Wiadomości i news monitoring (ZOPK)</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#FB542B;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="434" width="310" height="42" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="oth3" value="<b>ALEO.com API</b><br><font style="font-size:9px">Auth: scraping | Dane finansowe firm<br>Przychody, zyski, zatrudnienie</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#E65100;fontSize=10;align=left;spacingLeft=6;" vertex="1" parent="1">
|
|
<mxGeometry x="945" y="482" width="310" height="42" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- STRZAŁKA Other → Center -->
|
|
<mxCell id="arr_oth" value="3 serwisy" style="strokeColor=#E65100;strokeWidth=3;fontSize=11;fontColor=#E65100;fontStyle=1;" edge="1" source="oth_bg" target="center_bg" parent="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- LEGENDA AUTH -->
|
|
<mxCell id="leg_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#ccc;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="600" width="440" height="70" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="leg_title" value="<b style="font-size:12px">Metody uwierzytelniania:</b>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="606" width="200" height="22" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="leg1" value="<font style="font-size:10px"><b>API Key</b> — klucz w .env (Gemini, PageSpeed, Places, CrUX, YouTube, Brave)<br><b>OAuth 2.0</b> — token użytkownika (Google Search Console, Microsoft Graph, Meta)<br><b>Token</b> — klucz autoryzacyjny (CEIDG) &nbsp;|&nbsp; <b>Open</b> — brak autoryzacji (KRS)</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
|
<mxGeometry x="55" y="628" width="420" height="36" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- PODSUMOWANIE -->
|
|
<mxCell id="summary" value="<font style="font-size:11px;color:#888"><b>16 integracji API</b> &nbsp;|&nbsp; 5 Google APIs + 6 Social Media + 2 Rejestry + 3 Inne &nbsp;|&nbsp; Cost: <b>$0/mies.</b> (free tiers + scraping)</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
|
<mxGeometry x="330" y="710" width="700" height="24" as="geometry"/>
|
|
</mxCell>
|
|
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|