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

52 KiB
Raw Blame History

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)

-- ============================================================
-- 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)

-- ============================================================
-- 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):

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:

// 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:

// 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.