GunSpec
Praxis

Was passt worauf

Kompatibilität wird aus Montageschnittstellen berechnet, nie aus Namen. Deshalb halten die Antworten, und deshalb hält eine Integration über Namen nicht.

Das zu verstehen entscheidet, ob man den Endpunkten nur folgt oder ihnen traut. Die Kompatibilitätsreferenz dokumentiert die Aufrufe; hier steht, was sie bedeuten.

  • Eine Waffe stellt an benannten Positionen Schnittstellen bereit (Mündungsgewinde, Schiene, Schaftaufnahme, Magazinschacht), aus einem festen Vokabular mit Präfix, etwa thread:1/2x28 oder mag:stanag.
  • Eine Waffe erbt: eigene Zeilen gewinnen, dann die des Elternmodells, dann die ihrer Plattformen. Eine Zeile auf einem Muster erreicht jedes darauf gebaute Gewehr.
  • Ein Anbauteil deklariert, was es verlangt (innerhalb einer Gruppe eines davon, über Gruppen hinweg alle; nichts verlangt heißt universell) und was es nach der Montage bereitstellt. So erweitern Adapter, Schienenstücke und Optikplatten eine Waffe.
  • Eine Passung ist damit berechnet und trägt Konfidenz und Quelle. Nichts wird über Produktnamen zugeordnet, und "passt auf AR-15" in einem Marketingtext sagt dieser Engine nichts.

Erst Positionen, dann Teile. Eine umgekehrt gebaute UI muss sich selbst ausdenken, welche Plätze es gibt.

  1. Fragen, was die Waffe bereitstelltDer Schnittstellen-Endpunkt liefert Positionen und Standards, also die Form Ihrer Slot-UI.
  2. Passende Teile je Kategorie holenOptik, Mündung, Magazin und Schaft sind verschiedene Kaufentscheidungen; holen Sie sie, wenn der Leser sie öffnet.
  3. Nach Konfidenz filternSetzen Sie ein Minimum, damit abgeleitete Zeilen nicht wie geprüfte wirken, und sagen Sie in der UI, was der Rest ist.
  4. Angebote anhängenAuf einer Kaufseite die Angebote zusammen mit den Teilen anfordern statt eine Anfrage je Zeile.
what-fits.ts
javascript
// What goes on this rifle, by mount position.// Ask for the positions first when you are building a UI: the// answer is a list of what the firearm actually exposes, so the// slots you render come from the record rather than from a guess.const { data: interfaces } = await gunspec.firearms.getInterfaces('ar-15') // Then the parts, filtered to the ones worth showing. A fit// computed through an inferred row is capped at that row's// confidence, so a minimum drops the weak evidence.const { data } = await gunspec.firearms.getAttachments('ar-15', {  category: 'optic',  min_confidence: 0.7,})

Sie ist Evidenz über die Passung, keine Aussage über die Qualität des Teils. Datenqualität deckt die Katalogseite ab; hier zählen die Regeln an der Aufrufstelle.

  • Eine über eine abgeleitete Schnittstelle berechnete Passung ist auf deren Konfidenz gedeckelt. Das schwächste Glied bestimmt die Zahl.
  • Am schwächsten sind Konventionszeilen: ein als "mit Gewinde" geführtes Gewehr ohne genannten Standard bekommt das branchenübliche Gewinde für Patrone oder Muster, etwa 0,5 bis 0,6. Nie als geprüft darstellen.
  • min_confidence blendet sie ganz aus. Wählen Sie eine Untergrenze und halten Sie sie durch: eine gemischte Liste ohne Kennzeichnung ist schlechter als eine kurze.
  • Jede Zeile trägt eine Quelle. Wer eine Passung zeigt, sollte sagen können, woher sie kommt.

Adapter erweitern, was passt. Diese vier sind kein Adapterfall, weil ein Irrtum hier ein Sicherheitsfakt ist und kein Einkaufsärgernis.

GrenzeRegel
Kaliber und LaufdurchmesserUnabhängig von jeder Schnittstellenzeile geprüft. Ein unter der Patrone freigegebener Schalldämpfer erscheint nie als Passung, was das Gewinde auch sagt.
GewindeWerden in der Engine nie durch einen Adapter überbrückt. Eine Steigung passt oder passt nicht.
MagazinschächteEbenso. Ein Schacht ist ein Schacht; eine Umrüstung ist ein eigenes katalogisiertes Teil mit eigenen Zeilen.
MindestlauflängeEine Freigabe mit Mindestlauflänge wird gegen die Waffe geprüft, nicht angenommen.

Eine Teileseite braucht, worauf es passt, und wo man es kauft. Händler sind öffentlich wie die Datensätze selbst, und die Händlerreferenz deckt die Shop-Seite ab. Drei Filter laufen automatisch: ein nicht freigegebener Händler erscheint nie, ein seit dreißig Tagen nicht aktualisiertes Angebot wird ausgeblendet statt veraltet gezeigt, und region blendet Händler aus, die nicht dorthin liefern. Der letzte Filter ist eine Anzeigehilfe, nie eine Aussage über die Rechtslage.

reverse-fit.ts
javascript
// The other direction: this part is in the basket, what takes it.const { data } = await gunspec.attachments.getFirearms('surefire-warcomp-556') // And the shop side of the same page. Sellers who do not ship to// this reader are hidden, and a listing nobody has refreshed in// thirty days is hidden rather than shown stale.const { data: offers } = await gunspec.attachments.getOffers('surefire-warcomp-556', { region: 'US' })

Den Anbauteil-Katalog zu durchblättern ist so offen wie der Waffenkatalog. Passungen zu berechnen ist Studio: Schnittstellen und Anbauteile einer Waffe, die Rückwärtssuchen, die Plattformen und fits= auf der Anbauteil-Liste, was dieselbe Berechnung im Gewand eines Query-Parameters ist. Endpunktzugriff nach Tarif listet jede Schranke.