Så bygger du en webbapp för leverantörspoäng och recensioner
Lär dig hur du planerar, designar och bygger en webbapp för leverantörsscorecards och recensioner, med datamodeller, arbetsflöden, behörigheter och rapporteringstips.

Innan du skissar skärmar eller väljer databas: bli klar över vad appen är till för, vem som kommer att lita på den och vad som räknas som “bra”. Leverantörsbedömningsappar misslyckas oftast när de försöker tillfredsställa alla på en gång — eller när de inte kan svara på enkla frågor som “Vilken leverantör granskar vi egentligen?”
Mål, användare och omfattning
Vem använder den (och vad de behöver)
Börja med att namnge dina primära användargrupper och deras dagliga beslut:
- Procurement behöver ett konsekvent leverantörsscorecard, jämförelsevyer över leverantörer och ett försvarbart revisionsspår för sourcingbeslut.
- Finance bryr sig om kostnadsavvikelser, efterlevnad av betalningsvillkor och riskindikatorer som påverkar prognoser.
- Operations vill ha snabb incidenthantering: spåra händelser, dokumentera korrigerande åtgärder och se om prestationen förbättras.
- Leverantörer (valfri portal) vill se feedback, kunna svara och förstå hur poäng räknas ut.
Ett användbart knep: välj en “kärnanvändare” (ofta procurement) och designa första releasen kring deras arbetsflöde. Lägg till nästa grupp först när du kan förklara vilken ny kapacitet det låser upp.
Viktiga utfall du siktar mot
Skriv utfall som mätbara förändringar, inte som funktioner. Vanliga utfall inkluderar:
- Bättre leverantörsbeslut (t.ex. preferenslistor baserade på bevis, inte anekdoter)
- Snabbare åtgärd av problem (tydligt ägarskap, deadlines och uppföljning)
- Mer konsekvent utvärdering (mindre variation mellan granskare eller platser)
Dessa utfall kommer senare styra dina KPI-val och rapporteringsval.
Definiera vad “leverantör” betyder i ditt system
“Leverantör” kan betyda olika saker beroende på organisationsstruktur och avtal. Bestäm tidigt om en leverantör är:
- en juridisk enhet (moderbolag)
- en plats/anläggning (bra när kvalitet varierar per fabrik eller region)
- en tjänstelinje (t.ex. logistik vs. förpackning från samma leverantör)
Ditt val påverkar allt: poängaggregeringar, behörigheter och om en dålig anläggning ska påverka hela relationen.
Välj poängsättningsmetod
Det finns tre vanliga mönster:
- Viktade KPI:er: numeriska indata (leverans i tid %, defektgrad) multiplicerade med vikter. Utmärkt för transparens och automation.
- Rubriker: granskare väljer nivåer (t.ex. “Utmärkt/Good/Acceptabel/Dålig”) med vägledande text. Bra när data är kvalitativ.
- Hybrid: KPI:er för mätbara områden + rubrik för samarbete, respons eller strategisk passning.
Gör metoden tillräckligt begriplig så att en leverantör (och en intern revisor) kan följa den.
Definiera framgångsmått för appen
Välj några app-nivå mått för att validera adoption och värde:
- Adoption: % aktiva leverantörer med minst en recension senaste kvartalet
- Granskningens fullständighet: obligatoriska fält ifyllda, bevis bifogat, KPI:er angivna
- Cykeltid: tid från granskning öppnad → godkänd → delad med leverantör (om tillämpligt)
Med mål, användare och omfattning definierade får du en stabil grund för poängmodell och arbetsflödesdesign.
Poängmodell och KPI-design
En leverantörspoängapp lever eller dör på om poängen matchar människors upplevda verklighet. Innan du bygger skärmar, skriv ner exakta KPI:er, skalor och regler så procurement, operations och finance tolkar resultaten lika.
Välj ett litet, försvarbart KPI-set
Börja med en kärnuppsättning som de flesta team känner igen:
- Leverans i tid (t.ex. % leveranser inom avtalat fönster)
- Kvalitet (defektrate, returgrad eller inspektionspass %)
- SLA-efterlevnad (ärenden lösta inom mål, drifttid om relevant)
- Kostnadsavvikelse (faktura vs PO-avvikelse, oplanerade avgifter)
- Responsivitet (tid till första svar, tid till lösning för eskalationer)
Håll definitioner mätbara och knyt varje KPI till en datakälla eller en granskningsfråga.
Definiera skalor som folk kan förklara
Välj antingen 1–5 (enkelt för människor) eller 0–100 (mer granularitet), och definiera vad varje nivå betyder. Exempel: “On-time delivery: 5 = ≥ 98%, 3 = 92–95%, 1 = < 85%.” Tydliga trösklar minskar argument och gör granskningar jämförbara över team.
Vikter, saknade data och rättviseregler
Tilldela kategorivikter (t.ex. Delivery 30%, Quality 30%, SLA 20%, Cost 10%, Responsiveness 10%) och dokumentera när vikter ändras (olika kontraktstyper kan prioritera olika utfall).
Bestäm hur du hanterar saknade data:
- Exkludera KPI:n från nämnaren för perioden, eller
- Applicera ett neutralt standardvärde, eller
- Markera poängen som “otillräcklig data” och blockera rankning.
Vad du än väljer, använd det konsekvent och visa det i drill-down-vyer så team inte misstar “saknas” för “bra”.
Flera scorecards per leverantör
Stöd mer än ett scorecard per leverantör så team kan jämföra prestation per kontrakt, region eller tidsperiod. Det undviker att problem som är isolerade till en site eller projekt medelvärdesborstas bort.
Tvister och korrigeringar
Dokumentera hur tvister påverkar poäng: om en metrik kan korrigeras retroaktivt, om en tvist tillfälligt flaggar poängen, och vilken version som är “officiell”. En enkel regel som “poäng räknas om när en korrigering godkänns, med en not som förklarar ändringen” förhindrar förvirring senare.
Datamodell och grundläggande schema
En tydlig datamodell är vad som håller poängsättningen rättvis, granskningar spårbara och rapporter trovärdiga. Du vill kunna svara på enkla frågor pålitligt—”Varför fick den här leverantören 72 i månaden?” och “Vad ändrades sedan förra kvartalet?”—utan manuell efterhandskonstruktion.
Kärnobjekt (vad du lagrar)
Som minimum definiera dessa entiteter:
- Vendor: leverantörsprofil (namn, status, kategori, kontakter)
- Contract: avtalsdetaljer och giltighetsperioder
- Order/Invoice (eller en enhetlig Transaction): operativa fakta som driver KPI:er
- KPI Metric: definitioner som on-time delivery %, defektrate, svarstid
- Score: beräknat resultat för en leverantör i en period (övergripande och/eller per metrik)
- Review: kvalitativ feedback, betyg och narrativt bevis
- Attachment: filer kopplade till granskningar eller tvister (e-post, foton, PDF)
Denna uppsättning stödjer både “hårda” mätbara prestationer och “mjuka” användarfeedback, som ofta kräver olika arbetsflöden.
Relationer (hur data kopplas ihop)
Modellera relationerna explicit:
- Vendor → Contracts: en leverantör kan ha flera kontrakt över tid.
- Vendor → Orders/Invoices: transaktioner är ofta många-till-en mot leverantör.
- Score → Metric: poäng bör spåras tillbaka till metrikdefinition och kalkylversion.
- Review → Period: recensioner behöver en tydlig tidsbucket (månad/kvartal) så de inte flyter utan kontext.
Ett vanligt angreppssätt är:
scorecard_period(t.ex. 2025-10)vendor_period_score(övergripande)vendor_period_metric_score(per metrik, inkluderar numerator/denominator om tillämpligt)
Fält du blir glad att ha senare
Lägg till konsekventa fält över de flesta tabeller:
- Tidsstämplar:
created_at,updated_at, och för godkännandensubmitted_at,approved_at - Författare och aktör:
created_by_user_id, plusapproved_by_user_iddär relevant - Källsystem:
source_systemoch externa identifierare somerp_vendor_id,crm_account_id,erp_invoice_id - Confidence/quality: en
confidence-poäng ellerdata_quality_flagför att markera ofullständiga feeds eller uppskattningar
Dessa möjliggör revisionsspår, tvistlösning och trovärdiga upphandlingsanalyser.
Retention, versionering och “vad ändrades?”
Poäng ändras eftersom data kommer sent, formler utvecklas eller någon korrigerar mappningar. Istället för att skriva över historik, spara versioner:
- Behåll en score version (eller
calculation_run_id) på varje score-rad. - Registrera orsakskoder för omräkning (sen faktura, KPI-definition uppdaterad, manuell korrigering).
- Överväg en append-only audit trail för viktiga tabeller (scores, reviews, approvals) så du kan visa vem som ändrade vad och när.
För retention, definiera hur länge du sparar råa transaktioner vs. härledda poäng. Ofta behåller man härledda poäng längre (mindre lagring, högt rapporteringsvärde) och behåller råa ERP-extrakt kortare.
Identifieringsstrategi för ERP/CRM-matchning
Behandla externa ID:n som förstaklassfält, inte anteckningar:
- Spara både extern ID och systemnamn (ERP_A vs ERP_B).
- Tvinga unikhet per källsystem (t.ex.
unique(source_system, external_id)). - Lägg till lätta mappningstabeller när leverantörer slås samman/delas så historiska poäng förblir korrekta.
Detta gör senare integrationer, KPI-spårning, granskningsmoderering och auditabilitet mycket enklare att implementera och förklara.
Datainhämtning och integrationer
En leverantörspoängapp är bara så bra som inputen som matar den. Planera för flera inmatningsvägar från dag ett, även om du startar med en. De flesta team behöver en mix av manuell inmatning för kantfall, bulkuppladdningar för historik och API-sync för löpande uppdateringar.
Vanliga datakällor
Manuell inmatning är användbar för små leverantörer, engångshändelser eller när teamet behöver logga en granskning direkt.
CSV-upload hjälper dig bootstrappa systemet med historisk prestation, fakturor, ärenden eller leveransposter. Gör uppladdningar förutsägbara: publicera en mall och versionera den så ändringar inte tyst bryter importer.
API-sync kopplar vanligtvis till ERP/procurement-verktyg (PO:s, mottagningar, fakturor) och servicesystem som helpdeskar (ärenden, SLA-brott). Föredra inkrementell sync (sedan senaste cursor) för att undvika att hämta allt varje gång.
Validering som förhindrar skräp in
Sätt tydliga valideringsregler vid import:
- Obligatoriska fält (vendor ID, datum, metriknamn/värde)
- Numeriska intervall (t.ex. 0–100 poäng, icke-negativa kvantiteter)
- Duplicatdetektering (samma vendor + metrik + tidsperiod + källpost ID)
Spara ogiltiga rader med felmeddelanden så administratörer kan rätta och ladda upp igen utan att förlora kontext.
Korrigeringar, backfills och omräkningsloggar
Importer kommer vara fel ibland. Stöd re-runs (idempotenta via käll-ID:n), backfills (historiska perioder) och omräkningsloggar som registrerar vad som ändrades, när och varför. Detta är kritiskt för förtroende när en leverantörs poäng skiftar.
Schemaläggning och transparens
De flesta team klarar sig med dagliga/veckovisa importer för finance och leveransmått, plus nära realtids-händelser för kritiska incidenter.
Exponera en administratörsvänlig import-sida (t.ex. /admin/imports) som visar status, radantal, varningar och exakta fel—så problem syns och kan åtgärdas utan utvecklarhjälp.
Roller, behörigheter och godkännandearbetsflöde
Tydliga roller och ett förutsägbart godkännande-spår förhindrar “scorecard-kaos”: motstridiga ändringar, överraskande ratingändringar och osäkerhet om vad en leverantör kan se. Definiera åtkomsträttigheter tidigt och upprätthåll dem konsekvent i UI och API.
Rolltyper (och vad de gör)
Ett praktiskt startset av roller:
- Admin: hanterar organisationsinställningar, rolltilldelningar, scoringmallar och modereringsregler.
- Internal Reviewer: lämnar in recensioner, bevis och utkast till poänguppdateringar.
- Approver: validerar känsliga åtgärder (publicera recensioner, låsa perioder, godkänna poängändringar).
- Vendor User: ser sitt eget scorecard, svarar på recensioner och laddar upp förtydliganden (om tillåtet).
- Read-only: kan se dashboards och leverantörsprofiler men inte redigera.
Behörigheter som mappar till verkliga åtgärder
Undvik vaga behörigheter som “kan hantera leverantörer.” Styr specifika kapaciteter:
- Visning: vem kan se recensioner, granskarens namn, bilagor och historiska poäng.
- Redigering: vem kan skapa/redigera utkast, ändra KPI-värden eller justera vikter.
- Publicering: vem kan flytta innehåll från utkast till synligt.
- Export: vem kan ladda ner rapporter (CSV/PDF) och i vilken omfattning (en leverantör vs alla).
Överväg att dela upp “export” i “exportera egna leverantörer” vs “exportera alla”, särskilt för procurement-analys.
Regler för leverantörssynlighet
Leverantörsanvändare bör vanligtvis se endast sin egen data: sina poäng, publicerade recensioner och status för öppna åtgärder. Begränsa information om granskare (t.ex. visa avdelning eller roll istället för fullt namn) för att minska friktion. Om du tillåter leverantörssvar, håll dem trådade och tydligt märkta som leverantörens inlägg.
Godkännandeflöden för förtroende och konsekvens
Behandla recensioner och poängändringar som förslag tills de godkänns:
- Internal Reviewer lämnar in ett utkast till recension/poänguppdatering.
- Approver granskar bevis, kontrollerar policy och godkänner, begär ändringar eller avvisar.
- Endast godkända poster påverkar den “aktuella” poängen och blir synliga för Vendor Users.
Tidsbundna arbetsflöden hjälper: t.ex. kan poängändringar kräva godkännande endast under månads-/kvartalsslut.
Revisionsspårskrav
För efterlevnad och ansvar, logga varje meningsfull händelse: vem gjorde vad, när, varifrån och vad som ändrades (före/efter-värden). Revisionsposter bör täcka behörighetsändringar, redigeringar av recensioner, godkännanden, publiceringar, exporter och borttagningar. Gör revisionsspåret sökbart, exportbart för revisioner och skydda det från manipulation (append-only eller immutabla loggar).
UX och kärnskärmar
En leverantörspoängapp lyckas eller misslyckas beroende på om upptagna användare kan hitta rätt leverantör snabbt, förstå poängen vid en blick och lämna trovärdig feedback utan hinder. Börja med ett litet antal “hembase”-skärmar och gör varje siffra förklarbar.
1) Leverantörslista (command center)
Här börjar de flesta sessioner. Håll layouten enkel: leverantörsnamn, kategori, region, aktuell poängband, status och senaste aktivitet.
Filtrering och sök bör kännas omedelbar och förutsägbar:
- Kategori, region, status (aktiv/hold/blocked)
- Datumintervall (t.ex. senaste granskning, senaste leveransincident)
- Poängband (A/B/C eller 0–100 intervall)
Spara vanliga vyer (t.ex. “Kritiska leverantörer i EMEA under 70”) så procurement-team slipper bygga filter dagligen.
2) Leverantörsprofil (en sida, många svar)
Profilen bör sammanfatta “vem de är” och “hur de presterar” utan att tvinga användare in flikar för tidigt. Placera kontaktuppgifter och kontraktsmetadata intill en tydlig poängsummering.
3) Scorecard med drill-down “varför”
Visa totalpoängen och KPI-uppdelningen (kvalitet, leverans, kostnad, efterlevnad). Varje KPI behöver en synlig källa: underliggande recensioner, incidenter eller mätvärden som genererade den.
En bra pattern är:
- KPI → formel/vikt → bidragande poster → bevis (kommentarer, bilagor, tidsstämplar)
4) Recensioner och incidenter (snabb inmatning, stark kontext)
Gör granskningsinmatning mobilvänlig: stora touchytor, korta fält och snabb kommentering. Koppla alltid recensioner till en tidsram och (om relevant) en inköpsorder, site eller projekt så feedback förblir åtgärdsbar.
5) Rapporter (beslutsfärdiga)
Rapporter ska svara på vanliga frågor: “Vilka leverantörer är på nedåtgående trend?” och “Vad ändrades denna månad?” Använd lättlästa diagram, tydliga etiketter och tangentbordsnavigering för tillgänglighet.
Recensioner, kommentarer och moderering
Recensioner är där en leverantörspoängapp blir verkligt användbar: de fångar kontext, bevis och "varför" bakom siffrorna. För att hålla dem konsekventa (och försvarbara), behandla recensioner som strukturerade poster först och fri text efteråt.
Recensionstyper att stödja
Olika tillfällen kräver olika granskningsmallar. Ett enkelt startset:
- Periodiska recensioner (månatligt/kvartalsvis): regelbunden uppföljning av prestation och trend.
- Incidentbaserade recensioner: kopplade till sen leverans, kvalitetsfel eller regelbrott.
- Projektavslutsrecensioner: slutlig sammanfattning med lärdomar.
Varje typ kan dela gemensamma fält men tillåta typ-specifika frågor så team inte tvingar in en incident i en kvartalsform.
Strukturerade fält: gör recensioner sökbara
Utöver narrativ kommentar, inkludera strukturerade inmatningar som möjliggör filtrering och rapportering:
- Taggar och kategorier (t.ex. Logistik, Kvalitet, Kommunikation)
- Styrkor och brister (separata fält för att undvika ensidig feedback)
- Åtgärdsposter med ägare, förfallodatum och status
Denna struktur förvandlar “feedback” till spårbart arbete, inte bara text i en ruta.
Hantering av bevis (utan att göra det jobbigt)
Låt granskare bifoga bevis i samma vy som de skriver recensionen:
- Filbilagor (foton, PDF)
- Linkar till delade dokument
- Referenser till ärenden / PO:s / order (helst väljbara från en lista)
Spara metadata (vem laddade upp, när, vad det relaterar till) så revisioner inte blir en skattjakt.
Moderering och redigeringshistorik
Även interna verktyg behöver moderering. Lägg till:
- Grundläggande svordoms-/spamkontroller
- Eskalationsregler för allvarliga påståenden (t.ex. säkerhet, bedrägeri)
- En redigeringshistorik som registrerar vad som ändrats och av vem (inklusive redaktioner)
Undvik tysta ändringar—transparens skyddar både granskare och leverantörer.
Notiser, påminnelser och svar-SLA:er
Definiera notisregler i förväg:
- Informera leverantörer när en recension publiceras (eller när svar begärs)
- Skicka interna påminnelser för försenade åtgärdsposter
- Sätt en SLA för svar (t.ex. 5 arbetsdagar) med eskalering efter missade deadlines
Görs rätt blir recensioner ett slutsåtet feedback-flöde istället för ett engångsklagomål.
Arkitektur och tech-stack-val
Ditt första arkitekturval handlar mindre om "senaste tech" och mer om hur snabbt du kan leverera en stabil leverantörspoäng- och recensionsplattform utan stort underhållsberg.
Om målet är att röra sig snabbt, överväg att prototypa arbetsflödet (leverantörer → scorecards → recensioner → godkännanden → rapporter) på en plattform som kan generera en fungerande app från en tydlig spec. Till exempel är Koder.ai en vibe-coding-plattform där du kan bygga web, backend och mobilappar via en chattgränssnitt och sedan exportera källkoden när du är redo. Det är ett praktiskt sätt att validera poängmodellen och roller/behörigheter innan du investerar i specialbyggd UI och integrationer.
Monolit vs modulära tjänster (håll det enkelt)
För de flesta team är en modulär monolit sweet spot: en deploybar app, organiserad i tydliga moduler (Vendors, Scorecards, Reviews, Reporting, Admin). Du får enkel utveckling och debugging samt enklare säkerhet och deployment.
Gå mot separerade tjänster endast när starka skäl finns—t.ex. tung rapportering, flera produktteam eller strikta isoleringskrav. En vanlig utvecklingsväg är: monolit nu, dela ut “imports/reporting” senare om det behövs.
API-design (REST som speglar verkligt arbete)
Ett REST-API är oftast enklast att resonera kring och integrera med procurement-verktyg. Sikta på förutsägbara resurser och ett fåtal "task"-endpoints där systemet gör verkligt arbete.
Exempel:
/api/vendors(create/update vendors, status)/api/vendors/{id}/scores(current score, historical breakdown)/api/vendors/{id}/reviews(list/create reviews)/api/reviews/{id}(update, moderate actions)/api/exports(request exports; returns job id)
Håll tunga operationer (exporter, bulk-omräkningar) asynkrona så UI förblir responsivt.
Bakgrundsjobb (imports, omräkningar, notiser)
Använd en jobbk kö för:
- import av leverantörsdata (CSV/SFTP/API)
- omräkning av poäng när KPI:er, vikter eller recensioner ändras
- skicka notiser (granskning begärd, poäng ändrad, godkännande behövs)
Detta hjälper också att återförsöka fel utan manuell brandkårsinsats.
Caching för dashboards och tunga rapporter
Dashboards kan vara dyra. Cachea aggregerade mått (per datumintervall, kategori, affärsenhet) och invalidra vid meningsfulla förändringar, eller uppdatera enligt schema. Detta håller "öppna dashboard" snabbt samtidigt som drill-down-data förblir korrekt.
Dokumentation (för utvecklare och admins)
Skriv API-dokumentation (OpenAPI/Swagger funkar) och underhåll en intern, adminvänlig guide i ett /blog-liknande format—t.ex. “Hur poängsättning fungerar”, “Hur hantera tvistade recensioner”, “Hur köra exporter”—och länka från appen till /blog så det är lätt att hitta och uppdatera.
Vanliga frågor
How do I define the scope so the vendor scoring app doesn’t try to satisfy everyone at once?
Börja med att namnge en "kärnanvändare" och optimera första releasen för deras arbetsflöde (ofta procurement). Skriv ner:
- Beslutet de fattar (t.ex. förnya eller ersätta en leverantör)
- De ingångar de litar på (KPI:er, incidenter, fakturor, recensioner)
- De utdata de behöver (scorecard, jämförelsevy, revisionsspår)
Lägg till funktioner för finance/operations endast när du tydligt kan förklara vilket nytt beslut de möjliggör.
What should “vendor” mean in the system—company, site, or service line?
Välj en definition tidigt och bygg din datamodell runt den:
- Juridisk enhet: bäst för kontraktsnivåbeslut och konsoliderad rapportering.
- Site/plats: bäst när kvalitet eller leverans varierar per anläggning/region.
- Tjänstelinje: bäst när samma leverantör levererar olika tjänster med olika utfall.
Om du är osäker, modellera en leverantör som en parent med child "vendor units" (sites/tjänstelinjer) så du kan rulla upp eller borra ner senare.
Should we use weighted KPIs, rubric scoring, or a hybrid model?
Använd Weighted KPIs när du har pålitliga operativa data och vill ha automation och transparens. Använd Rubrics när prestation är mest kvalitativ eller varierar mellan team.
Ett praktiskt standardval är Hybrid:
- KPI:er för leverans/kvalitet/kostnad/SLA
- Rubrikfrågor för samarbete, responsivitet och strategisk passning
Oavsett metod, gör den förklarbar så att både revisorer och leverantörer kan följa den.
What’s a good “starter” KPI set for vendor performance scoring?
Börja med en liten uppsättning som de flesta intressenter känner igen och kan mäta konsekvent:
- Leveranser i tid
- Kvalitet (defekt/retur/inspektionspassfrekvens)
- SLA-efterlevnad (ärenden inom mål)
- Kostnadsavvikelse (faktura vs PO)
- Responsivitet (tid till första svar/lösning)
Dokumentera definition, skala och datakälla för varje KPI innan du bygger UI eller rapporter.
How do we design rating scales that different teams interpret the same way?
Välj en skala som folk kan beskriva muntligt (vanligtvis 1–5 eller 0–100) och definiera trösklar i klartext.
Exempel:
- On-time delivery: 5 = ≥ 98%, 3 = 92–95%, 1 = < 85%
Undvik "känslobaserade" siffror. Tydliga trösklar minskar oenighet och gör jämförelser rättvisare mellan team och platser.
How should we handle missing KPI data without making scoring unfair?
Välj och dokumentera en policy per KPI (tillämpa konsekvent):
- Exkludera från nämnaren för perioden (vanligt när data saknas)
- Neutral standard (använd med försiktighet—kan dölja verkliga luckor)
- Otillräcklig data-flagga och blockera rankning/jämförelse
Spara också en data-kvalitetsindikator (t.ex. data_quality_flag) så rapporter kan skilja på "dålig prestation" och "okänd prestation".
What’s the best way to handle disputes and score corrections?
Behandla tvister som ett arbetsflöde med spårbara utfall:
- Markera metrik/granskning som disputed utan att tyst ändra historiken
- Tillåt ett förslag till korrigering med bevis
- Reberäkna först efter godkännande och spara en not om varför ändringen gjordes
Behåll en versionsidentifierare (t.ex. calculation_run_id) så du kan svara på "vad ändrades sedan förra kvartalet?" på ett tillförlitligt sätt.
What core entities should the database include for a vendor scoring app?
En solid minskchema brukar innehålla:
- Vendor, Contract, Transaction (order/faktura), KPI Metric definition
- Review (kvalitativ), Score (övergripande), Metric Score (per KPI)
- Attachment (bevis)
Lägg till fält för spårbarhet: tidsstämplar, aktörs-ID:n, source system + externa ID:n och en score/version referens så varje siffra kan förklaras och reproduceras.
How do we prevent “garbage in” when importing from ERP/CSV/API sources?
Planera för flera ingångsvägar även om du börjar med en:
- Manuell inmatning för undantag
- CSV-uploads för historik
- API-sync för löpande uppdateringar
Vid import, gör validering av obligatoriska fält, numeriska intervall och duplicatdetektion. Spara ogiltiga rader med felmeddelanden så admin kan rätta och köra om utan att förlora kontext.
What roles, permissions, and audit trail features are essential—especially with a vendor portal?
Använd RBAC och behandla ändringar som förslag:
- Recensenter skapar utkast (recensioner, KPI-uppdateringar)
- Godkännare publicerar/låser perioder så poäng är stabila
- Leverantörsanvändare ser endast sina publicerade scorecards och kan svara i trådar
Logga varje meningsfull händelse (redigeringar, godkännanden, exporter, behörighetsändringar) med före/efter-värden. Detta skyddar förtroendet och förenklar revisioner—särskilt när leverantörer kan se eller svara.