chore(privacy): scrub real-org references from plugin internals (phase 2)

Same bulk replacement applied to plugin-internal KB, examples, fixtures,
tests, and docs. Real organization names, persona names, internal system
identifiers, and domain-specific terms replaced with fictional generic
public-sector entity (DDT) and generic terminology.

Scope:
- okr/ — examples, governance, framework, integrations, sources
- ms-ai-architect/ — KB references (engineering, governance, security,
  infrastructure, advisor), tests/fixtures, agents, docs
- linkedin-thought-leadership/ — voice samples, network-builder,
  examples (genericized identifying headlines to "[your organization]")
- llm-security/ — research notes, scan report

Manual genericization beyond bulk replace:
- okr SKILL.md "Primary user / Domain" — generic Norwegian public sector
- linkedin-voice SKILL.md headline placeholder
- network-builder.md headline placeholder
- high-engagement-posts.md voice sample employer line + hashtag

Phase 3 (factual-attribution review) remains: a few KB files attribute
publicly known transport-sector docs/datasets (e.g. håndbok V440, NVDB)
to the fictional DDT after bulk replace. Needs manual semantic review
to either remove or restore correct citation without re-introducing
affiliation references.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-03 04:28:15 +02:00
commit 9ea5a2e6c6
76 changed files with 191 additions and 191 deletions

View file

@ -43,7 +43,7 @@ Azure AI Language tilbyr tre API-varianter for PII-deteksjon:
| Adresse | `Address` | Storgata 1, 0123 Oslo | ML-basert |
| Organisasjon | `Organization` | NAV, Skatteetaten | ML-basert |
| EU Passport | `EUPassportNumber` | Norsk pass | Format-validering |
| EU Drivers License | `EUDriversLicenseNumber` | Norsk førerkort | Format-validering |
| EU Drivers License | `EUDriversLicenseNumber` | Norsk saksbehandling | Format-validering |
| Bank Account | `InternationalBankingAccountNumber` | IBAN | Format-validering |
**Viktig:** Azure detekterer norske fødselsnummer under kategorien `NOIdentityNumber`. Du må spesifisere `language: "no"` for optimal deteksjon.

View file

@ -231,7 +231,7 @@ Uavhengig av totalscore skal risikokategorien oppgraderes til **Kritisk** dersom
### Case A: Copilot Studio chatbot med SharePoint RAG, kun interne brukere, M365 E5
**Scenario:** Intern HR-chatbot i Statens vegvesen. Henter svar fra SharePoint-dokumentbibliotek via Copilot Studio. Ingen sensitiv persondata. Tilgjengelig kun for ansatte med M365 E5-lisens.
**Scenario:** Intern HR-chatbot i Direktoratet for digital tjenesteutvikling. Henter svar fra SharePoint-dokumentbibliotek via Copilot Studio. Ingen sensitiv persondata. Tilgjengelig kun for ansatte med M365 E5-lisens.
| Dimensjon | Forventet score | Begrunnelse |
|-----------|----------------|-------------|
@ -255,7 +255,7 @@ Uavhengig av totalscore skal risikokategorien oppgraderes til **Kritisk** dersom
### Case B: Azure AI Foundry med custom model, borgermøtende, sensitiv persondata
**Scenario:** Offentlig skjemaveileder for Statens vegvesen. Brukere (borgere) fyller ut søknader med støtte fra AI. Systemet prosesserer fødselsnummer, helseopplysninger og førerkortdata. Basert på Azure AI Foundry med fine-tuned GPT-4o og Azure AI Search (RAG).
**Scenario:** Offentlig skjemaveileder for Direktoratet for digital tjenesteutvikling. Brukere (borgere) fyller ut søknader med støtte fra AI. Systemet prosesserer fødselsnummer, helseopplysninger og saksbehandlingdata. Basert på Azure AI Foundry med fine-tuned GPT-4o og Azure AI Search (RAG).
| Dimensjon | Forventet score | Begrunnelse |
|-----------|----------------|-------------|

View file

@ -504,7 +504,7 @@ Noen sektorer må rapportere IT-kostnader til DFØ. Forbered data:
**Eksempel-rapport til DFØ:**
```
Virksomhet: Statens vegvesen
Virksomhet: Direktoratet for digital tjenesteutvikling
Periode: 2025
Azure AI Foundry:

View file

@ -270,7 +270,7 @@ Azure Cost Management aggregerer kostnader per dag, men fakturering skjer måned
| Arkitekturmønstre | **Baseline + Domain Expertise** | FinOps Framework + Azure Well-Architected |
| Beslutningsveiledning | **Verified** | Cost optimization best practices (Well-Architected) |
| Integrasjon med Microsoft-stakken | **Verified** | Official docs (tags, Power BI, Azure Monitor) |
| Offentlig sektor (Norge) | **Domain Expertise** | KTG/SVV-kontekst, ikke Microsoft-spesifikk |
| Offentlig sektor (Norge) | **Domain Expertise** | KTG/DDT-kontekst, ikke Microsoft-spesifikk |
| For arkitekten (Cosmo) | **Baseline + Best Practices** | Syntetisert fra research + field experience |
---

View file

@ -76,7 +76,7 @@ Azure Container Apps bruker KEDA (Kubernetes Event-driven Autoscaling) for dekla
"type": "azure-servicebus",
"metadata": {
"queueName": "ai-processing-queue",
"namespace": "svv-ai-servicebus",
"namespace": "ddt-ai-servicebus",
"messageCount": "5"
}
}
@ -227,7 +227,7 @@ resource aiService 'Microsoft.App/containerApps@2023-05-01' = {
"type": "azure-servicebus",
"metadata": {
"queueName": "document-analysis",
"namespace": "svv-ai-bus",
"namespace": "ddt-ai-bus",
"messageCount": "3"
},
"auth": [

View file

@ -10,7 +10,7 @@
Azure OpenAI Batch API er designet for storskala, asynkron prosessering av AI-arbeidslaster. Med 50% lavere kostnad enn Global Standard-prising og separat kvote som ikke pavirker online-trafikken, er Batch API ideelt for norsk offentlig sektor som trenger a prosessere store volumer av dokumenter, klassifiseringer eller analyser.
For offentlige virksomheter som Statens vegvesen, Nav, eller Skatteetaten kan Batch API brukes til masseprosessering av henvendelser, dokumentanalyse, oversettelser og datautvinning uten a forstyrre sanntidstjenestene. Tjenesten er spesielt verdifull for periodiske oppgaver som kvartalsvis rapportering, arsavslutning, eller migrering av historiske data.
For offentlige virksomheter som Direktoratet for digital tjenesteutvikling, Nav, eller Skatteetaten kan Batch API brukes til masseprosessering av henvendelser, dokumentanalyse, oversettelser og datautvinning uten a forstyrre sanntidstjenestene. Tjenesten er spesielt verdifull for periodiske oppgaver som kvartalsvis rapportering, arsavslutning, eller migrering av historiske data.
Denne referansen dekker hele arbeidsflyten for Batch API, fra filsammensetning og opplasting til kostnadsberegning og feilhhandtering, med fokus pa optimalisering for store volumer.

View file

@ -300,7 +300,7 @@ Azure OpenAI prompt caching reduserer latens og kostnad for requests med identis
# Krav: Minimum 1024 tokens, identisk prefix
# System prompt som gjenbrukes pa tvers av requests
SYSTEM_PROMPT = """Du er en saksbehandlingsassistent for Statens vegvesen.
SYSTEM_PROMPT = """Du er en saksbehandlingsassistent for Direktoratet for digital tjenesteutvikling.
Du hjelper med a analysere og klassifisere innkommende henvendelser
relatert til forerkort, kjoretoysregistrering og veiprosjekter.

View file

@ -295,7 +295,7 @@ def calculate_distillation_savings(
"roi_months": round(roi_months, 1)
}
# Eksempel: Statens vegvesen dokumentanalyse
# Eksempel: Direktoratet for digital tjenesteutvikling dokumentanalyse
savings = calculate_distillation_savings(
monthly_requests=100_000,
avg_input_tokens_before=1200, # Med few-shot

View file

@ -153,15 +153,15 @@ def design_cacheable_prompt(
return messages, stats
# Eksempel: Saksbehandler-assistent for Statens vegvesen
# Eksempel: Saksbehandler-assistent for Direktoratet for digital tjenesteutvikling
messages, stats = design_cacheable_prompt(
system_instructions="""Du er en AI-assistent for saksbehandlere i
Statens vegvesen. Du hjelper med å analysere klager på vedtak om
førerkort, vurdere om klagen har grunnlag, og foreslå svar.
Direktoratet for digital tjenesteutvikling. Du hjelper med å analysere klager på vedtak om
saksbehandling, vurdere om klagen har grunnlag, og foreslå svar.
Regelverk du skal referere til:
- Vegtrafikkloven § 24-34
- Førerkortforskriften
- fagforskriften
- Forvaltningsloven § 28-36 (klagebehandling)
Format: Alltid bruk overskrifter, vurder hvert punkt separat,
@ -173,7 +173,7 @@ messages, stats = design_cacheable_prompt(
"output": "## Vurdering\n### Regelverksvurdering..."
},
{
"input": "Klage: Mitt førerkort ble inndratt...",
"input": "Klage: Mitt saksbehandling ble inndratt...",
"output": "## Vurdering\n### Regelverksvurdering..."
}
],
@ -203,7 +203,7 @@ client = AzureOpenAI(
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
prompt_cache_key="svv-complaint-handler-v2", # Gruppert caching
prompt_cache_key="ddt-complaint-handler-v2", # Gruppert caching
max_tokens=1000
)