transceiver-db/CONCEPT-transceiver-intelligence-platform.md
Rene Fichtmueller b43bdd3060 feat: TIP Phase 0+1 — monorepo, DB schema, API, scraper engine
Phase 0 - Foundation:
- Restructure into npm workspace monorepo (packages/core, api, scraper)
- PostgreSQL 17 + TimescaleDB schema (15 tables incl. hypertables)
- Docker Compose for local dev (PostgreSQL on 5433 + Qdrant)
- Express 5 API on port 3200 with 6 routes
- Seed script to migrate 159 transceivers + 42 standards from npm package
- Erik server setup script + PM2 ecosystem config

Phase 1 - Scraper Engine:
- Crawlee + Playwright framework with pg-boss scheduler
- FS.com scraper (PlaywrightCrawler, anti-bot workaround)
- Optcore.net scraper (WP REST API enumeration + PlaywrightCrawler)
  - Uses /wp-json/wp/v2/product to get 2000+ product URLs
  - Playwright renders individual product pages for price extraction
- Cisco TMG Matrix scraper (compatibility data)
- News RSS aggregator (optics.org, SPIE, Network World, Nature Photonics)
  - Keyword relevance scoring for transceiver/fiber topics
  - xml2js with malformed XML sanitization
- SHA-256 content hashing for change detection (skip unchanged records)
- pg-boss v10 with explicit queue creation before scheduling
2026-03-27 16:27:31 +13:00

1108 lines
52 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Transceiver Intelligence Platform (TIP)
## Das massivste Transceiver & Switch Database Projekt der Welt
**Version:** 1.0 — 2026-03-27
**Author:** Rene Fichtmueller / Context X
**Repository:** github.com/renefichtmueller/transceiver-db
**Integration:** EO Global Pulse (Flexoptix)
---
## 1. VISION
Eine lebendige Intelligence-Plattform die alles vereint:
- **159+ Transceiver** (bestehende npm DB) als Seed-Daten
- **Echtzeit-Preisüberwachung** aller Wettbewerber weltweit
- **Lagerbestände live** von FS.com bis chinesischen OEMs
- **Digitalisierte Handbücher** aller 400+ Switch-Hersteller per MCP durchsuchbar
- **Hype Cycle Engine** basierend auf Norton-Bass Multigenerational Diffusion Model
- **FAQ/Troubleshooting Knowledge Base** aus gescannten Vendor-FAQs
- **Automatische Blog-Generierung** aus Marktdaten und Trends
- **Freitext-Suche** für Sales ("Kunde hat Cisco Nexus 93180, braucht 10km Transceiver")
- **Template-Matching** (FlexBox Coding + Switch-Konfiguration)
- **News-Aggregation** von OFC, ECOC, CIOE, Photonics West
- **Fabrik-Monitoring** aller Transceiver-Hersteller weltweit
**Kein statisches Nachschlagewerk — eine sich selbst aktualisierende Competitive Intelligence Engine.**
---
## 2. ARCHITEKTUR
### 2.1 System-Übersicht
```
┌─────────────────────────────────────────────────────────────────────────┐
│ CLOUDFLARE EDGE LAYER │
│ │
│ Workers R2 Storage KV Cache Queues │
│ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌──────────┐ │
│ │ API GW │ │ PDFs │ │ Hot │ │ Scrape │ │
│ │ MCP Srv │ │ Manuals │ │ Product │ │ Jobs │ │
│ │ FAQ Chat│ │ Images │ │ Cache │ │ OCR Pipe │ │
│ │ Blog API│ │ Exports │ │ Prices │ │ Alerts │ │
│ └─────────┘ └──────────┘ └─────────┘ └──────────┘ │
│ │ │ │ │ │
└─────────┼──────────────┼──────────────────┼───────────────┼─────────────┘
│ Cloudflare Tunnel │ │
┌─────────▼──────────────▼──────────────────▼───────────────▼─────────────┐
│ ERIK SERVER (.82) — Core Engine │
│ │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ PostgreSQL 17 + TimescaleDB + pgvector │ │
│ │ │ │
│ │ CORE TABLES: │ │
│ │ vendors · transceivers · switches · compatibility · │ │
│ │ documents · knowledge_base · standards · form_factors · │ │
│ │ templates · factories · news_articles · blog_drafts │ │
│ │ │ │
│ │ TIME-SERIES (Hypertables): │ │
│ │ price_observations · stock_observations · market_metrics │ │
│ │ │ │
│ │ FULL-TEXT SEARCH: │ │
│ │ tsvector auf allen durchsuchbaren Feldern │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ Qdrant (Docker, Port 6333) — Vector Search Engine │ │
│ │ │ │
│ │ Collections: │ │
│ │ product_embeddings · datasheet_chunks · faq_embeddings · │ │
│ │ manual_chunks · troubleshooting_embeddings · news_embeddings │ │
│ │ │ │
│ │ Payload Filtering: vendor, form_factor, speed, category, reach │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ Scraper Orchestrator (Node.js + Crawlee + Playwright, PM2) │ │
│ │ │ │
│ │ Job Scheduler: pg-boss (PostgreSQL-backed) │ │
│ │ Echtzeit: Preise + Stock (5-15 Min Intervall) │ │
│ │ Täglich: News, Messen, Blog-Feeds │ │
│ │ Wöchentlich: Handbücher, Datasheets, FAQs │ │
│ │ Monatlich: Factory-Updates, Vendor-Websites │ │
│ │ Change Detection: SHA-256 Content Hashing │ │
│ │ Adaptive Scheduling: Häufige Änderungen → kürzere Intervalle │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ Hype Cycle Engine (TypeScript) │ │
│ │ │ │
│ │ Norton-Bass Multigenerational Diffusion Model │ │
│ │ + Media Sentiment Analysis │ │
│ │ + Phase Classification (5 Phasen) │ │
│ │ = Automatische Hype Cycle Berechnung pro Technologie │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ OCR Pipeline: Docling → Chunk → Embed → Store │ │
│ │ Embeddings: Ollama nomic-embed-text auf .213 (zero cost) │ │
│ └───────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ MAC STUDIO (.213) — AI Layer │
│ Ollama: nomic-embed-text (Embeddings), qwen2.5:14b (Blog/FAQ) │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ EO GLOBAL PULSE — Frontend │
│ Transceiver LLM Chat · Sales Advisor · Hype Cycle Dashboard │
│ Compatibility Checker · Price Comparison · Template Finder │
└─────────────────────────────────────────────────────────────────────────┘
```
### 2.2 Warum diese Architektur
| Anforderung | Komponente | Begründung |
|---|---|---|
| Relationale Daten | PostgreSQL 17 | Bewährt, Team kennt es, FK-Constraints, ACID |
| Zeitreihen (Preise/Stock) | TimescaleDB Extension | Hypertable-Kompression (20x), Continuous Aggregates für Trends |
| Vektor-Suche mit Filtern | Qdrant | Payload-Filtering: "Zeige Transceiver WHERE vendor=Cisco AND form_factor=QSFP28 ORDER BY similarity" — pgvector kann das nicht effizient |
| Dokument-Storage | Cloudflare R2 | S3-kompatibel, keine Egress-Kosten, global verfügbar |
| Hot-Cache | Cloudflare KV | Sub-ms Reads für häufig abgefragte Produkte |
| API Layer | Cloudflare Workers | Global Edge, MCP-Server-Host, Multi-Tenant Routing |
| Scraping | Crawlee + Playwright auf Erik | Crawlee (18k+ Stars) — Request-Queuing, Auto-Retry, Anti-Bot, Session-Management out of the box |
| OCR | Docling v2.81 (bereits installiert) | Beste OSS-Option für technische PDFs mit Tabellen |
| Embeddings | Ollama nomic-embed-text auf .213 | 768 Dimensionen, 8192 Token Context, zero API-Kosten |
| Blog-Generierung | Ollama qwen2.5:14b auf .213 | Lokale LLM-Generierung, keine API-Kosten |
### 2.3 Kosten (monatlich)
| Komponente | Hosting | Kosten |
|---|---|---|
| PostgreSQL + TimescaleDB + Qdrant | Erik (.82, existiert) | 0 EUR |
| Cloudflare Workers (API) | Workers Paid Plan | ~5 EUR |
| Cloudflare R2 (~100GB PDFs/Manuals) | R2 Storage | ~1.50 EUR |
| Cloudflare KV (Hot Cache) | KV Namespace | ~0.50 EUR |
| Residential Proxies (Scraping) | Bright Data / Geonode | 50-100 EUR |
| Ollama Embeddings + LLM | Mac Studio .213 (existiert) | 0 EUR (Strom) |
| **Gesamt** | | **~55-105 EUR/Monat** |
---
## 3. DATENBANK-SCHEMA
### 3.1 Core Tables (PostgreSQL)
```sql
-- ============================================================
-- VENDORS (Hersteller, Distributoren, Reseller, OEMs)
-- ============================================================
CREATE TABLE vendors (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL UNIQUE,
slug TEXT NOT NULL UNIQUE, -- URL-safe identifier
type TEXT NOT NULL, -- manufacturer|distributor|oem|reseller|compatible
headquarters TEXT,
country TEXT,
website TEXT,
shop_url TEXT, -- Webshop URL für Scraping
api_available BOOLEAN DEFAULT FALSE,
api_endpoint TEXT,
logo_r2_key TEXT,
founded_year INTEGER,
revenue_usd BIGINT, -- Letzte bekannte Jahresumsatz
employee_count INTEGER,
market_position TEXT, -- "Top 3 Global", "Regional Leader", etc.
specialties TEXT[], -- ["400G", "Coherent", "CWDM"]
scrape_config JSONB, -- Scraper-spezifische Config (Selektoren, etc.)
last_scraped TIMESTAMPTZ,
is_competitor BOOLEAN DEFAULT FALSE, -- Wettbewerber von Flexoptix
is_factory BOOLEAN DEFAULT FALSE, -- Eigene Fertigung
factory_locations TEXT[], -- ["Shenzhen", "Thailand", "Vietnam"]
certifications TEXT[], -- ["ISO 9001", "RoHS", "TAA"]
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- ============================================================
-- TRANSCEIVERS (Haupttabelle — erweitert bestehende npm DB)
-- ============================================================
CREATE TABLE transceivers (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
vendor_id UUID REFERENCES vendors(id),
part_number TEXT NOT NULL,
standard TEXT, -- IEEE/MSA Referenz
form_factor TEXT NOT NULL, -- SFP, SFP+, QSFP28, QSFP-DD, OSFP...
speed_gbps NUMERIC NOT NULL,
speed_label TEXT, -- "100G", "400G", "800G"
lanes INTEGER,
lane_rate_gbps NUMERIC,
modulation TEXT, -- NRZ, PAM4, Coherent
reach_meters INTEGER NOT NULL,
reach_label TEXT, -- "SR", "LR", "ER", "ZR"
fiber_type TEXT, -- SMF, MMF, Copper
wavelengths TEXT, -- "850nm", "1310nm", "CWDM4"
connector TEXT, -- LC, SC, MPO-12, MPO-16, CS, SN
power_consumption_w NUMERIC,
temp_range TEXT, -- COM (-0/70°C), IND (-40/85°C)
category TEXT, -- DataCenter, Metro, LongHaul, DCI, CWDM, DWDM...
dom_support BOOLEAN DEFAULT TRUE,
digital_diagnostics TEXT, -- DDM, CMIS, SFF-8472, SFF-8636
-- CWDM/DWDM spezifisch
wdm_type TEXT, -- CWDM, DWDM, null für non-WDM
channel_count INTEGER, -- Anzahl Wellenlängen
channel_spacing_ghz NUMERIC, -- 100GHz, 50GHz für DWDM
tunable BOOLEAN DEFAULT FALSE,
itu_grid TEXT, -- ITU-T G.694.1/G.694.2
-- Coherent spezifisch
coherent BOOLEAN DEFAULT FALSE,
baud_rate_gbaud NUMERIC,
fec_type TEXT, -- oFEC, cFEC, KP4, RS-FEC
dsp_vendor TEXT, -- Broadcom, Marvell, Inphi
-- Lifecycle & Markt
year_introduced INTEGER,
year_mainstream INTEGER, -- Wann Massenmarkt erreicht
year_peak INTEGER, -- Peak-Shipments
year_decline INTEGER, -- Beginn Rückgang
market_status TEXT, -- Mainstream, Growth, Emerging, Legacy, EOL
hype_cycle_phase TEXT, -- InnovationTrigger, Peak, Trough, Slope, Plateau
generation TEXT, -- "Gen1", "Gen2", "Next-Gen"
-- Pricing
price_tier TEXT, -- Budget, Standard, Premium
msrp_usd NUMERIC, -- Listenpreis
street_price_usd NUMERIC, -- Aktueller Marktpreis (von Scraper)
-- Technische Details
operating_case_temp TEXT,
max_link_length TEXT,
optical_budget_db NUMERIC,
tx_power_min_dbm NUMERIC,
tx_power_max_dbm NUMERIC,
rx_sensitivity_dbm NUMERIC,
extinction_ratio_db NUMERIC,
-- Meta
datasheet_r2_key TEXT, -- PDF in R2
image_r2_key TEXT,
tags TEXT[],
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(vendor_id, part_number)
);
-- ============================================================
-- SWITCHES (Alle Netzwerk-Switches aller Hersteller)
-- ============================================================
CREATE TABLE switches (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
vendor_id UUID REFERENCES vendors(id),
model TEXT NOT NULL,
series TEXT, -- "Nexus 9000", "QFX5000", "7280R3"
category TEXT, -- DataCenter, Campus, Edge, Core, SP
layer TEXT, -- L2, L3, L2/L3
managed BOOLEAN DEFAULT TRUE,
-- Port-Konfiguration
ports_config JSONB, -- {"48x10G SFP+": 48, "6x100G QSFP28": 6}
total_ports INTEGER,
uplink_speed_gbps NUMERIC,
max_speed_gbps NUMERIC, -- Höchste Port-Geschwindigkeit
-- Leistungsdaten
switching_capacity_tbps NUMERIC,
forwarding_rate_mpps NUMERIC,
latency_ns NUMERIC,
buffer_mb NUMERIC,
-- ASIC Info
asic_vendor TEXT, -- Broadcom, Marvell, Cisco, NVIDIA
asic_model TEXT, -- Tomahawk 4, Jericho2, Silicon One
asic_generation TEXT,
-- Features
poe_support TEXT, -- None, PoE, PoE+, PoE++, UPoE
stacking_support BOOLEAN DEFAULT FALSE,
vxlan_support BOOLEAN DEFAULT FALSE,
evpn_support BOOLEAN DEFAULT FALSE,
bgp_support BOOLEAN DEFAULT FALSE,
mpls_support BOOLEAN DEFAULT FALSE,
openconfig_support BOOLEAN DEFAULT FALSE,
sonic_compatible BOOLEAN DEFAULT FALSE,
macsec_support BOOLEAN DEFAULT FALSE,
-- Lifecycle
release_date DATE,
eos_date DATE, -- End of Sale
eol_date DATE, -- End of Life
last_support_date DATE,
lifecycle_status TEXT, -- Active, EoS Announced, EoL, Legacy
successor_model TEXT,
-- Physisch
rack_units NUMERIC,
max_power_w NUMERIC,
typical_power_w NUMERIC,
weight_kg NUMERIC,
airflow TEXT, -- F2B, B2F
-- Pricing
msrp_usd NUMERIC,
street_price_usd NUMERIC,
-- Dokumentation
manual_r2_key TEXT, -- Digitalisiertes Handbuch in R2
datasheet_r2_key TEXT,
config_guide_r2_key TEXT,
compatibility_list_url TEXT, -- Vendor Compatibility Matrix URL
-- Meta
tags TEXT[],
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(vendor_id, model)
);
-- ============================================================
-- COMPATIBILITY (Switch ↔ Transceiver Kompatibilität)
-- ============================================================
CREATE TABLE compatibility (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
switch_id UUID REFERENCES switches(id),
transceiver_id UUID REFERENCES transceivers(id),
verified_by TEXT, -- "Flexoptix Lab", "Vendor Matrix", "Community"
verification_date DATE,
verification_method TEXT, -- "tested", "vendor_matrix", "datasheet", "community"
status TEXT DEFAULT 'compatible', -- compatible, incompatible, partial, unknown
notes TEXT,
firmware_min TEXT, -- Minimum Firmware für Kompatibilität
known_issues TEXT,
source_url TEXT, -- Link zur Quelle
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(switch_id, transceiver_id)
);
-- ============================================================
-- TEMPLATES (FlexBox Coding + Switch-Konfiguration)
-- ============================================================
CREATE TABLE templates (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
type TEXT NOT NULL, -- flexbox_coding | switch_config
name TEXT NOT NULL,
description TEXT,
switch_vendor TEXT, -- Für welchen Switch-Hersteller
switch_series TEXT, -- Für welche Switch-Serie
transceiver_type TEXT, -- Für welchen Transceiver-Typ
speed_gbps NUMERIC,
technology TEXT, -- CWDM, DWDM, SR, LR, ZR
template_content TEXT NOT NULL, -- Der eigentliche Template-Code/Config
variables JSONB, -- Platzhalter-Variablen
tags TEXT[],
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- ============================================================
-- DOCUMENTS (PDFs, Handbücher, Datasheets in R2)
-- ============================================================
CREATE TABLE documents (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
entity_type TEXT NOT NULL, -- transceiver | switch | vendor | standard
entity_id UUID,
doc_type TEXT NOT NULL, -- manual | datasheet | config_guide | compatibility_list | faq | whitepaper
title TEXT,
filename TEXT,
r2_key TEXT NOT NULL, -- Pfad in R2
source_url TEXT, -- Original-Download-URL
file_size_bytes BIGINT,
page_count INTEGER,
ocr_status TEXT DEFAULT 'pending', -- pending | processing | completed | failed
ocr_text TEXT, -- Extrahierter Volltext
language TEXT DEFAULT 'en',
content_hash TEXT, -- SHA-256 für Change Detection
last_checked TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- ============================================================
-- KNOWLEDGE BASE (FAQs, Troubleshooting, Best Practices)
-- ============================================================
CREATE TABLE knowledge_base (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
category TEXT NOT NULL, -- troubleshooting | faq | best_practice | known_issue | compatibility_tip
subcategory TEXT, -- optical_power | link_flap | temperature | firmware | interop
question TEXT NOT NULL,
answer TEXT NOT NULL,
source_vendor TEXT, -- Von welchem Vendor-FAQ gescannt
source_url TEXT,
applies_to_form_factors TEXT[], -- ["QSFP28", "QSFP-DD"]
applies_to_speeds TEXT[], -- ["100G", "400G"]
applies_to_vendors TEXT[], -- ["Cisco", "Juniper"]
severity TEXT, -- critical | high | medium | low | info
resolution_steps JSONB, -- Strukturierte Lösungsschritte
last_verified TIMESTAMPTZ,
helpful_count INTEGER DEFAULT 0, -- Upvotes von Nutzern
tags TEXT[],
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- ============================================================
-- STANDARDS (IEEE, OIF, MSA — erweitert bestehende npm DB)
-- ============================================================
CREATE TABLE standards (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL UNIQUE, -- "IEEE 802.3bs", "OIF 400ZR"
body TEXT, -- IEEE, OIF, MSA
type TEXT, -- ieee_amendment | oif_ia | msa | de_facto
speed_gbps NUMERIC,
lanes INTEGER,
lane_rate_gbps NUMERIC,
modulation TEXT,
fiber_type TEXT,
wavelength TEXT,
max_reach_meters INTEGER,
fec_required BOOLEAN,
form_factors TEXT[],
year_draft INTEGER,
year_ratified INTEGER,
year_revised INTEGER,
status TEXT, -- draft | ratified | revised | superseded
superseded_by TEXT,
member_count INTEGER, -- Für MSAs
notes TEXT,
url TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- ============================================================
-- FACTORIES (Fertigungsstätten weltweit)
-- ============================================================
CREATE TABLE factories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
vendor_id UUID REFERENCES vendors(id),
name TEXT NOT NULL,
country TEXT NOT NULL,
city TEXT,
factory_type TEXT, -- manufacturing | assembly | r_and_d | headquarters
products TEXT[], -- ["SFP+", "QSFP28", "Coherent"]
capacity_units_month INTEGER, -- Geschätzte Monatskapazität
employee_count INTEGER,
certifications TEXT[],
expansion_planned BOOLEAN DEFAULT FALSE,
expansion_details TEXT,
source_url TEXT,
last_verified TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- ============================================================
-- NEWS (Aggregierte Nachrichten von Messen, Trade Press)
-- ============================================================
CREATE TABLE news_articles (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title TEXT NOT NULL,
source TEXT NOT NULL, -- "Lightwave", "Light Reading", "OFC 2026"
source_url TEXT NOT NULL UNIQUE,
published_at TIMESTAMPTZ,
author TEXT,
summary TEXT,
full_text TEXT,
category TEXT, -- product_launch | market_report | standard | m_and_a | factory | event
event TEXT, -- OFC, ECOC, CIOE, Photonics West
mentioned_vendors TEXT[],
mentioned_products TEXT[],
mentioned_standards TEXT[],
sentiment_score NUMERIC, -- -1.0 bis +1.0
relevance_score NUMERIC, -- 0-100
content_hash TEXT,
tags TEXT[],
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- ============================================================
-- BLOG DRAFTS (Auto-generierte Entwürfe)
-- ============================================================
CREATE TABLE blog_drafts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title TEXT NOT NULL,
topic TEXT, -- hype_cycle | price_trend | new_product | comparison | tutorial
target_audience TEXT, -- sales | technical | customer | seo
outline JSONB,
draft_content TEXT,
data_sources JSONB, -- Welche DB-Queries haben den Draft gefüttert
status TEXT DEFAULT 'draft', -- draft | review | approved | published
generated_by TEXT, -- "hype_cycle_engine" | "price_alert" | "news_digest"
word_count INTEGER,
seo_keywords TEXT[],
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
```
### 3.2 TimescaleDB Hypertables (Echtzeit-Zeitreihen)
```sql
-- ============================================================
-- PRICE OBSERVATIONS (Echtzeit-Preise aller Wettbewerber)
-- ============================================================
CREATE TABLE price_observations (
time TIMESTAMPTZ NOT NULL,
transceiver_id UUID NOT NULL,
source_vendor_id UUID NOT NULL, -- Von welchem Shop/Vendor
price NUMERIC NOT NULL,
currency TEXT DEFAULT 'USD',
stock_level TEXT, -- "in_stock", "low_stock", "out_of_stock", "on_request"
quantity_available INTEGER,
lead_time_days INTEGER,
min_order_qty INTEGER,
url TEXT, -- Direkt-Link zum Produkt
content_hash TEXT -- Change Detection
);
SELECT create_hypertable('price_observations', 'time',
chunk_time_interval => INTERVAL '1 day');
-- Continuous Aggregate für tägliche Durchschnitte
CREATE MATERIALIZED VIEW price_daily
WITH (timescaledb.continuous) AS
SELECT
time_bucket('1 day', time) AS bucket,
transceiver_id,
source_vendor_id,
AVG(price) AS avg_price,
MIN(price) AS min_price,
MAX(price) AS max_price,
last(stock_level, time) AS latest_stock,
COUNT(*) AS observation_count
FROM price_observations
GROUP BY bucket, transceiver_id, source_vendor_id;
-- Retention Policy: Rohdaten 90 Tage, Aggregates 5 Jahre
SELECT add_retention_policy('price_observations', INTERVAL '90 days');
-- ============================================================
-- MARKET METRICS (Hype Cycle Input-Daten)
-- ============================================================
CREATE TABLE market_metrics (
time TIMESTAMPTZ NOT NULL,
technology TEXT NOT NULL, -- "800G OSFP", "400G QSFP-DD", "CPO"
metric_type TEXT NOT NULL, -- vendor_count | shipment_share | asp_decline_rate | media_hype_index | patent_filings
value NUMERIC NOT NULL,
source TEXT, -- "LightCounting", "Crehan Research", "Google Trends"
notes TEXT
);
SELECT create_hypertable('market_metrics', 'time',
chunk_time_interval => INTERVAL '30 days');
```
### 3.3 Qdrant Vector Collections
```
Collection: product_embeddings
- vector: 768 dim (nomic-embed-text)
- payload: {product_id, vendor, form_factor, speed_gbps, category, fiber_type, reach_label}
- Use: Freitext-Suche ("10km Transceiver für Cisco Nexus")
Collection: datasheet_chunks
- vector: 768 dim
- payload: {document_id, entity_type, entity_id, page, section, chunk_text_preview}
- Use: "Was ist der Tx-Power Range des QSFP-DD 400G LR4?"
Collection: manual_chunks
- vector: 768 dim
- payload: {document_id, switch_vendor, switch_model, section, topic}
- Use: "Wie konfiguriere ich DWDM auf Juniper MX?"
Collection: faq_embeddings
- vector: 768 dim
- payload: {kb_id, category, subcategory, question_preview, severity}
- Use: "Transceiver zeigt niedrige Rx Power, was tun?"
Collection: news_embeddings
- vector: 768 dim
- payload: {article_id, source, published_at, category, event}
- Use: "Was wurde auf der OFC 2026 über 1.6T vorgestellt?"
```
---
## 4. DATENQUELLEN & CRAWLER-STRATEGIE
### 4.1 Echtzeit-Preise & Stock (5-15 Min Intervalle)
| Quelle | Typ | Methode | Preise | Stock | Besonderheiten |
|--------|-----|---------|--------|-------|----------------|
| **FS.com** | Reseller | Web Scraping (Crawlee/Playwright) | Öffentlich | Öffentlich | Größter Wettbewerber, transparenteste Preise |
| **Optcore** | Reseller | Web Scraping | Öffentlich (ab $5.50) | Öffentlich | Sehr transparente Preisgestaltung |
| **QSFPTEK** | Reseller | Web Scraping | Öffentlich | Öffentlich | Chinesischer Reseller |
| **10Gtek** | Reseller/Mfr | Web Scraping | Öffentlich | Öffentlich | Eigene Fertigung in China |
| **Edgeium** | Reseller | Web Scraping (Optics Finder) | Öffentlich | Öffentlich | Optics Finder Tool durchsuchbar |
| **Hummingbird Networks** | Reseller | Web Scraping | Öffentlich | Öffentlich | US-Reseller |
| **EDGE Optical** | Reseller | Web Scraping | Öffentlich | Öffentlich | |
| **ProLabs** | Compatible | Web Scraping | Quote-based | Begrenzt | Legrand-Tochter |
| **Champion ONE** | Compatible | Web Scraping | Quote-based | Begrenzt | Legrand-Tochter |
| **Smartoptics** | Reseller | Web Scraping | Quote-based | Auf Anfrage | Fokus DWDM |
| **NADDOD** | Reseller | Web Scraping | Öffentlich | Öffentlich | Chinesischer Reseller |
| **Solid Optics** | Compatible | Web Scraping | Öffentlich | Begrenzt | |
| **AddOn Networks** | Compatible | Web Scraping | Öffentlich | Begrenzt | |
| **Worldwide Supply** | Refurbished | Web Scraping | Quote-based | Auf Anfrage | Refurbished OEM-Optics |
| **Nexar/Octopart API** | Aggregator | GraphQL API | Ja (317 Distributoren) | Ja | Einzige echte API, aber optische Module evtl. begrenzt |
### 4.2 OEM-Kompatibilitätstools (Wöchentlich)
| Quelle | URL / Tool | Methode |
|--------|-----------|---------|
| **Cisco TMG Matrix** | tmgmatrix.cisco.com | Web Scraping — durchsuchbar nach Device/Transceiver/Speed/Reach |
| **Juniper HCT** | apps.juniper.net/hct | Web Scraping — durchsuchbar nach Produkt/Kategorie |
| **Arista** | arista.com (PDF Guides) | PDF Download → Docling OCR |
| **HPE/Aruba** | support.hpe.com | Web Scraping — QuickSpecs Portal |
| **Dell** | dell.com/support | Web Scraping |
| **Nokia** | Behind Customer Portal | Begrenzt — öffentliche Specs scrapen |
| **Extreme Networks** | extremenetworks.com | Web Scraping |
| **Huawei** | support.huawei.com | Web Scraping — Compatibility Matrix |
### 4.3 Transceiver-Hersteller weltweit (Monatlich)
**Top-Tier (Revenue > $500M):**
| Hersteller | Land | Methode | Fokus |
|-----------|------|---------|-------|
| InnoLight | China | Website + Press Releases | #1 weltweit, $3.3B Revenue, 114% Wachstum |
| Coherent (II-VI/Finisar) | USA | Investor Relations + Website | Kohärente Optik, VCSEL |
| Lumentum | USA/Thailand | Investor Relations + Website | Laser, 3D-Sensing, AI DC |
| Eoptolink | China | Website | #3 weltweit, $1.2B, 175% Wachstum |
| Broadcom (ex-Avago) | USA | Website | Embedded Optics, ASIC |
| Cisco (Acacia) | USA | Website + TMG Matrix | Kohärente Optik nach Acacia-Übernahme |
| Zhongji Innolight | China | Website | Cloud-fokussiert |
**Mid-Tier ($50M - $500M):**
| Hersteller | Land | Methode |
|-----------|------|---------|
| Source Photonics | China | Website |
| Accelink | China | Website |
| HGGenuine | China | Website — einziger vertikal integrierter chinesischer Hersteller |
| Gigalight | China | Website |
| ATOP Technology | China/Malaysia | Website |
| Wolontek | China | Website |
| ETU-Link | China | Website |
| Skylane Optics | Belgien | Website |
| Smartoptics | Norwegen | Website |
| EFFECT Photonics | Niederlande | Website — Silicon Photonics |
| Sicoya/Marvell | Deutschland/USA | Website — Silicon Photonics |
**SE-Asien Fabriken (Vierteljährlich):**
| Land | Fabriken | Output |
|------|----------|--------|
| Thailand | Lumentum (6000+ MA), Fabrinet, InnoLight/Terahop, Eoptolink | >800k units/Monat |
| Vietnam | Coherent (Primary non-China Hub) | >400k units/Monat |
| Malaysia | Coherent (R&D), ATOP (Manufacturing) | >300k units/Monat |
### 4.4 News & Messen (Täglich)
| Quelle | Typ | Methode | Update |
|--------|-----|---------|--------|
| **Lightwave** | Trade Press | RSS + Scraping | Täglich |
| **Light Reading** | Trade Press | RSS + Scraping | Täglich |
| **Fibre Systems** | Trade Press | RSS + Scraping | Täglich |
| **Laser Focus World** | Trade Press | RSS + Scraping | Täglich |
| **optics.org** | Trade Press | RSS + Scraping | Täglich |
| **Data Center Dynamics** | Trade Press | RSS + Scraping | Täglich |
| **SDxCentral** | Trade Press | RSS + Scraping | Täglich |
| **OFC** | Leitmesse | Post-Event Scraping | Jährlich (März) |
| **ECOC** | Leitmesse | Post-Event Scraping | Jährlich (September) |
| **CIOE** | Leitmesse (China) | Post-Event Scraping | Jährlich (September) |
| **Photonics West** | Leitmesse | Post-Event Scraping | Jährlich (Januar) |
| **Google Trends** | Hype Tracking | API | Wöchentlich |
### 4.5 FAQ/Troubleshooting-Quellen (Wöchentlich)
| Quelle | URL | Content |
|--------|-----|---------|
| FS.com Knowledge Center | community.fs.com | Troubleshooting Guides, Best Practices |
| FS.com Transceiver Manual | resource.fs.com (PDF) | 1G/10G/25G/40G/100G Troubleshooting, DDM |
| FluxLight Blog | blog.fluxlight.com | Transceiver Troubleshooting |
| Cisco Support Forums | community.cisco.com | Transceiver-Probleme, Kompatibilität |
| Juniper Knowledge Base | kb.juniper.net | Transceiver Issues |
| Arista Docs | arista.com/docs | Optics Support |
| Wolontek Guides | wolontek.com | OTDR Testing, Power Meter Guides |
| Reddit r/networking | reddit.com/r/networking | Community-Wissen, Erfahrungsberichte |
| NetworkEngineering SE | networkengineering.stackexchange.com | Q&A |
### 4.6 Change Detection Strategie
```
Für JEDEN Scrape-Zyklus:
1. HTTP Request mit If-None-Match / If-Modified-Since Headers
2. Wenn 304 Not Modified → Skip (kein Bandwidth-Kosten)
3. Wenn 200 → Extrahiere Preis/Stock → SHA-256 Hash berechnen
4. Hash vergleichen mit gespeichertem Hash
5. Wenn Hash geändert → Write to TimescaleDB + Trigger Alert
6. Wenn Hash unverändert → Nur last_checked Timestamp updaten
Adaptive Scheduling:
- Produkte mit häufigen Änderungen → 5 Min Intervall
- Produkte stabil seit 7+ Tagen → 30 Min Intervall
- Produkte stabil seit 30+ Tagen → 2 Std Intervall
→ Reduziert DB-Writes um 80-90%
```
---
## 5. HYPE CYCLE ENGINE
### 5.1 Mathematisches Modell: Norton-Bass Multigenerational Diffusion
Das Norton-Bass Model (1987, Management Science) ist die quantitative Basis, weil es sukzessive Generationen (1G → 10G → 40G → 100G → 400G → 800G → 1.6T) nativ modelliert.
**Kern-Gleichung:**
```
S(t) = L / (1 + e^(-k(t - t0)))
Wobei:
- L = Marktpotenzial (Total Addressable Port Shipments)
- k = Wachstumsrate
- t0 = Inflection Point
- S(t) = Kumulative Adoption zum Zeitpunkt t
```
**Bass Diffusion Parameter:**
```
f(t) / [1 - F(t)] = p + q * F(t)
p = Innovationskoeffizient (~0.03 für Netzwerk-Hardware)
q = Imitationskoeffizient (~0.3-0.5)
m = Gesamtmarktpotenzial
```
### 5.2 Phase Classification Engine
**Composite Score Formel:**
```
Phase_Score = 0.30 × Normalize(PortShipment_share)
+ 0.20 × Normalize(ASP_decline_rate)
+ 0.15 × Normalize(Standards_maturity)
+ 0.15 × Normalize(InteropValidation_level)
+ 0.10 × Normalize(VendorCount_trajectory)
+ 0.10 × Normalize(MediaSentiment_score)
```
**Phase-Determination (Pseudocode):**
```typescript
function determinePhase(technology: string): HypeCyclePhase {
const shipmentShare = getPortShipmentShare(technology);
const aspDecline = getASPDeclineRate(technology);
const vendorTrend = getVendorCountTrend(technology);
const standardsStatus = getStandardsStatus(technology);
const mediaHype = getMediaHypeIndex(technology);
const interopLevel = getInteropLevel(technology);
if (shipmentShare < 0.01 && standardsStatus === 'draft')
return 'INNOVATION_TRIGGER';
if (shipmentShare < 0.05 && mediaHype > 70 && vendorTrend === 'increasing')
return 'PEAK_OF_INFLATED_EXPECTATIONS';
if (aspDecline > 30 && vendorTrend === 'decreasing' && mediaHype < 40)
return 'TROUGH_OF_DISILLUSIONMENT';
if (shipmentShare >= 0.05 && shipmentShare <= 0.30
&& aspDecline >= 10 && aspDecline <= 25
&& vendorTrend === 'stable')
return 'SLOPE_OF_ENLIGHTENMENT';
if (shipmentShare > 0.30 && aspDecline < 10)
return 'PLATEAU_OF_PRODUCTIVITY';
return calculateNearestPhase(compositeScore);
}
```
### 5.3 Aktuelle Hype Cycle Positionen (März 2026)
| Technologie | Phase | Evidenz |
|---|---|---|
| 10G SFP+ | Plateau (Declining) | Commodity, sinkende Shipments, wird verdrängt |
| 40G QSFP+ | Late Plateau / Legacy | Kaum noch neue Deployments |
| 100G QSFP28 | Plateau of Productivity | >30% Marktanteil, Commodity-Preise |
| 400G QSFP-DD | Slope → Plateau Übergang | Breite Adoption, ~33% Revenue mit 800G |
| 800G OSFP/QSFP-DD800 | Peak → Slope Übergang | Explosives Wachstum (3x in Q2'25), AI-getrieben |
| 1.6T | Innovation Trigger | Standards in Entwicklung, erste OFC-Demos |
| CPO (Co-Packaged Optics) | Peak of Inflated Expectations | Viel Presse, wenige Deployments |
| LPO (Linear Pluggable Optics) | Slope of Enlightenment | Erste Produktions-Deployments 2025-26 |
| 400ZR Coherent | Plateau of Productivity | Erfolgreichste kohärente Technologie |
| 800ZR Coherent | Innovation Trigger → Peak | OIF IA veröffentlicht Okt 2024 |
---
## 6. MCP SERVER — TOOL DEFINITIONS
Der MCP Server macht die gesamte Plattform für LLMs (EO Global Pulse, FAQ Chat) zugänglich:
```typescript
// Tool Definitions für den MCP Server
tools: [
{
name: "search_transceivers",
description: "Suche Transceiver nach Freitext, Specs oder Kompatibilität",
parameters: {
query: "string — Freitext ('10km für Cisco Nexus')",
form_factor: "optional — SFP+, QSFP28, etc.",
speed_gbps: "optional — 10, 100, 400, 800",
reach_label: "optional — SR, LR, ER, ZR",
fiber_type: "optional — SMF, MMF",
wdm_type: "optional — CWDM, DWDM",
vendor: "optional — Vendor-Filter",
max_results: "optional — Default 10"
}
},
{
name: "check_compatibility",
description: "Prüfe Kompatibilität: Switch + Transceiver",
parameters: {
switch_model: "string — z.B. 'Cisco Nexus 93180YC-FX3'",
transceiver_query: "optional — Transceiver Part Number oder Beschreibung",
speed_gbps: "optional",
reach: "optional"
}
},
{
name: "get_pricing",
description: "Aktuelle Preise + Verfügbarkeit über alle Quellen",
parameters: {
part_number: "string",
vendor: "optional — nur bestimmten Vendor zeigen",
include_history: "optional — Preis-History über Zeit"
}
},
{
name: "compare_prices",
description: "Preisvergleich: Flexoptix vs. Wettbewerber",
parameters: {
transceiver_query: "string",
competitors: "optional — Liste spezifischer Wettbewerber"
}
},
{
name: "get_hype_cycle",
description: "Hype Cycle Status für Technologie/Produkt",
parameters: {
technology: "string — z.B. '800G OSFP', 'CPO', '400ZR'",
include_forecast: "optional — Norton-Bass Prognose"
}
},
{
name: "search_knowledge_base",
description: "Troubleshooting, FAQs, Best Practices durchsuchen",
parameters: {
query: "string — z.B. 'niedrige Rx Power bei QSFP28'",
category: "optional — troubleshooting, faq, best_practice",
severity: "optional — critical, high, medium, low"
}
},
{
name: "search_manuals",
description: "Switch-Handbücher und Konfig-Anleitungen durchsuchen",
parameters: {
query: "string — z.B. 'DWDM Konfiguration Juniper MX'",
vendor: "optional",
doc_type: "optional — manual, config_guide, compatibility_list"
}
},
{
name: "get_templates",
description: "FlexBox Coding Templates oder Switch-Konfig-Templates finden",
parameters: {
type: "flexbox_coding | switch_config",
switch_vendor: "optional",
transceiver_type: "optional",
technology: "optional — CWDM, DWDM, SR, LR"
}
},
{
name: "suggest_alternatives",
description: "Alternative Transceiver vorschlagen (ähnliche Specs, anderer Vendor/Preis)",
parameters: {
part_number: "string",
optimize_for: "optional — price, availability, performance"
}
},
{
name: "get_competitor_stock",
description: "Live-Lagerbestand eines Wettbewerbers",
parameters: {
competitor: "string — z.B. 'FS.com'",
product_query: "optional — Filter",
out_of_stock_only: "optional — nur fehlende Produkte (Sales-Chance!)"
}
},
{
name: "get_market_news",
description: "Aktuelle News und Messe-Berichte",
parameters: {
query: "optional",
event: "optional — OFC, ECOC, CIOE",
days_back: "optional — Default 30"
}
},
{
name: "generate_blog_draft",
description: "Blog-Entwurf aus Marktdaten generieren",
parameters: {
topic: "hype_cycle | price_trend | new_product | comparison | tutorial",
technology: "optional — z.B. '800G'",
target_audience: "sales | technical | customer | seo"
}
}
]
```
---
## 7. ANWENDUNGSFÄLLE
### 7.1 Sales Advisor (Freitext-Suche)
**User:** "Kunde hat Cisco Nexus 93180YC-FX3 und braucht einen Transceiver für 10km Singlemode"
**System:**
1. Vector-Suche in `product_embeddings` → Top-5 passende Transceiver
2. `compatibility` Check → Verifiziert für diesen Switch
3. `price_observations` → Aktueller Preis bei Flexoptix + Wettbewerber
4. `knowledge_base` → Bekannte Issues mit diesem Switch/Transceiver
**Antwort:** "Für den Nexus 93180YC-FX3 empfehle ich den 10G-SFP-LR (10km, SMF, LC). Verifiziert kompatibel. Unser Preis: 39 EUR. FS.com: $12.50. Hinweis: Firmware 10.2(3) oder höher erforderlich."
### 7.2 Hype Cycle Dashboard
- Interaktive Visualisierung aller Technologien auf der Gartner-Kurve
- Norton-Bass Prognose: Wann erreicht 800G den Plateau? → ~2029
- Klickbar: Details pro Technologie (Vendor Count, ASP Trend, Shipment Share)
- Export als Blog-Post oder Präsentation
### 7.3 Competitor Alert System
**Trigger:** FS.com Out-of-Stock bei 100G QSFP28 LR4
**Alert:** "FS.com hat 100G-QSFP28-LR4 nicht auf Lager (seit 2 Stunden). Lead Time: 14 Tage. → Sales-Chance: 47 Kunden haben dieses Produkt in den letzten 90 Tagen bei FS.com gekauft."
### 7.4 Blog-Generierung
**Input:** `generate_blog_draft(topic="hype_cycle", technology="800G")`
**System:**
1. Holt aktuelle Hype Cycle Daten aus `market_metrics`
2. Holt Preis-Trends aus `price_observations`
3. Holt News aus `news_articles`
4. Generiert Draft via Ollama qwen2.5:14b auf .213
5. Speichert in `blog_drafts` zur Review
### 7.5 Template Finder
**User:** "Welchen FlexBox Code brauche ich für einen CWDM 10G auf Juniper EX4300?"
**System:**
1. `templates` WHERE type='flexbox_coding' AND switch_vendor='Juniper' AND technology='CWDM'
2. `compatibility` Check → Verifiziert
3. `knowledge_base` → Best Practices für CWDM auf Juniper
---
## 8. IMPLEMENTIERUNGS-ROADMAP
### Phase 0: Foundation (Woche 1-2)
- [ ] PostgreSQL 17 + TimescaleDB auf Erik (.82) installieren
- [ ] Qdrant Docker Container auf Erik starten
- [ ] Schema deployen (alle Core Tables + Hypertables)
- [ ] Bestehende npm DB (159 Transceiver) als Seed-Daten importieren
- [ ] Basis-API (Node.js/Express/PM2) mit CRUD-Endpoints
- [ ] Cloudflare Tunnel einrichten (transceiver-db.context-x.org)
### Phase 1: Data Ingestion (Woche 3-5)
- [ ] Crawlee Scraper Framework auf Erik einrichten
- [ ] Erster Scraper: FS.com (Preise + Stock + Produkte)
- [ ] Scraper 2-5: Optcore, QSFPTEK, 10Gtek, Edgeium
- [ ] Cisco TMG Matrix Scraper
- [ ] Juniper HCT Scraper
- [ ] Change Detection mit Content Hashing
- [ ] pg-boss Job Scheduler konfigurieren
- [ ] Adaptive Scheduling implementieren
### Phase 2: Intelligence Layer (Woche 6-8)
- [ ] OCR Pipeline: Docling → Chunk → Embed → Qdrant
- [ ] Erste Transceiver-Datasheets verarbeiten (Top 50)
- [ ] Erste Switch-Handbücher verarbeiten (Cisco, Juniper, Arista)
- [ ] Vector Search Endpoints mit Payload Filtering
- [ ] Full-Text Search via PostgreSQL tsvector
- [ ] Knowledge Base: FAQ-Scraping starten (FS.com, Cisco, FluxLight)
- [ ] MCP Server (Basis-Tools)
### Phase 3: Hype Cycle Engine (Woche 9-10)
- [ ] Norton-Bass Model implementieren
- [ ] Historische Daten laden (Port Shipments, ASP, Vendor Count)
- [ ] Phase Classification Engine
- [ ] Media Sentiment Tracking (Google Trends + News)
- [ ] Hype Cycle Visualisierung
- [ ] Erste Prognosen generieren
### Phase 4: Scale Crawlers (Woche 11-14)
- [ ] Alle 60+ identifizierten Quellen anbinden
- [ ] Chinesische Hersteller-Websites (InnoLight, Eoptolink, HGGenuine...)
- [ ] SE-Asien Factory Monitoring
- [ ] News Aggregation (Lightwave, Light Reading, optics.org...)
- [ ] Messe-Coverage (OFC, ECOC Archive)
- [ ] Proxy-Rotation einrichten (Bright Data / Geonode)
- [ ] Alert System implementieren
### Phase 5: Customer-Facing (Woche 15-18)
- [ ] Cloudflare Workers API Gateway
- [ ] FAQ Chatbot (RAG über Knowledge Base)
- [ ] EO Global Pulse Integration
- [ ] Sales Advisor Tool
- [ ] Template Finder
- [ ] Price Comparison Dashboard
- [ ] Blog Draft Generator
- [ ] Multi-Tenant Access Control
### Phase 6: Domination (Woche 19+)
- [ ] Alle 400+ Switch-Hersteller (Flexoptix Vendor Page) als Daten
- [ ] Alle Datasheets aller Transceiver verarbeitet
- [ ] Alle Switch-Handbücher digitalisiert
- [ ] Vollständige Kompatibilitätsmatrix
- [ ] Automatische Blog-Veröffentlichung
- [ ] API für externe Partner
- [ ] Mobile App (EO Global Pulse)
---
## 9. KRITISCHE ERFOLGSFAKTOREN
### 9.1 Rechtliche Aspekte Scraping
- `robots.txt` immer respektieren
- Rate-Limiting: Max 1-2 Requests/Sekunde pro Domain
- Legitimer User-Agent
- Kein Scraping hinter Authentication (ohne Account)
- Aggressiv cachen — keine unveränderten Seiten erneut abfragen
- Offizielle APIs bevorzugen wo verfügbar (Nexar/Octopart, Mouser, DigiKey)
### 9.2 Datenqualität
- Jeder Datenpunkt braucht `source_url` und `last_verified`
- Automatische Anomalie-Detection bei Preissprüngen (>50% Änderung → Review)
- Community-Verifizierung für Kompatibilität
- Regelmäßige Stichproben durch Flexoptix-Team
### 9.3 Markt-Chance
**Es gibt KEINEN Octopart/FindChips-Äquivalent für optische Transceiver-Module.**
Kein Preisvergleichs-Aggregator. Keine öffentliche API die mehrere Optical-Transceiver-Vendor abdeckt.
**TIP könnte dieses Vakuum füllen.**
---
## 10. BESTEHENDE DATEN-INTEGRATION
Das aktuelle npm Package `transceiver-db` (159 Transceiver, 39 Standards, 16 Form Factors) wird als **Seed-Daten** importiert:
```typescript
// Migration: npm DB → PostgreSQL
import { getAllTransceivers, getAllStandards } from 'transceiver-db';
const transceivers = getAllTransceivers();
const standards = getAllStandards();
// Insert into PostgreSQL with vendor_id mapping
for (const t of transceivers) {
await db.query(`
INSERT INTO transceivers (part_number, standard, form_factor, speed_gbps, ...)
VALUES ($1, $2, $3, $4, ...)
`, [t.id, t.standard, t.formFactor, t.speedGbps, ...]);
}
```
Das npm Package bleibt als **Open-Source Lightweight-Version** auf GitHub bestehen.
TIP wird die **Enterprise Intelligence Layer** darüber.
---
## ZUSAMMENFASSUNG
| Dimension | Scope |
|-----------|-------|
| **Transceiver** | Alle Generationen (1G SFP → 1.6T), CWDM, DWDM, Coherent, AOC, DAC, Breakout |
| **Switches** | 400+ Hersteller, alle Serien, Specs, Lifecycle, ASIC Info |
| **Kompatibilität** | Switch ↔ Transceiver Matrix, verifiziert + Community |
| **Preise** | Echtzeit von 60+ Quellen weltweit |
| **Stock** | Live-Lagerbestände aller Wettbewerber |
| **Handbücher** | Auto-Crawl, OCR, MCP-durchsuchbar |
| **Datasheets** | Alle technischen Specs aller Transceiver |
| **FAQs** | Gescannt von allen Vendor-Portalen |
| **Templates** | FlexBox Coding + Switch-Konfiguration |
| **Hype Cycle** | Norton-Bass basiert, automatisch aktualisiert |
| **News** | OFC, ECOC, CIOE, Photonics West, Trade Press |
| **Fabriken** | Alle Fertigungsstätten weltweit |
| **Blog** | Auto-generiert aus Marktdaten |
| **Alerts** | Out-of-Stock, Preisänderungen, neue Produkte |
**Es gibt nichts Vergleichbares auf dem Markt. Das wird das Referenzwerk der Optical Networking Industrie.**