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
1108 lines
52 KiB
Markdown
1108 lines
52 KiB
Markdown
# 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.**
|