You've already forked AI-Sandb-Evaluation
Import UAPF package
init
This commit is contained in:
224
README.md
Normal file
224
README.md
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
# MI Sandbox Atlases Process — UAPF/ProcessGit Demo
|
||||||
|
|
||||||
|
Šis repozitorijs ir **UAPF Level 4 pakotne**, kas modelē VDAA publicēto
|
||||||
|
**Speciālās regulatīvās vides mākslīgā intelekta sistēmu attīstībai
|
||||||
|
projektu iesniegumu atlases nolikumu** kā mašīnlasāmu, versionējamu
|
||||||
|
un izpildāmu procesa + lēmumu + gadījumu modeli.
|
||||||
|
|
||||||
|
> **⚠ Svarīgi.** Šis ir demonstrācijas projekts. Tas nav oficiāls VDAA
|
||||||
|
> vai MI centra vērtēšanas instruments, nav juridiski saistošs un neaizstāj
|
||||||
|
> nolikuma tekstu vai iestādes pieņemto lēmumu.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ko šis demo parāda
|
||||||
|
|
||||||
|
1. **Process (BPMN)** — iesnieguma plūsma no saņemšanas līdz lēmumam,
|
||||||
|
ieskaitot trūkumu novēršanas apakšplūsmu ar 5 d.d. taimeri.
|
||||||
|
2. **Algoritms (DMN)** — trīs lēmumu modeļi: atbilstības vārti,
|
||||||
|
svērtais punktu aprēķins, TRL līmeņu kartējums.
|
||||||
|
3. **Gadījuma pārvaldība (CMMN)** — komisijas vērtēšana ar obligātiem
|
||||||
|
un diskrecionāriem soļiem (ārējie eksperti, AI iepriekšējais novērtējums).
|
||||||
|
4. **Resursu kartējums** — kas izpilda katru uzdevumu: cilvēki, sistēmas, AI aģenti.
|
||||||
|
5. **AI aģenta koncepts** — kā piesaistīt MI vērtēšanas asistentu ar
|
||||||
|
guardrails ierobežojumiem un EU AI Act atbilstību.
|
||||||
|
6. **ProcessGit viewer GUI** — interaktīvs komisijas vērtēšanas panelis,
|
||||||
|
kas ielādējas ProcessGit saskarnē.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## UAPF struktūra
|
||||||
|
|
||||||
|
```text
|
||||||
|
enterprise/
|
||||||
|
enterprise.yaml # L0 — darbvietas indekss
|
||||||
|
|
||||||
|
processes/L4/vdaa.mi.sandbox.atlase/ # L4 — izpildāmā pakotne
|
||||||
|
uapf.yaml # UAPF manifests (kind: uapf.package)
|
||||||
|
agent.chat.yaml # ProcessGit AI čata konfigurācija
|
||||||
|
processgit.viewer.json # Pielāgota GUI deklarācija
|
||||||
|
|
||||||
|
bpmn/
|
||||||
|
mi-sandbox-atlase.bpmn.xml # Galvenais process
|
||||||
|
|
||||||
|
dmn/
|
||||||
|
01-atbilstiba-un-izsledzosie.dmn.xml # Atbilstības un izslēdzošo nosacījumu DMN
|
||||||
|
02-vertesanas-punkti.dmn.xml # 5 kritēriju svērtais punktu aprēķins
|
||||||
|
03-trl-vertejums.dmn.xml # TRL → 0–5 vērtējuma kartējums
|
||||||
|
|
||||||
|
cmmn/
|
||||||
|
vertesanas-lieta.cmmn.xml # Komisijas vērtēšanas gadījums
|
||||||
|
|
||||||
|
resources/
|
||||||
|
mappings.yaml # Targets + bindings (UAPF formāts)
|
||||||
|
|
||||||
|
guardrails/
|
||||||
|
ai-evaluation-rules.yaml # AI aģenta ierobežojumi un EU AI Act
|
||||||
|
|
||||||
|
metadata/
|
||||||
|
ownership.yaml # Īpašnieki un pārskatīšana
|
||||||
|
lifecycle.yaml # Dzīves cikla statuss un ierobežojumi
|
||||||
|
|
||||||
|
examples/
|
||||||
|
candidate-input.example.json # Piemēra iesnieguma dati
|
||||||
|
expected-output.example.json # Sagaidāmais rezultāts (ar AI novērtējumu)
|
||||||
|
|
||||||
|
viewer/
|
||||||
|
komisija-vertesana.html # Interaktīvs vērtēšanas panelis
|
||||||
|
|
||||||
|
docs/
|
||||||
|
source-reference.md # Nolikuma punktu kartējums uz artefaktiem
|
||||||
|
CHANGELOG.md # Izmaiņu žurnāls
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Kā tas darbojas
|
||||||
|
|
||||||
|
### 1. Iesnieguma saņemšana un reģistrācija
|
||||||
|
BPMN process sākas ar elektronisku iesniegumu (info@ailatvia.lv).
|
||||||
|
Lietvedības darbinieks reģistrē un veic sākotnējo pārbaudi.
|
||||||
|
|
||||||
|
### 2. Formālā atbilstība (DMN 01)
|
||||||
|
Lēmumu tabula ar `FIRST` hit policy pārbauda 7 nosacījumus secīgi:
|
||||||
|
juridiskais statuss → jurisdikcija (LV/EU/EEA/CH) → termiņš →
|
||||||
|
valoda → e-paraksts → aizliegtā prakse → izslēdzošie nosacījumi.
|
||||||
|
|
||||||
|
Trīs iespējamie iznākumi: `ELIGIBLE`, `FIX_OR_REJECT`, `REJECT`.
|
||||||
|
|
||||||
|
### 3. Trūkumu novēršana (Nolikuma 12.p.)
|
||||||
|
Ja rezultāts ir `FIX_OR_REJECT`, BPMN aktivizē apakšplūsmu:
|
||||||
|
pieprasījums → gaidīšana ar 5 darba dienu taimeri → atkārtota pārbaude
|
||||||
|
vai noraidīšana pēc termiņa beigām.
|
||||||
|
|
||||||
|
### 4. Kompetento institūciju atzinumi (Nolikuma 13.–14.p.)
|
||||||
|
Process nosūta iesniegumu kompetentajām institūcijām 3 darbdienu laikā
|
||||||
|
un gaida atzinumus MK noteikumu 14.p. termiņā.
|
||||||
|
|
||||||
|
### 5. Komisijas vērtēšana (Nolikuma 16.–19.p.)
|
||||||
|
Komisija piešķir 0–5 vērtējumus pieciem kritērijiem. CMMN modelis
|
||||||
|
ļauj diskrecionāri piesaistīt ārējos ekspertus vai AI aģentu.
|
||||||
|
|
||||||
|
### 6. Punktu aprēķins (DMN 02 + DMN 03)
|
||||||
|
TRL līmenis vispirms tiek kartēts uz 0–5 skalu (DMN 03, 2.pielikums),
|
||||||
|
pēc tam svērtais punktu aprēķins visiem kritērijiem:
|
||||||
|
|
||||||
|
```
|
||||||
|
kritērija_punkti = svars × (vērtējums / 5)
|
||||||
|
gala_summa = Σ visu kritēriju punkti
|
||||||
|
```
|
||||||
|
|
||||||
|
| Nr. | Kritērijs | Svars |
|
||||||
|
|-----|-----------|-------|
|
||||||
|
| 1 | Inovitāte un tirgus nepilnību novēršana | 20 |
|
||||||
|
| 2 | Ieguldījums digitālās transformācijas mērķos | 15 |
|
||||||
|
| 3 | Tehniskā gatavība un resursu nodrošinājums | 30 |
|
||||||
|
| 4 | Augsta riska MI sistēmas kvalifikācija | 10 |
|
||||||
|
| 5 | Regulatīvās vides pamatojums | 25 |
|
||||||
|
|
||||||
|
Neizšķirtā gadījumā prioritāte: Kr.3 → Kr.5 → Kr.1.
|
||||||
|
|
||||||
|
### 7. Lēmums (Nolikuma 20., 22.p.)
|
||||||
|
Ne vairāk kā 3 MI sistēmas ar augstāko punktu skaitu tiek iekļautas
|
||||||
|
speciālajā regulatīvajā vidē. Paziņojums ≤45 dienas.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## AI aģenta koncepts
|
||||||
|
|
||||||
|
### Arhitektūra
|
||||||
|
|
||||||
|
AI aģents darbojas **asistētā režīmā** (`mode: assisted`) — tas sniedz
|
||||||
|
strukturētu ieteikumu, bet galīgais lēmums ir cilvēka (komisijas) ziņā.
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
|
||||||
|
│ Iesnieguma │────▸│ AI Aģents │────▸│ Komisijas │
|
||||||
|
│ dati │ │ (asistents) │ │ panelis │
|
||||||
|
└─────────────┘ └──────┬───────┘ └────────┬────────┘
|
||||||
|
│ │
|
||||||
|
┌──────▼───────┐ ┌─────▼──────┐
|
||||||
|
│ Guardrails │ │ Galīgais │
|
||||||
|
│ validācija │ │ lēmums │
|
||||||
|
└──────────────┘ └────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### MCP rīki
|
||||||
|
|
||||||
|
AI aģentam ir pieejami trīs MCP rīki, kas izpilda DMN modeļus:
|
||||||
|
- `check_eligibility` — pārbauda atbilstību
|
||||||
|
- `calculate_score` — aprēķina punktus
|
||||||
|
- `map_trl_level` — kartē TRL līmeni
|
||||||
|
|
||||||
|
### Guardrails
|
||||||
|
|
||||||
|
Fails `guardrails/ai-evaluation-rules.yaml` definē:
|
||||||
|
- **4 obligātos principus**: cilvēka lēmums, pārredzamība, vērtējumu nemainīšana, audits
|
||||||
|
- **Ievades validāciju**: shēmas pārbaude, diapazona kontrole, GDPR redakcija
|
||||||
|
- **Izvades ierobežojumus**: strukturēts JSON ar pamatojumu un atsaucēm
|
||||||
|
- **Aizliegtās darbības**: 6 konkrēti aizliegumi
|
||||||
|
- **EU AI Act atbilstību**: atsauces uz Regulas 3., 10., 13., 14. pantu
|
||||||
|
|
||||||
|
### Kāpēc tas ir nozīmīgi
|
||||||
|
|
||||||
|
Šis koncepts demonstrē, kā regulatīvā procesa kontekstā var:
|
||||||
|
1. **Definēt AI iesaisti kā mašīnlasāmu konfigurāciju** (ne tikai aprakstu)
|
||||||
|
2. **Nodrošināt guardrails kā koda artefaktu** (versionējams, pārskatāms, pārbaudāms)
|
||||||
|
3. **Saglabāt pilnu audita pēdu** par AI darbībām
|
||||||
|
4. **Demonstrēt EU AI Act atbilstību** strukturēti
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ProcessGit viewer
|
||||||
|
|
||||||
|
Fails `processgit.viewer.json` aktivizē interaktīvu komisijas vērtēšanas
|
||||||
|
paneli, kad lietotājs atver `examples/candidate-input.example.json`.
|
||||||
|
Panelis ietver 5 cilnes:
|
||||||
|
|
||||||
|
| Cilne | Saturs |
|
||||||
|
|-------|--------|
|
||||||
|
| **Atbilstība** | Formālās atbilstības pārbaude ar DMN 01 loģiku |
|
||||||
|
| **Vērtēšana** | Kritēriju vērtējumu ievade, punktu aprēķins, TRL kartējums |
|
||||||
|
| **AI Aģents** | AI iepriekšējā novērtējuma palaišana un rezultāta pārskatīšana |
|
||||||
|
| **Guardrails** | AI ierobežojumu un EU AI Act atbilstības vizualizācija |
|
||||||
|
| **Audits** | Notikumu žurnāls ar laika zīmogiem |
|
||||||
|
|
||||||
|
Viewer izmanto PGV (ProcessGit Viewer) protokolu un var saglabāt izmaiņas
|
||||||
|
atpakaļ repozitorijā caur `PGV_REQUEST_SAVE`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Kā izmantot
|
||||||
|
|
||||||
|
1. Atver repozitoriju ProcessGit vidē (`processgit.org` vai `processgit.dev`).
|
||||||
|
2. Atver `bpmn/mi-sandbox-atlase.bpmn.xml` — grafiski redzams process.
|
||||||
|
3. Atver `dmn/*.dmn.xml` — lēmumu tabulas ar skaidrojumiem.
|
||||||
|
4. Atver `cmmn/vertesanas-lieta.cmmn.xml` — gadījuma modelis.
|
||||||
|
5. Atver `examples/candidate-input.example.json` — ielādējas viewer GUI.
|
||||||
|
6. Noklikšķini uz `agent.chat.yaml` — atveras AI čata panelis (🏛️).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## UAPF atbilstība
|
||||||
|
|
||||||
|
| Prasība | Statuss |
|
||||||
|
|---------|--------|
|
||||||
|
| `kind: uapf.package` manifestā | ✅ |
|
||||||
|
| `cornerstones` deklarācija (BPMN+DMN+CMMN+Resources) | ✅ |
|
||||||
|
| `owners` ar kontaktu | ✅ |
|
||||||
|
| `lifecycle` statuss | ✅ |
|
||||||
|
| L0 enterprise index ar `kind: uapf.enterprise.index` | ✅ |
|
||||||
|
| `.bpmn.xml` / `.dmn.xml` / `.cmmn.xml` paplašinājumi | ✅ |
|
||||||
|
| `resources/mappings.yaml` ar targets + bindings | ✅ |
|
||||||
|
| `metadata/` ar ownership + lifecycle | ✅ |
|
||||||
|
| MCP endpoint deklarācija (`exposure.mcp`) | ✅ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Licences un ierobežojumi
|
||||||
|
|
||||||
|
- **Demo pakotne** — nav paredzēta oficiālai lēmumu pieņemšanai.
|
||||||
|
- **AI aģenta ieteikums nav saistošs** — tikai komisijas lēmums ir galīgs.
|
||||||
|
- **Piemēra dati ir fiktīvi** — nesatur personas datus.
|
||||||
|
- UAPF specifikācija: [github.com/UAPFormat/UAPF-specification](https://github.com/UAPFormat/UAPF-specification)
|
||||||
|
- ProcessGit: [github.com/Algomation-AI/ProcessGit](https://github.com/Algomation-AI/ProcessGit)
|
||||||
22
enterprise/enterprise.yaml
Normal file
22
enterprise/enterprise.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
kind: uapf.enterprise.index
|
||||||
|
level: 0
|
||||||
|
enterprise:
|
||||||
|
id: lv.vdaa.mi-sandbox
|
||||||
|
name: "VDAA MI sistēmu atlases regulatīvā vide"
|
||||||
|
description: >-
|
||||||
|
Demonstrācijas darbvieta, kas parāda, kā Speciālās regulatīvās vides
|
||||||
|
MI sistēmu attīstībai projektu iesniegumu atlases nolikumu modelēt kā
|
||||||
|
UAPF/ProcessGit projektu ar procesa, lēmumu loģikas un AI aģentu nodalīšanu.
|
||||||
|
packages:
|
||||||
|
- ref: ../processes/L4/vdaa.mi.sandbox.atlase
|
||||||
|
level: 4
|
||||||
|
domain: public-sector-regulation
|
||||||
|
tags:
|
||||||
|
- ai-act
|
||||||
|
- sandbox
|
||||||
|
- evaluation
|
||||||
|
- latvia
|
||||||
|
owners:
|
||||||
|
- type: team
|
||||||
|
id: algomation
|
||||||
|
contact: info@algomation.io
|
||||||
67
processes/L4/vdaa.mi.sandbox.atlase/agent.chat.yaml
Normal file
67
processes/L4/vdaa.mi.sandbox.atlase/agent.chat.yaml
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# ProcessGit AI Chat Agent konfigurācija
|
||||||
|
# Šis fails aktivizē 🤖 ikonu ProcessGit repozitorija failā kokā
|
||||||
|
# un ielādē MI vērtēšanas asistentu, kad lietotājs to atver.
|
||||||
|
|
||||||
|
ui:
|
||||||
|
name: "MI Atlases Asistents"
|
||||||
|
icon: "🏛️"
|
||||||
|
bubbles:
|
||||||
|
- "Pārbaudi iesnieguma atbilstību"
|
||||||
|
- "Aprēķini punktus no šiem vērtējumiem"
|
||||||
|
- "Kāds TRL līmenis atbilst mūsu sistēmai?"
|
||||||
|
- "Izskaidro neizšķirta gadījuma loģiku"
|
||||||
|
- "Parādi vērtēšanas kritēriju svarus"
|
||||||
|
theme:
|
||||||
|
primary: "#1a365d"
|
||||||
|
accent: "#e53e3e"
|
||||||
|
|
||||||
|
llm:
|
||||||
|
provider: anthropic
|
||||||
|
model: claude-sonnet-4-20250514
|
||||||
|
api_key_ref: ANTHROPIC_API_KEY
|
||||||
|
max_tokens: 4096
|
||||||
|
system_prompt: |
|
||||||
|
Tu esi MI sistēmu atlases procesa asistents, kas palīdz komisijas locekļiem
|
||||||
|
un iesniedzējiem izprast VDAA speciālās regulatīvās vides atlases nolikumu.
|
||||||
|
|
||||||
|
Tavas galvenās spējas:
|
||||||
|
1. Pārbaudīt iesnieguma formālo atbilstību (DMN: 01-atbilstiba-un-izsledzosie.dmn.xml)
|
||||||
|
2. Aprēķināt svērtos punktus no komisijas vērtējumiem (DMN: 02-vertesanas-punkti.dmn.xml)
|
||||||
|
3. Kartēt TRL līmeņus uz 0-5 skalu (DMN: 03-trl-vertejums.dmn.xml)
|
||||||
|
4. Izskaidrot vērtēšanas kritērijus, svarus un enkurus
|
||||||
|
5. Parādīt neizšķirta gadījuma atrisināšanas loģiku
|
||||||
|
|
||||||
|
SVARĪGI IEROBEŽOJUMI:
|
||||||
|
- Tu esi ASISTENTS, nevis lēmumu pieņēmējs. Galīgais lēmums ir komisijas.
|
||||||
|
- Tu nedrīksti mainīt komisijas piešķirtos vērtējumus.
|
||||||
|
- Tu nedrīksti salīdzināt konkrētus iesniedzējus savā starpā.
|
||||||
|
- Katram ieteikumam pievieno atsauci uz nolikuma punktu.
|
||||||
|
- Ja nav pietiekamu datu, saki to skaidri, nevis izdomā.
|
||||||
|
|
||||||
|
Atbildi latviešu valodā, ja vien lietotājs neraksta angliski.
|
||||||
|
|
||||||
|
mcp:
|
||||||
|
use_repo_mcp: true
|
||||||
|
additional_servers: []
|
||||||
|
allowed_tools:
|
||||||
|
- check_eligibility
|
||||||
|
- calculate_score
|
||||||
|
- map_trl_level
|
||||||
|
- search_process
|
||||||
|
- get_decision_table
|
||||||
|
|
||||||
|
history:
|
||||||
|
storage: git-branch
|
||||||
|
branch: chat-history
|
||||||
|
retention_days: 90
|
||||||
|
batch_commit_interval: 300
|
||||||
|
|
||||||
|
access:
|
||||||
|
roles:
|
||||||
|
- commission-member
|
||||||
|
- case-officer
|
||||||
|
- external-expert
|
||||||
|
- demo-viewer
|
||||||
|
rate_limit:
|
||||||
|
requests_per_minute: 10
|
||||||
|
daily_budget_usd: 5.00
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
||||||
|
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
|
||||||
|
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
|
||||||
|
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
|
||||||
|
id="Definitions_VDAA_MI_Sandbox"
|
||||||
|
targetNamespace="https://processgit.org/VDAA/mi-sandbox-atlase">
|
||||||
|
|
||||||
|
<bpmn:process id="Process_MI_Sandbox_Atlase" name="MI sistēmu atlases process (Nolikums)" isExecutable="false">
|
||||||
|
|
||||||
|
<!-- ===== START ===== -->
|
||||||
|
<bpmn:startEvent id="Start_ApplicationReceived" name="Saņemts iesniegums (e-pasts info@ailatvia.lv)">
|
||||||
|
<bpmn:outgoing>Flow_01</bpmn:outgoing>
|
||||||
|
</bpmn:startEvent>
|
||||||
|
|
||||||
|
<!-- ===== PHASE 1: Registration & Formal Check ===== -->
|
||||||
|
<bpmn:userTask id="Task_Register" name="Reģistrēt iesniegumu">
|
||||||
|
<bpmn:documentation>Nolikuma 7.p. — iesniegums nosūtīts elektroniski, parakstīts ar drošu e-parakstu ar laika zīmogu.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_01</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_02</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<bpmn:businessRuleTask id="Task_EligibilityDMN" name="DMN: Atbilstība un izslēdzošie nosacījumi">
|
||||||
|
<bpmn:documentation>Nolikuma 6.p., 13.p. — pārbauda juridisko statusu, jurisdikciju, termiņu, valodu, e-parakstu, aizliegtās prakses un izslēdzošos nosacījumus.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_02</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_03</bpmn:outgoing>
|
||||||
|
</bpmn:businessRuleTask>
|
||||||
|
|
||||||
|
<bpmn:exclusiveGateway id="GW_EligibilityResult" name="Atbilstības rezultāts">
|
||||||
|
<bpmn:incoming>Flow_03</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_Eligible</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>Flow_NeedsFixing</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>Flow_Rejected</bpmn:outgoing>
|
||||||
|
</bpmn:exclusiveGateway>
|
||||||
|
|
||||||
|
<!-- ===== Deficiency correction sub-flow (Nolikuma 12.p.) ===== -->
|
||||||
|
<bpmn:sendTask id="Task_RequestFix" name="Pieprasīt trūkumu novēršanu (5 darba dienas)">
|
||||||
|
<bpmn:documentation>Nolikuma 12.p. — Centrs pieprasa novērst trūkumus 5 darba dienu laikā.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_NeedsFixing</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_WaitFix</bpmn:outgoing>
|
||||||
|
</bpmn:sendTask>
|
||||||
|
|
||||||
|
<bpmn:receiveTask id="Task_ReceiveFix" name="Saņemt precizējumu">
|
||||||
|
<bpmn:incoming>Flow_WaitFix</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_ReCheck</bpmn:outgoing>
|
||||||
|
</bpmn:receiveTask>
|
||||||
|
|
||||||
|
<bpmn:boundaryEvent id="Timer_FixDeadline" name="5 darba dienas" attachedToRef="Task_ReceiveFix" cancelActivity="true">
|
||||||
|
<bpmn:timerEventDefinition id="TimerDef_Fix">
|
||||||
|
<bpmn:timeDuration>P5D</bpmn:timeDuration>
|
||||||
|
</bpmn:timerEventDefinition>
|
||||||
|
<bpmn:outgoing>Flow_FixTimeout</bpmn:outgoing>
|
||||||
|
</bpmn:boundaryEvent>
|
||||||
|
|
||||||
|
<bpmn:sequenceFlow id="Flow_ReCheck" sourceRef="Task_ReceiveFix" targetRef="Task_EligibilityDMN"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_FixTimeout" sourceRef="Timer_FixDeadline" targetRef="End_NotSubmitted"/>
|
||||||
|
|
||||||
|
<bpmn:endEvent id="End_NotSubmitted" name="Atzīts par neiesniegtu (trūkumi nenovērsti)">
|
||||||
|
<bpmn:incoming>Flow_FixTimeout</bpmn:incoming>
|
||||||
|
</bpmn:endEvent>
|
||||||
|
|
||||||
|
<!-- ===== PHASE 2: Competent Authority Opinion (Nolikuma 13.-14.p.) ===== -->
|
||||||
|
<bpmn:sendTask id="Task_SendToAuthority" name="Nosūtīt kompetentajām institūcijām (3 darba dienu laikā)">
|
||||||
|
<bpmn:documentation>Nolikuma 13.p. — nosūta 3 darbdienu laikā no saņemšanas.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_Eligible</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_04</bpmn:outgoing>
|
||||||
|
</bpmn:sendTask>
|
||||||
|
|
||||||
|
<bpmn:receiveTask id="Task_ReceiveOpinion" name="Saņemt kompetento institūciju atzinumus">
|
||||||
|
<bpmn:documentation>Nolikuma 14.p. — atzinums MK noteikumu 14.p. termiņā.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_04</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_05</bpmn:outgoing>
|
||||||
|
</bpmn:receiveTask>
|
||||||
|
|
||||||
|
<!-- ===== PHASE 3: Commission Evaluation (Nolikuma 16.-19.p.) ===== -->
|
||||||
|
<bpmn:userTask id="Task_CommissionScoring" name="Komisija: piešķirt 0–5 vērtējumus 5 kritērijiem">
|
||||||
|
<bpmn:documentation>Nolikuma 18.-19.p. — Komisija vērtē atbilstoši 1.pielikuma metodoloģijai. Var piesaistīt ārējos ekspertus.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_05</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_06</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<bpmn:businessRuleTask id="Task_TRLMapping" name="DMN: TRL → 0–5 vērtējums">
|
||||||
|
<bpmn:documentation>Nolikuma 2.pielikums — TRL1-9 pārvēršana 0-5 skalā kritērijam Nr.3.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_06</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_06b</bpmn:outgoing>
|
||||||
|
</bpmn:businessRuleTask>
|
||||||
|
|
||||||
|
<bpmn:businessRuleTask id="Task_ScoringDMN" name="DMN: Aprēķināt svērtos punktus un reitingu">
|
||||||
|
<bpmn:documentation>Nolikuma 1.pielikums — formula: svars × (vērtējums / 5). Neizšķirta gadījumā: Kr.3 → Kr.5 → Kr.1.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_06b</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_07</bpmn:outgoing>
|
||||||
|
</bpmn:businessRuleTask>
|
||||||
|
|
||||||
|
<!-- ===== PHASE 4: Decision (Nolikuma 20., 22.p.) ===== -->
|
||||||
|
<bpmn:userTask id="Task_PrepareDecision" name="Sagatavot pamatotu lēmumu">
|
||||||
|
<bpmn:documentation>Nolikuma 20.p. — Komisija sagatavo vērtējumu un pieņem pamatotu lēmumu. Ne vairāk kā 3 MI sistēmas ar augstāko punktu skaitu (22.p.).</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_07</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_08</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
|
||||||
|
<bpmn:sendTask id="Task_NotifyApplicant" name="Paziņot lēmumu iesniedzējam (≤45 dienas)">
|
||||||
|
<bpmn:documentation>Nolikuma 15.p. — ne vēlāk kā 45 dienu laikā no iesniegšanas beigu datuma.</bpmn:documentation>
|
||||||
|
<bpmn:incoming>Flow_08</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_09</bpmn:outgoing>
|
||||||
|
</bpmn:sendTask>
|
||||||
|
|
||||||
|
<bpmn:endEvent id="End_DecisionIssued" name="Lēmums paziņots">
|
||||||
|
<bpmn:incoming>Flow_09</bpmn:incoming>
|
||||||
|
</bpmn:endEvent>
|
||||||
|
|
||||||
|
<bpmn:endEvent id="End_Rejected" name="Iesniegums noraidīts (neatbilst)">
|
||||||
|
<bpmn:incoming>Flow_Rejected</bpmn:incoming>
|
||||||
|
</bpmn:endEvent>
|
||||||
|
|
||||||
|
<!-- ===== SEQUENCE FLOWS ===== -->
|
||||||
|
<bpmn:sequenceFlow id="Flow_01" sourceRef="Start_ApplicationReceived" targetRef="Task_Register"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_02" sourceRef="Task_Register" targetRef="Task_EligibilityDMN"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_03" sourceRef="Task_EligibilityDMN" targetRef="GW_EligibilityResult"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_Eligible" name="ELIGIBLE" sourceRef="GW_EligibilityResult" targetRef="Task_SendToAuthority"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_NeedsFixing" name="FIX_OR_REJECT" sourceRef="GW_EligibilityResult" targetRef="Task_RequestFix"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_Rejected" name="REJECT" sourceRef="GW_EligibilityResult" targetRef="End_Rejected"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_WaitFix" sourceRef="Task_RequestFix" targetRef="Task_ReceiveFix"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_04" sourceRef="Task_SendToAuthority" targetRef="Task_ReceiveOpinion"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_05" sourceRef="Task_ReceiveOpinion" targetRef="Task_CommissionScoring"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_06" sourceRef="Task_CommissionScoring" targetRef="Task_TRLMapping"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_06b" sourceRef="Task_TRLMapping" targetRef="Task_ScoringDMN"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_07" sourceRef="Task_ScoringDMN" targetRef="Task_PrepareDecision"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_08" sourceRef="Task_PrepareDecision" targetRef="Task_NotifyApplicant"/>
|
||||||
|
<bpmn:sequenceFlow id="Flow_09" sourceRef="Task_NotifyApplicant" targetRef="End_DecisionIssued"/>
|
||||||
|
</bpmn:process>
|
||||||
|
|
||||||
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_MI_Sandbox_Atlase">
|
||||||
|
<!-- Row 1: Main happy path -->
|
||||||
|
<bpmndi:BPMNShape id="S_Start" bpmnElement="Start_ApplicationReceived"><dc:Bounds x="80" y="200" width="36" height="36"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_Register" bpmnElement="Task_Register"><dc:Bounds x="160" y="178" width="140" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_EligDMN" bpmnElement="Task_EligibilityDMN"><dc:Bounds x="340" y="178" width="180" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_GW_Elig" bpmnElement="GW_EligibilityResult" isMarkerVisible="true"><dc:Bounds x="560" y="193" width="50" height="50"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_SendAuth" bpmnElement="Task_SendToAuthority"><dc:Bounds x="660" y="178" width="160" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_RecvOpin" bpmnElement="Task_ReceiveOpinion"><dc:Bounds x="860" y="178" width="160" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_CommScore" bpmnElement="Task_CommissionScoring"><dc:Bounds x="1060" y="178" width="180" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_TRL" bpmnElement="Task_TRLMapping"><dc:Bounds x="1280" y="178" width="160" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_ScoreDMN" bpmnElement="Task_ScoringDMN"><dc:Bounds x="1480" y="178" width="180" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_Decision" bpmnElement="Task_PrepareDecision"><dc:Bounds x="1700" y="178" width="160" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_Notify" bpmnElement="Task_NotifyApplicant"><dc:Bounds x="1900" y="178" width="160" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_End" bpmnElement="End_DecisionIssued"><dc:Bounds x="2100" y="200" width="36" height="36"/></bpmndi:BPMNShape>
|
||||||
|
<!-- Row 2: Fix sub-flow -->
|
||||||
|
<bpmndi:BPMNShape id="S_ReqFix" bpmnElement="Task_RequestFix"><dc:Bounds x="460" y="340" width="180" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_RecvFix" bpmnElement="Task_ReceiveFix"><dc:Bounds x="460" y="460" width="180" height="80"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_Timer" bpmnElement="Timer_FixDeadline"><dc:Bounds x="622" y="522" width="36" height="36"/></bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="S_EndNS" bpmnElement="End_NotSubmitted"><dc:Bounds x="720" y="522" width="36" height="36"/></bpmndi:BPMNShape>
|
||||||
|
<!-- Row 3: Rejection -->
|
||||||
|
<bpmndi:BPMNShape id="S_EndRej" bpmnElement="End_Rejected"><dc:Bounds x="660" y="100" width="36" height="36"/></bpmndi:BPMNShape>
|
||||||
|
<!-- Edges -->
|
||||||
|
<bpmndi:BPMNEdge id="E_01" bpmnElement="Flow_01"><di:waypoint x="116" y="218"/><di:waypoint x="160" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_02" bpmnElement="Flow_02"><di:waypoint x="300" y="218"/><di:waypoint x="340" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_03" bpmnElement="Flow_03"><di:waypoint x="520" y="218"/><di:waypoint x="560" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_Elig" bpmnElement="Flow_Eligible"><di:waypoint x="610" y="218"/><di:waypoint x="660" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_Fix" bpmnElement="Flow_NeedsFixing"><di:waypoint x="585" y="243"/><di:waypoint x="585" y="380"/><di:waypoint x="460" y="380"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_Rej" bpmnElement="Flow_Rejected"><di:waypoint x="585" y="193"/><di:waypoint x="585" y="118"/><di:waypoint x="660" y="118"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_WFix" bpmnElement="Flow_WaitFix"><di:waypoint x="550" y="420"/><di:waypoint x="550" y="460"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_ReChk" bpmnElement="Flow_ReCheck"><di:waypoint x="460" y="500"/><di:waypoint x="380" y="500"/><di:waypoint x="380" y="258"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_Tmout" bpmnElement="Flow_FixTimeout"><di:waypoint x="658" y="540"/><di:waypoint x="720" y="540"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_04" bpmnElement="Flow_04"><di:waypoint x="820" y="218"/><di:waypoint x="860" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_05" bpmnElement="Flow_05"><di:waypoint x="1020" y="218"/><di:waypoint x="1060" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_06" bpmnElement="Flow_06"><di:waypoint x="1240" y="218"/><di:waypoint x="1280" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_06b" bpmnElement="Flow_06b"><di:waypoint x="1440" y="218"/><di:waypoint x="1480" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_07" bpmnElement="Flow_07"><di:waypoint x="1660" y="218"/><di:waypoint x="1700" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_08" bpmnElement="Flow_08"><di:waypoint x="1860" y="218"/><di:waypoint x="1900" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="E_09" bpmnElement="Flow_09"><di:waypoint x="2060" y="218"/><di:waypoint x="2100" y="218"/></bpmndi:BPMNEdge>
|
||||||
|
</bpmndi:BPMNPlane>
|
||||||
|
</bpmndi:BPMNDiagram>
|
||||||
|
</bpmn:definitions>
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<cmmn:definitions xmlns:cmmn="http://www.omg.org/spec/CMMN/20151109/MODEL"
|
||||||
|
xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI"
|
||||||
|
xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC"
|
||||||
|
id="Definitions_EvaluationCase"
|
||||||
|
targetNamespace="https://processgit.org/VDAA/mi-sandbox-atlase/cmmn">
|
||||||
|
|
||||||
|
<cmmn:case id="Case_ProjectEvaluation" name="MI projekta iesnieguma vērtēšanas lieta">
|
||||||
|
|
||||||
|
<cmmn:casePlanModel id="CPM_Evaluation" name="Vērtēšanas lieta">
|
||||||
|
|
||||||
|
<!-- === Required stages === -->
|
||||||
|
<cmmn:stage id="Stage_FormalCheck" name="Formālā pārbaude">
|
||||||
|
<cmmn:planItem id="PI_RegisterApp" definitionRef="HT_RegisterApp"/>
|
||||||
|
<cmmn:planItem id="PI_RunEligibility" definitionRef="PT_RunEligibility"/>
|
||||||
|
<cmmn:planItem id="PI_RequestFix" definitionRef="HT_RequestFix">
|
||||||
|
<cmmn:entryCriterion id="EC_NeedsFix" sentryRef="Sentry_NeedsFix"/>
|
||||||
|
</cmmn:planItem>
|
||||||
|
</cmmn:stage>
|
||||||
|
|
||||||
|
<cmmn:stage id="Stage_ExpertOpinion" name="Kompetento institūciju atzinumi">
|
||||||
|
<cmmn:planItem id="PI_SendToAuthority" definitionRef="HT_SendToAuthority"/>
|
||||||
|
<cmmn:planItem id="PI_CollectOpinions" definitionRef="HT_CollectOpinions"/>
|
||||||
|
</cmmn:stage>
|
||||||
|
|
||||||
|
<cmmn:stage id="Stage_CommissionEval" name="Komisijas vērtēšana">
|
||||||
|
<cmmn:planItem id="PI_ScoreCriteria" definitionRef="HT_ScoreCriteria"/>
|
||||||
|
<cmmn:planItem id="PI_RunScoring" definitionRef="PT_RunScoring"/>
|
||||||
|
<!-- Discretionary: commission may involve external experts (Nolikuma 19.p.) -->
|
||||||
|
<cmmn:planItem id="PI_ExternalExpert" definitionRef="HT_ExternalExpert">
|
||||||
|
<cmmn:itemControl><cmmn:manualActivationRule/></cmmn:itemControl>
|
||||||
|
</cmmn:planItem>
|
||||||
|
<!-- Discretionary: AI agent pre-assessment -->
|
||||||
|
<cmmn:planItem id="PI_AIPreAssessment" definitionRef="PT_AIPreAssessment">
|
||||||
|
<cmmn:itemControl><cmmn:manualActivationRule/></cmmn:itemControl>
|
||||||
|
</cmmn:planItem>
|
||||||
|
</cmmn:stage>
|
||||||
|
|
||||||
|
<cmmn:stage id="Stage_Decision" name="Lēmuma pieņemšana">
|
||||||
|
<cmmn:planItem id="PI_PrepareDecision" definitionRef="HT_PrepareDecision"/>
|
||||||
|
<cmmn:planItem id="PI_NotifyApplicant" definitionRef="HT_NotifyApplicant"/>
|
||||||
|
</cmmn:stage>
|
||||||
|
|
||||||
|
<!-- === Milestones === -->
|
||||||
|
<cmmn:milestone id="MS_Eligible" name="Iesniegums atzīts par atbilstošu"/>
|
||||||
|
<cmmn:milestone id="MS_OpinionsReceived" name="Visi atzinumi saņemti"/>
|
||||||
|
<cmmn:milestone id="MS_Scored" name="Punkti aprēķināti"/>
|
||||||
|
|
||||||
|
<!-- === Sentries === -->
|
||||||
|
<cmmn:sentry id="Sentry_NeedsFix">
|
||||||
|
<cmmn:planItemOnPart sourceRef="PI_RunEligibility">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
<cmmn:ifPart><cmmn:condition>eligibilityResult.status = "FIX_OR_REJECT"</cmmn:condition></cmmn:ifPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
|
||||||
|
</cmmn:casePlanModel>
|
||||||
|
|
||||||
|
<!-- === Task Definitions === -->
|
||||||
|
<cmmn:humanTask id="HT_RegisterApp" name="Reģistrēt iesniegumu"/>
|
||||||
|
<cmmn:processTask id="PT_RunEligibility" name="Izpildīt atbilstības DMN" processRef="dmn/01-atbilstiba-un-izsledzosie.dmn.xml"/>
|
||||||
|
<cmmn:humanTask id="HT_RequestFix" name="Pieprasīt trūkumu novēršanu (5 d.d.)"/>
|
||||||
|
<cmmn:humanTask id="HT_SendToAuthority" name="Nosūtīt kompetentajām institūcijām"/>
|
||||||
|
<cmmn:humanTask id="HT_CollectOpinions" name="Apkopot saņemtos atzinumus"/>
|
||||||
|
<cmmn:humanTask id="HT_ScoreCriteria" name="Piešķirt 0–5 vērtējumus katram kritērijam"/>
|
||||||
|
<cmmn:processTask id="PT_RunScoring" name="Izpildīt punktu aprēķina DMN" processRef="dmn/02-vertesanas-punkti.dmn.xml"/>
|
||||||
|
<cmmn:humanTask id="HT_ExternalExpert" name="Piesaistīt ārējo ekspertu (Nolikuma 19.p.)"/>
|
||||||
|
<cmmn:processTask id="PT_AIPreAssessment" name="AI aģenta iepriekšējais novērtējums (demo)"/>
|
||||||
|
<cmmn:humanTask id="HT_PrepareDecision" name="Sagatavot pamatotu lēmumu"/>
|
||||||
|
<cmmn:humanTask id="HT_NotifyApplicant" name="Paziņot lēmumu (≤45 dienas)"/>
|
||||||
|
|
||||||
|
</cmmn:case>
|
||||||
|
</cmmn:definitions>
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/"
|
||||||
|
xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/"
|
||||||
|
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC/"
|
||||||
|
id="Definitions_Eligibility"
|
||||||
|
name="Atbilstība un izslēdzošie nosacījumi"
|
||||||
|
namespace="https://processgit.org/VDAA/mi-sandbox-atlase/dmn/eligibility">
|
||||||
|
|
||||||
|
<!-- === INPUT DATA === -->
|
||||||
|
<inputData id="In_IsLegalEntity" name="isLegalEntity"/>
|
||||||
|
<inputData id="In_Jurisdiction" name="jurisdiction"/>
|
||||||
|
<inputData id="In_SubmittedInTime" name="submittedInTime"/>
|
||||||
|
<inputData id="In_DocumentsInLatvian" name="documentsInLatvian"/>
|
||||||
|
<inputData id="In_HasESignature" name="hasQualifiedESignatureAndTimestamp"/>
|
||||||
|
<inputData id="In_IsForbiddenAI" name="isForbiddenAIPractice"/>
|
||||||
|
<inputData id="In_HasExclusion" name="hasExclusionUnderLaw8p3"/>
|
||||||
|
|
||||||
|
<!-- === JURISDICTION CHECK (Nolikuma 6.1.p.) === -->
|
||||||
|
<decision id="Decision_JurisdictionOk" name="JurisdictionCheck">
|
||||||
|
<variable name="jurisdictionOk" typeRef="boolean"/>
|
||||||
|
<informationRequirement><requiredInput href="#In_Jurisdiction"/></informationRequirement>
|
||||||
|
<decisionTable id="DT_Jurisdiction" hitPolicy="UNIQUE">
|
||||||
|
<input id="JIn_1"><inputExpression typeRef="string"><text>jurisdiction</text></inputExpression></input>
|
||||||
|
<output id="JOut_1" name="jurisdictionOk" typeRef="boolean"/>
|
||||||
|
<rule id="JR_LV"><inputEntry><text>"LV"</text></inputEntry><outputEntry><text>true</text></outputEntry></rule>
|
||||||
|
<rule id="JR_EU"><inputEntry><text>"EU"</text></inputEntry><outputEntry><text>true</text></outputEntry></rule>
|
||||||
|
<rule id="JR_EEA"><inputEntry><text>"EEA"</text></inputEntry><outputEntry><text>true</text></outputEntry></rule>
|
||||||
|
<rule id="JR_CH"><inputEntry><text>"CH"</text></inputEntry><outputEntry><text>true</text></outputEntry></rule>
|
||||||
|
<rule id="JR_Other"><inputEntry><text>not("LV","EU","EEA","CH")</text></inputEntry><outputEntry><text>false</text></outputEntry></rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<!-- === MAIN ELIGIBILITY DECISION (Nolikuma 6., 7., 10., 13.p.) === -->
|
||||||
|
<decision id="Decision_Eligibility" name="EligibilityDecision">
|
||||||
|
<variable name="eligibilityResult" typeRef="string"/>
|
||||||
|
<informationRequirement><requiredInput href="#In_IsLegalEntity"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredDecision href="#Decision_JurisdictionOk"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_SubmittedInTime"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_DocumentsInLatvian"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_HasESignature"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_IsForbiddenAI"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_HasExclusion"/></informationRequirement>
|
||||||
|
|
||||||
|
<decisionTable id="DT_Eligibility" hitPolicy="FIRST">
|
||||||
|
<input id="IC_1"><inputExpression typeRef="boolean"><text>isLegalEntity</text></inputExpression></input>
|
||||||
|
<input id="IC_2"><inputExpression typeRef="boolean"><text>jurisdictionOk</text></inputExpression></input>
|
||||||
|
<input id="IC_3"><inputExpression typeRef="boolean"><text>submittedInTime</text></inputExpression></input>
|
||||||
|
<input id="IC_4"><inputExpression typeRef="boolean"><text>documentsInLatvian</text></inputExpression></input>
|
||||||
|
<input id="IC_5"><inputExpression typeRef="boolean"><text>hasQualifiedESignatureAndTimestamp</text></inputExpression></input>
|
||||||
|
<input id="IC_6"><inputExpression typeRef="boolean"><text>isForbiddenAIPractice</text></inputExpression></input>
|
||||||
|
<input id="IC_7"><inputExpression typeRef="boolean"><text>hasExclusionUnderLaw8p3</text></inputExpression></input>
|
||||||
|
<output id="OC_Status" name="status" typeRef="string"/>
|
||||||
|
<output id="OC_Reason" name="reason" typeRef="string"/>
|
||||||
|
<output id="OC_Ref" name="nolikumaReference" typeRef="string"/>
|
||||||
|
|
||||||
|
<!-- Hard rejections -->
|
||||||
|
<rule id="R01">
|
||||||
|
<inputEntry><text>false</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"REJECT"</text></outputEntry><outputEntry><text>"Iesniedzējs nav juridiska persona"</text></outputEntry><outputEntry><text>"6.1.p."</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="R02">
|
||||||
|
<inputEntry><text>true</text></inputEntry><inputEntry><text>false</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"REJECT"</text></outputEntry><outputEntry><text>"Jurisdikcija nav LV/ES/EEZ/CH"</text></outputEntry><outputEntry><text>"6.1.p."</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="R03">
|
||||||
|
<inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>false</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"REJECT"</text></outputEntry><outputEntry><text>"Iesniegums nav saņemts termiņā"</text></outputEntry><outputEntry><text>"7.p., 8.p."</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="R04">
|
||||||
|
<inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"REJECT"</text></outputEntry><outputEntry><text>"MI sistēma ir aizliegtā prakse (Regulas 5.p.)"</text></outputEntry><outputEntry><text>"6.2.p."</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="R05">
|
||||||
|
<inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>false</text></inputEntry><inputEntry><text>true</text></inputEntry>
|
||||||
|
<outputEntry><text>"REJECT"</text></outputEntry><outputEntry><text>"Uz iesniedzēju attiecas Likuma 8.p.3.d. izslēdzošie nosacījumi"</text></outputEntry><outputEntry><text>"6.3.p."</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<!-- Fixable deficiencies -->
|
||||||
|
<rule id="R06">
|
||||||
|
<inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>false</text></inputEntry><inputEntry><text>-</text></inputEntry><inputEntry><text>false</text></inputEntry><inputEntry><text>false</text></inputEntry>
|
||||||
|
<outputEntry><text>"FIX_OR_REJECT"</text></outputEntry><outputEntry><text>"Dokumenti nav latviešu valodā"</text></outputEntry><outputEntry><text>"10.p., 12.p."</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="R07">
|
||||||
|
<inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>false</text></inputEntry><inputEntry><text>false</text></inputEntry><inputEntry><text>false</text></inputEntry>
|
||||||
|
<outputEntry><text>"FIX_OR_REJECT"</text></outputEntry><outputEntry><text>"Trūkst drošā elektroniskā paraksta vai laika zīmoga"</text></outputEntry><outputEntry><text>"7.p., 12.p."</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<!-- Pass -->
|
||||||
|
<rule id="R08">
|
||||||
|
<inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>true</text></inputEntry><inputEntry><text>false</text></inputEntry><inputEntry><text>false</text></inputEntry>
|
||||||
|
<outputEntry><text>"ELIGIBLE"</text></outputEntry><outputEntry><text>"Atbilst visām prasībām — virzīt uz vērtēšanu"</text></outputEntry><outputEntry><text>"13.p."</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
</definitions>
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/"
|
||||||
|
id="Definitions_Scoring"
|
||||||
|
name="Vērtēšanas, punktu un reitinga aprēķins"
|
||||||
|
namespace="https://processgit.org/VDAA/mi-sandbox-atlase/dmn/scoring">
|
||||||
|
|
||||||
|
<!-- === INPUTS: Commission ratings 0-5 for each criterion === -->
|
||||||
|
<inputData id="In_C1_Innovation" name="innovationRating"/>
|
||||||
|
<inputData id="In_C2_Transformation" name="transformationRating"/>
|
||||||
|
<inputData id="In_C3_Readiness" name="readinessRating"/>
|
||||||
|
<inputData id="In_C4_HighRisk" name="highRiskRating"/>
|
||||||
|
<inputData id="In_C5_RegulatoryNeed" name="regulatoryNeedRating"/>
|
||||||
|
|
||||||
|
<!-- === BKM: Weighted score formula (Nolikuma 1.pielikums) === -->
|
||||||
|
<businessKnowledgeModel id="BKM_WeightedScore" name="weightedScore">
|
||||||
|
<encapsulatedLogic kind="FEEL">
|
||||||
|
<formalParameter name="weight" typeRef="number"/>
|
||||||
|
<formalParameter name="rating" typeRef="number"/>
|
||||||
|
<literalExpression><text>weight * (rating / 5)</text></literalExpression>
|
||||||
|
</encapsulatedLogic>
|
||||||
|
</businessKnowledgeModel>
|
||||||
|
|
||||||
|
<!-- === INDIVIDUAL CRITERION SCORES === -->
|
||||||
|
<!-- Kr.1: Inovitāte un tirgus nepilnību novēršana (svars 20) -->
|
||||||
|
<decision id="Dec_C1" name="InnovationScore">
|
||||||
|
<variable name="innovationScore" typeRef="number"/>
|
||||||
|
<knowledgeRequirement><requiredKnowledge href="#BKM_WeightedScore"/></knowledgeRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_C1_Innovation"/></informationRequirement>
|
||||||
|
<literalExpression><text>weightedScore(20, innovationRating)</text></literalExpression>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<!-- Kr.2: Ieguldījums attīstības plānošanas un digitālās transformācijas mērķos (svars 15) -->
|
||||||
|
<decision id="Dec_C2" name="TransformationScore">
|
||||||
|
<variable name="transformationScore" typeRef="number"/>
|
||||||
|
<knowledgeRequirement><requiredKnowledge href="#BKM_WeightedScore"/></knowledgeRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_C2_Transformation"/></informationRequirement>
|
||||||
|
<literalExpression><text>weightedScore(15, transformationRating)</text></literalExpression>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<!-- Kr.3: Tehniskā gatavība un resursu nodrošinājums (svars 30) -->
|
||||||
|
<decision id="Dec_C3" name="ReadinessScore">
|
||||||
|
<variable name="readinessScore" typeRef="number"/>
|
||||||
|
<knowledgeRequirement><requiredKnowledge href="#BKM_WeightedScore"/></knowledgeRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_C3_Readiness"/></informationRequirement>
|
||||||
|
<literalExpression><text>weightedScore(30, readinessRating)</text></literalExpression>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<!-- Kr.4: Augsta riska MI sistēmas kvalifikācija (svars 10) -->
|
||||||
|
<decision id="Dec_C4" name="HighRiskScore">
|
||||||
|
<variable name="highRiskScore" typeRef="number"/>
|
||||||
|
<knowledgeRequirement><requiredKnowledge href="#BKM_WeightedScore"/></knowledgeRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_C4_HighRisk"/></informationRequirement>
|
||||||
|
<literalExpression><text>weightedScore(10, highRiskRating)</text></literalExpression>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<!-- Kr.5: Regulatīvās vides pamatojums un nepieciešamība (svars 25) -->
|
||||||
|
<decision id="Dec_C5" name="RegulatoryNeedScore">
|
||||||
|
<variable name="regulatoryNeedScore" typeRef="number"/>
|
||||||
|
<knowledgeRequirement><requiredKnowledge href="#BKM_WeightedScore"/></knowledgeRequirement>
|
||||||
|
<informationRequirement><requiredInput href="#In_C5_RegulatoryNeed"/></informationRequirement>
|
||||||
|
<literalExpression><text>weightedScore(25, regulatoryNeedRating)</text></literalExpression>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<!-- === TOTAL SCORE (max 100) === -->
|
||||||
|
<decision id="Dec_Total" name="TotalScore">
|
||||||
|
<variable name="totalScore" typeRef="number"/>
|
||||||
|
<informationRequirement><requiredDecision href="#Dec_C1"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredDecision href="#Dec_C2"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredDecision href="#Dec_C3"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredDecision href="#Dec_C4"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredDecision href="#Dec_C5"/></informationRequirement>
|
||||||
|
<literalExpression><text>innovationScore + transformationScore + readinessScore + highRiskScore + regulatoryNeedScore</text></literalExpression>
|
||||||
|
</decision>
|
||||||
|
|
||||||
|
<!-- === TIEBREAKER ORDER (Nolikuma 1.pielikums, Neizšķirta gadījumi) === -->
|
||||||
|
<decision id="Dec_TieBreak" name="TieBreakVector">
|
||||||
|
<variable name="tieBreakVector" typeRef="list"/>
|
||||||
|
<informationRequirement><requiredDecision href="#Dec_C3"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredDecision href="#Dec_C5"/></informationRequirement>
|
||||||
|
<informationRequirement><requiredDecision href="#Dec_C1"/></informationRequirement>
|
||||||
|
<literalExpression>
|
||||||
|
<text>[readinessScore, regulatoryNeedScore, innovationScore]</text>
|
||||||
|
</literalExpression>
|
||||||
|
</decision>
|
||||||
|
</definitions>
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/"
|
||||||
|
id="Definitions_TRL"
|
||||||
|
name="TRL līmeņu pārvēršana 0-5 vērtējumā"
|
||||||
|
namespace="https://processgit.org/VDAA/mi-sandbox-atlase/dmn/trl">
|
||||||
|
|
||||||
|
<!-- Nolikuma 2.pielikums: MI sistēmas gatavības līmeņi -->
|
||||||
|
<inputData id="In_TRL" name="trlLevel"/>
|
||||||
|
|
||||||
|
<decision id="Decision_TRLMapping" name="TRLMapping">
|
||||||
|
<variable name="readinessRatingFromTRL" typeRef="number"/>
|
||||||
|
<informationRequirement><requiredInput href="#In_TRL"/></informationRequirement>
|
||||||
|
|
||||||
|
<decisionTable id="DT_TRL" hitPolicy="UNIQUE">
|
||||||
|
<input id="TRL_In"><inputExpression typeRef="number"><text>trlLevel</text></inputExpression></input>
|
||||||
|
<output id="TRL_Score" name="score" typeRef="number"/>
|
||||||
|
<output id="TRL_Label" name="label" typeRef="string"/>
|
||||||
|
<output id="TRL_Sandbox" name="sandboxReadiness" typeRef="string"/>
|
||||||
|
|
||||||
|
<rule id="TRL_R1">
|
||||||
|
<inputEntry><text>[1..2]</text></inputEntry>
|
||||||
|
<outputEntry><text>0</text></outputEntry>
|
||||||
|
<outputEntry><text>"Pamatprincipu novērojumi / formulēta koncepcija"</text></outputEntry>
|
||||||
|
<outputEntry><text>"Par agru regulatīvai videi"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="TRL_R2">
|
||||||
|
<inputEntry><text>[3..4]</text></inputEntry>
|
||||||
|
<outputEntry><text>2</text></outputEntry>
|
||||||
|
<outputEntry><text>"Koncepcijas pārbaude / validācija laboratorijā"</text></outputEntry>
|
||||||
|
<outputEntry><text>"Ierobežota gatavība"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="TRL_R3">
|
||||||
|
<inputEntry><text>5</text></inputEntry>
|
||||||
|
<outputEntry><text>3</text></outputEntry>
|
||||||
|
<outputEntry><text>"Validācija mākslīgi radītā vidē"</text></outputEntry>
|
||||||
|
<outputEntry><text>"Minimālais briedums pilotēšanai"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="TRL_R4">
|
||||||
|
<inputEntry><text>[6..7]</text></inputEntry>
|
||||||
|
<outputEntry><text>4</text></outputEntry>
|
||||||
|
<outputEntry><text>"Demonstrācija mākslīgi radītā / reālā vidē"</text></outputEntry>
|
||||||
|
<outputEntry><text>"Laba gatavība testēšanai"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="TRL_R5">
|
||||||
|
<inputEntry><text>[8..9]</text></inputEntry>
|
||||||
|
<outputEntry><text>5</text></outputEntry>
|
||||||
|
<outputEntry><text>"Sistēma pabeigta un pārbaudīta / ekspluatācijā"</text></outputEntry>
|
||||||
|
<outputEntry><text>"Pilna gatavība; regulatīvā vide atbilstības/uzraudzības jautājumiem"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
</definitions>
|
||||||
35
processes/L4/vdaa.mi.sandbox.atlase/docs/CHANGELOG.md
Normal file
35
processes/L4/vdaa.mi.sandbox.atlase/docs/CHANGELOG.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## [0.2.0] — 2026-03-07
|
||||||
|
|
||||||
|
### Pievienots
|
||||||
|
- UAPF SSOT atbilstība: `kind`, `cornerstones`, `owners`, `lifecycle` manifestā
|
||||||
|
- Enterprise index ar `kind: uapf.enterprise.index` un L0 līmeni
|
||||||
|
- Pareiza L4 pakotnes struktūra: `processes/L4/vdaa.mi.sandbox.atlase/`
|
||||||
|
- DMN 03: TRL līmeņu kartējums (2.pielikums) kā atsevišķs lēmumu modelis
|
||||||
|
- DMN failu pārsaukšana uz `.dmn.xml` (UAPF spec / bpmn.io saderība)
|
||||||
|
- CMMN gadījuma modelis komisijas vērtēšanai ar diskrecionāriem soļiem
|
||||||
|
- Resursu kartējums UAPF `targets + bindings` formātā
|
||||||
|
- AI aģenta konfigurācija (`agent.chat.yaml`) ar MCP rīku saistījumiem
|
||||||
|
- AI novērtēšanas guardrails (`guardrails/ai-evaluation-rules.yaml`)
|
||||||
|
- ProcessGit viewer GUI (`processgit.viewer.json` + `viewer/komisija-vertesana.html`)
|
||||||
|
- Trūkumu novēršanas apakšplūsma BPMN ar 5 d.d. taimeri (Nolikuma 12.p.)
|
||||||
|
- Jurisdikcijas pārbaude DMN (LV/EU/EEA/CH, Nolikuma 6.1.p.)
|
||||||
|
- MCP endpoint deklarācija manifestā (`exposure.mcp`)
|
||||||
|
- Audita notikumu definīcija resursu kartējumā
|
||||||
|
- EU AI Act atbilstības dokumentācija guardrails failā
|
||||||
|
|
||||||
|
### Mainīts
|
||||||
|
- Manifestu formāts no custom JSON uz UAPF-spec YAML
|
||||||
|
- Enterprise index no custom uz UAPF `kind: uapf.enterprise.index`
|
||||||
|
- Atsevišķi resources/mapping faili apvienoti `resources/mappings.yaml`
|
||||||
|
- BPMN papildināts ar jauniem uzdevumu tipiem (sendTask, receiveTask, boundaryEvent)
|
||||||
|
|
||||||
|
### Noņemts
|
||||||
|
- `manifest.json` (aizstāts ar `uapf.yaml`)
|
||||||
|
- Vecais DMN bez `.xml` paplašinājuma
|
||||||
|
- Tukšais `cmmn/.gitkeep`
|
||||||
|
|
||||||
|
## [0.1.0-demo] — 2026-03-07
|
||||||
|
|
||||||
|
- Sākotnējais demonstrācijas melnraksts
|
||||||
29
processes/L4/vdaa.mi.sandbox.atlase/docs/source-reference.md
Normal file
29
processes/L4/vdaa.mi.sandbox.atlase/docs/source-reference.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Avota atsauces
|
||||||
|
|
||||||
|
Šī UAPF pakotne modelē **Speciālās regulatīvās vides mākslīgā intelekta sistēmu
|
||||||
|
attīstībai projektu iesniegumu atlases nolikumu**, ko publicē VDAA saskaņā ar
|
||||||
|
Mākslīgā intelekta centra likumu un MK noteikumiem Nr.12.
|
||||||
|
|
||||||
|
## Normatīvā bāze
|
||||||
|
|
||||||
|
| Dokuments | Atsauce modelī |
|
||||||
|
|---|---|
|
||||||
|
| Mākslīgā intelekta centra likums | Likuma 4.p.1.d., 8.p.3.d. |
|
||||||
|
| MK noteikumi Nr.12 | 10.p., 13.p., 14.p. |
|
||||||
|
| Regula (ES) 2024/1689 (EU AI Act) | 3.p.1.pk., 5.p., 3.pielikums |
|
||||||
|
| Nolikuma 1.pielikums | Vērtēšanas kritēriji, svari, enkuri |
|
||||||
|
| Nolikuma 2.pielikums | TRL līmeņi un to kartējums |
|
||||||
|
|
||||||
|
## Nolikuma sadaļu kartējums uz artefaktiem
|
||||||
|
|
||||||
|
| Nolikuma sadaļa | UAPF artefakts |
|
||||||
|
|---|---|
|
||||||
|
| III. Iesniegšanas kārtība (5.–12.p.) | `bpmn/mi-sandbox-atlase.bpmn.xml` — sākums līdz Gateway |
|
||||||
|
| Izslēdzošie nosacījumi (6.p.) | `dmn/01-atbilstiba-un-izsledzosie.dmn.xml` |
|
||||||
|
| Trūkumu novēršana (12.p.) | BPMN sub-flow ar 5 d.d. taimeri |
|
||||||
|
| Kompetento institūciju atzinumi (13.-14.p.) | BPMN send/receive uzdevumi |
|
||||||
|
| IV. Vērtēšana (16.–22.p.) | `dmn/02-vertesanas-punkti.dmn.xml` |
|
||||||
|
| 2.pielikums — TRL līmeņi | `dmn/03-trl-vertejums.dmn.xml` |
|
||||||
|
| Komisijas vērtēšana (18.-19.p.) | `cmmn/vertesanas-lieta.cmmn.xml` |
|
||||||
|
| Neizšķirta gadījumi | DMN TieBreakVector lēmums |
|
||||||
|
| Lēmuma paziņošana (15., 20., 22.p.) | BPMN beigu posms |
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"applicationId": "DEMO-001",
|
||||||
|
"applicant": {
|
||||||
|
"isLegalEntity": true,
|
||||||
|
"jurisdiction": "LV",
|
||||||
|
"hasExclusionUnderLaw8p3": false
|
||||||
|
},
|
||||||
|
"submission": {
|
||||||
|
"submittedInTime": true,
|
||||||
|
"documentsInLatvian": true,
|
||||||
|
"hasQualifiedESignatureAndTimestamp": true
|
||||||
|
},
|
||||||
|
"aiSystem": {
|
||||||
|
"name": "ProcessGit AI Classification Engine",
|
||||||
|
"isForbiddenAIPractice": false,
|
||||||
|
"trlLevel": 7,
|
||||||
|
"highRiskCandidate": true,
|
||||||
|
"euAiActAnnexIIICategory": "5 — public authority decision support"
|
||||||
|
},
|
||||||
|
"commissionRatings": {
|
||||||
|
"innovationRating": 4,
|
||||||
|
"transformationRating": 4,
|
||||||
|
"readinessRating": 5,
|
||||||
|
"highRiskRating": 4,
|
||||||
|
"regulatoryNeedRating": 5
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"submissionDate": "2026-03-15",
|
||||||
|
"callDeadline": "2026-04-15",
|
||||||
|
"evaluationDeadline": "2026-05-30"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"applicationId": "DEMO-001",
|
||||||
|
"eligibilityResult": {
|
||||||
|
"status": "ELIGIBLE",
|
||||||
|
"reason": "Atbilst visām prasībām — virzīt uz vērtēšanu",
|
||||||
|
"nolikumaReference": "13.p.",
|
||||||
|
"jurisdictionCheck": {"jurisdiction": "LV", "jurisdictionOk": true}
|
||||||
|
},
|
||||||
|
"trlMapping": {
|
||||||
|
"trlLevel": 7,
|
||||||
|
"score": 4,
|
||||||
|
"label": "Demonstrācija mākslīgi radītā / reālā vidē",
|
||||||
|
"sandboxReadiness": "Laba gatavība testēšanai"
|
||||||
|
},
|
||||||
|
"scoringResult": {
|
||||||
|
"criteria": [
|
||||||
|
{"nr": 1, "name": "Inovitāte", "weight": 20, "rating": 4, "score": 16.0},
|
||||||
|
{"nr": 2, "name": "Digitālā transformācija", "weight": 15, "rating": 4, "score": 12.0},
|
||||||
|
{"nr": 3, "name": "Tehniskā gatavība", "weight": 30, "rating": 5, "score": 30.0},
|
||||||
|
{"nr": 4, "name": "Augsta riska MI", "weight": 10, "rating": 4, "score": 8.0},
|
||||||
|
{"nr": 5, "name": "Regulatīvās vides pamatojums", "weight": 25, "rating": 5, "score": 25.0}
|
||||||
|
],
|
||||||
|
"totalScore": 91.0,
|
||||||
|
"maxPossible": 100,
|
||||||
|
"tieBreakVector": [30.0, 25.0, 16.0]
|
||||||
|
},
|
||||||
|
"aiPreAssessment": {
|
||||||
|
"recommendation": "RECOMMEND_APPROVE",
|
||||||
|
"confidence": 0.87,
|
||||||
|
"reasoning": [
|
||||||
|
{
|
||||||
|
"criterion": "Tehniskā gatavība",
|
||||||
|
"observation": "TRL7 — sistēmas prototips demonstrēts reālā vidē. Atbilst 4/5 enkuram.",
|
||||||
|
"nolikumaRef": "1.pielikums, Kr.3; 2.pielikums"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"criterion": "Regulatīvās vides pamatojums",
|
||||||
|
"observation": "AI sistēma apstrādā valdības procesus — nepieciešama strukturēta testēšana ar kompetento iestāžu uzraudzību.",
|
||||||
|
"nolikumaRef": "1.pielikums, Kr.5"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"flags": [],
|
||||||
|
"disclaimers": [
|
||||||
|
"Šis ir AI aģenta ieteikums. Galīgais lēmums ir komisijas kompetencē."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"decisionRecommendation": "Virzīt apstiprināšanai — augstākais punktu skaits",
|
||||||
|
"auditTrail": [
|
||||||
|
{"event": "application-received", "timestamp": "2026-03-15T10:00:00Z"},
|
||||||
|
{"event": "eligibility-evaluated", "timestamp": "2026-03-15T10:01:00Z"},
|
||||||
|
{"event": "sent-to-authorities", "timestamp": "2026-03-18T09:00:00Z"},
|
||||||
|
{"event": "opinions-received", "timestamp": "2026-04-10T15:30:00Z"},
|
||||||
|
{"event": "ai-pre-assessment-run", "timestamp": "2026-04-11T08:00:00Z"},
|
||||||
|
{"event": "commission-scores-entered", "timestamp": "2026-04-12T14:00:00Z"},
|
||||||
|
{"event": "scores-calculated", "timestamp": "2026-04-12T14:01:00Z"},
|
||||||
|
{"event": "decision-prepared", "timestamp": "2026-04-14T10:00:00Z"},
|
||||||
|
{"event": "decision-issued", "timestamp": "2026-04-14T11:00:00Z"}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
# AI Evaluation Guardrails — MI sandbox atlases process
|
||||||
|
# Šis fails definē ierobežojumus un noteikumus AI aģenta iesaistei vērtēšanā.
|
||||||
|
#
|
||||||
|
# Konteksts: EU AI Act (Regula 2024/1689), Nolikuma prasības, human-in-the-loop princips.
|
||||||
|
# AI aģents darbojas kā "asistents" (mode: assisted), nevis kā lēmumu pieņēmējs.
|
||||||
|
|
||||||
|
guardrails:
|
||||||
|
version: "1.0"
|
||||||
|
appliesTo: agent.evaluation_assistant
|
||||||
|
|
||||||
|
# === FUNDAMENTĀLIE PRINCIPI ===
|
||||||
|
principles:
|
||||||
|
- id: HUMAN_FINAL_DECISION
|
||||||
|
rule: "AI aģenta izvade ir tikai ieteikums. Galīgais lēmums vienmēr ir komisijas."
|
||||||
|
enforcement: hard
|
||||||
|
reference: "Nolikuma 20.p."
|
||||||
|
|
||||||
|
- id: TRANSPARENCY
|
||||||
|
rule: "Katrs AI izvades elements ietver pamatojumu (reasoning chain) un atsauci uz nolikuma punktu."
|
||||||
|
enforcement: hard
|
||||||
|
|
||||||
|
- id: NO_SCORE_OVERRIDE
|
||||||
|
rule: "AI nedrīkst mainīt komisijas piešķirtos 0–5 vērtējumus. AI var tikai ieteikt."
|
||||||
|
enforcement: hard
|
||||||
|
|
||||||
|
- id: AUDIT_TRAIL
|
||||||
|
rule: "Katra AI aģenta darbība tiek reģistrēta audita žurnālā ar laika zīmogu."
|
||||||
|
enforcement: hard
|
||||||
|
|
||||||
|
# === IEVADES VALIDĀCIJA ===
|
||||||
|
input_validation:
|
||||||
|
- check: "Iesnieguma dati atbilst candidate-input shēmai"
|
||||||
|
action: reject_if_invalid
|
||||||
|
- check: "TRL līmenis ir skaitlis [1..9]"
|
||||||
|
action: reject_if_invalid
|
||||||
|
- check: "Vērtējumi ir skaitļi [0..5]"
|
||||||
|
action: reject_if_invalid
|
||||||
|
- check: "Nav personas datu ievadē (GDPR compliance)"
|
||||||
|
action: flag_and_redact
|
||||||
|
|
||||||
|
# === IZVADES IEROBEŽOJUMI ===
|
||||||
|
output_constraints:
|
||||||
|
format: structured_json
|
||||||
|
required_fields:
|
||||||
|
- field: recommendation
|
||||||
|
type: enum
|
||||||
|
values: ["RECOMMEND_APPROVE", "RECOMMEND_REVIEW", "RECOMMEND_REJECT", "INSUFFICIENT_DATA"]
|
||||||
|
- field: confidence
|
||||||
|
type: number
|
||||||
|
range: [0.0, 1.0]
|
||||||
|
- field: reasoning
|
||||||
|
type: array
|
||||||
|
minItems: 1
|
||||||
|
itemSchema:
|
||||||
|
criterion: string
|
||||||
|
observation: string
|
||||||
|
nolikumaRef: string
|
||||||
|
- field: flags
|
||||||
|
type: array
|
||||||
|
description: "Brīdinājumi, ko komisija jāpārskata"
|
||||||
|
- field: disclaimers
|
||||||
|
type: array
|
||||||
|
minItems: 1
|
||||||
|
mustInclude: "Šis ir AI aģenta ieteikums. Galīgais lēmums ir komisijas kompetencē."
|
||||||
|
|
||||||
|
# === AIZLIEGTĀS DARBĪBAS ===
|
||||||
|
prohibited_actions:
|
||||||
|
- "Piešķirt galīgo punktu skaitu"
|
||||||
|
- "Mainīt komisijas vērtējumus"
|
||||||
|
- "Pieņemt lēmumu par apstiprināšanu/noraidīšanu"
|
||||||
|
- "Salīdzināt konkrētus iesniedzējus savā starpā (bias prevention)"
|
||||||
|
- "Izmantot ārējos datus, kas nav iesnieguma daļa"
|
||||||
|
- "Sazināties tieši ar iesniedzēju"
|
||||||
|
|
||||||
|
# === UZRAUDZĪBA ===
|
||||||
|
monitoring:
|
||||||
|
logging:
|
||||||
|
destination: system.audit_log
|
||||||
|
events:
|
||||||
|
- ai-invocation-started
|
||||||
|
- ai-input-validated
|
||||||
|
- ai-output-generated
|
||||||
|
- ai-output-reviewed-by-human
|
||||||
|
- ai-output-accepted
|
||||||
|
- ai-output-overridden
|
||||||
|
alerting:
|
||||||
|
- condition: "confidence < 0.3"
|
||||||
|
action: "Flag for mandatory human review"
|
||||||
|
- condition: "AI output contradicts DMN result"
|
||||||
|
action: "Flag discrepancy, require commission justification"
|
||||||
|
drift_detection:
|
||||||
|
enabled: true
|
||||||
|
baseline: "examples/expected-output.example.json"
|
||||||
|
threshold: 0.2
|
||||||
|
|
||||||
|
# === EU AI ACT ATBILSTĪBA ===
|
||||||
|
eu_ai_act_compliance:
|
||||||
|
riskCategory: "high-risk-support-system"
|
||||||
|
article3_qualification: >-
|
||||||
|
AI aģents secina no iesnieguma datiem, kā ģenerēt novērtējuma ieteikumus,
|
||||||
|
tādējādi atbilst Regulas 3.panta 1.punkta MI sistēmas definīcijai.
|
||||||
|
humanOversight: "Regulas 14.pants — komisija pārbauda katru AI ieteikumu"
|
||||||
|
transparency: "Regulas 13.pants — pamatojums un atsauces pieejamas"
|
||||||
|
dataGovernance: "Regulas 10.pants — tikai iesnieguma dati, nav ārējie avoti"
|
||||||
|
technicalDocumentation: "Regulas 11.pants — šis guardrails fails + mappings.yaml"
|
||||||
21
processes/L4/vdaa.mi.sandbox.atlase/metadata/lifecycle.yaml
Normal file
21
processes/L4/vdaa.mi.sandbox.atlase/metadata/lifecycle.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
lifecycle:
|
||||||
|
status: draft
|
||||||
|
maturity: concept-demonstrator
|
||||||
|
firstPublished: "2026-03-07"
|
||||||
|
lastModified: "2026-03-07"
|
||||||
|
changeControl:
|
||||||
|
model: pull-request
|
||||||
|
requiresReview: true
|
||||||
|
branchProtection: true
|
||||||
|
releasePolicy:
|
||||||
|
tagging: semantic-versioning
|
||||||
|
immutableSnapshots: true
|
||||||
|
changelog: docs/CHANGELOG.md
|
||||||
|
usageConstraints:
|
||||||
|
- "Nav paredzēts oficiālai lēmumu pieņemšanai"
|
||||||
|
- "Demonstrācijas mērķiem — procesa modelēšanas pieejas validācijai"
|
||||||
|
- "AI aģenta novērtējums ir tikai ieteikums, neaizstāj komisijas lēmumu"
|
||||||
|
legalDisclaimer: >-
|
||||||
|
Šis ir demonstrācijas projekts. Tas nav oficiāls VDAA vai MI centra
|
||||||
|
vērtēšanas instruments, nav juridiski saistošs un neaizstāj nolikuma
|
||||||
|
tekstu vai iestādes pieņemto lēmumu.
|
||||||
15
processes/L4/vdaa.mi.sandbox.atlase/metadata/ownership.yaml
Normal file
15
processes/L4/vdaa.mi.sandbox.atlase/metadata/ownership.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
owner:
|
||||||
|
packageOwner: "Algomation / ProcessGit"
|
||||||
|
businessOwner: "VDAA MI centrs (demo kontekstā)"
|
||||||
|
technicalOwner: "Algomation Europe Oy"
|
||||||
|
contact: info@algomation.io
|
||||||
|
review:
|
||||||
|
approvers:
|
||||||
|
- role: business-owner
|
||||||
|
description: "Apstiprina procesa un lēmumu loģikas atbilstību nolikumam"
|
||||||
|
- role: technical-owner
|
||||||
|
description: "Apstiprina BPMN/DMN/CMMN tehnisko korektumu un UAPF atbilstību"
|
||||||
|
classification:
|
||||||
|
confidentiality: public-demo
|
||||||
|
dataClassification: non-personal
|
||||||
|
note: "Šī pakotne nesatur personas datus. Vērtēšanas piemēri ir fiktīvi."
|
||||||
32
processes/L4/vdaa.mi.sandbox.atlase/processgit.viewer.json
Normal file
32
processes/L4/vdaa.mi.sandbox.atlase/processgit.viewer.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"viewers": [
|
||||||
|
{
|
||||||
|
"id": "komisija-vertesana",
|
||||||
|
"primary_pattern": "examples/candidate-input.example.json",
|
||||||
|
"type": "html",
|
||||||
|
"entry": "viewer/komisija-vertesana.html",
|
||||||
|
"edit_allow": [
|
||||||
|
"examples/candidate-input.example.json"
|
||||||
|
],
|
||||||
|
"targets": {
|
||||||
|
"dmn_eligibility": "dmn/01-atbilstiba-un-izsledzosie.dmn.xml",
|
||||||
|
"dmn_scoring": "dmn/02-vertesanas-punkti.dmn.xml",
|
||||||
|
"dmn_trl": "dmn/03-trl-vertejums.dmn.xml",
|
||||||
|
"mappings": "resources/mappings.yaml",
|
||||||
|
"guardrails": "guardrails/ai-evaluation-rules.yaml",
|
||||||
|
"expected_output": "examples/expected-output.example.json"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "guardrails-viewer",
|
||||||
|
"primary_pattern": "guardrails/ai-evaluation-rules.yaml",
|
||||||
|
"type": "html",
|
||||||
|
"entry": "viewer/komisija-vertesana.html",
|
||||||
|
"edit_allow": [],
|
||||||
|
"targets": {
|
||||||
|
"guardrails": "guardrails/ai-evaluation-rules.yaml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
154
processes/L4/vdaa.mi.sandbox.atlase/resources/mappings.yaml
Normal file
154
processes/L4/vdaa.mi.sandbox.atlase/resources/mappings.yaml
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
# UAPF Resource Mappings — vdaa.mi.sandbox.atlase v0.2.0
|
||||||
|
# Format: targets (who/what) + bindings (what does what)
|
||||||
|
|
||||||
|
targets:
|
||||||
|
# Human roles
|
||||||
|
- id: role.case_officer
|
||||||
|
type: human_role
|
||||||
|
name: "Centra lietvedības darbinieks"
|
||||||
|
description: "Reģistrē iesniegumus, pārbauda pilnīgumu, nosūta kompetentajām institūcijām"
|
||||||
|
|
||||||
|
- id: role.commission
|
||||||
|
type: human_role
|
||||||
|
name: "Vērtēšanas komisija"
|
||||||
|
description: "Nolikuma 16.p. — izveidota ar Centra direktora rīkojumu"
|
||||||
|
|
||||||
|
- id: role.external_expert
|
||||||
|
type: human_role
|
||||||
|
name: "Ārējais eksperts"
|
||||||
|
description: "Nolikuma 19.p. — var piesaistīt vērtēšanas vajadzībām"
|
||||||
|
|
||||||
|
- id: role.competent_authority
|
||||||
|
type: human_role
|
||||||
|
name: "Kompetentā institūcija"
|
||||||
|
description: "Nolikuma 2.10.p. — sniedz atzinumu par projekta iesniegumu"
|
||||||
|
|
||||||
|
# Systems
|
||||||
|
- id: system.dmn_engine
|
||||||
|
type: system_api
|
||||||
|
name: "DMN izpildes dzinējs"
|
||||||
|
description: "Izpilda lēmumu tabulas (atbilstība, punktu aprēķins, TRL kartējums)"
|
||||||
|
|
||||||
|
- id: system.audit_log
|
||||||
|
type: system_api
|
||||||
|
name: "Audita žurnāls"
|
||||||
|
description: "Reģistrē visus procesa notikumus ar laika zīmogu"
|
||||||
|
|
||||||
|
# AI agents
|
||||||
|
- id: agent.evaluation_assistant
|
||||||
|
type: ai_agent
|
||||||
|
name: "MI vērtēšanas asistents (demo)"
|
||||||
|
description: >-
|
||||||
|
AI aģents, kas veic iepriekšējo novērtējumu pirms komisijas sēdes:
|
||||||
|
pārbauda TRL līmeni, analizē inovācijas pamatojumu, novērtē regulatīvās
|
||||||
|
vides nepieciešamību. Darbojas tikai kā palīgs — galīgais lēmums ir komisijas.
|
||||||
|
constraints:
|
||||||
|
mode: assisted
|
||||||
|
humanOversight: mandatory
|
||||||
|
outputType: recommendation-only
|
||||||
|
guardrails: guardrails/ai-evaluation-rules.yaml
|
||||||
|
|
||||||
|
# MCP tools
|
||||||
|
- id: mcp.check_eligibility
|
||||||
|
type: mcp_tool
|
||||||
|
name: "check_eligibility"
|
||||||
|
endpoint: "dmn/01-atbilstiba-un-izsledzosie.dmn.xml#EligibilityDecision"
|
||||||
|
|
||||||
|
- id: mcp.calculate_score
|
||||||
|
type: mcp_tool
|
||||||
|
name: "calculate_score"
|
||||||
|
endpoint: "dmn/02-vertesanas-punkti.dmn.xml#TotalScore"
|
||||||
|
|
||||||
|
- id: mcp.map_trl
|
||||||
|
type: mcp_tool
|
||||||
|
name: "map_trl_level"
|
||||||
|
endpoint: "dmn/03-trl-vertejums.dmn.xml#TRLMapping"
|
||||||
|
|
||||||
|
bindings:
|
||||||
|
# Phase 1: Registration
|
||||||
|
- source: {type: bpmn.userTask, ref: Task_Register}
|
||||||
|
targetId: role.case_officer
|
||||||
|
mode: manual
|
||||||
|
output: applicationRegistered
|
||||||
|
|
||||||
|
- source: {type: bpmn.businessRuleTask, ref: Task_EligibilityDMN}
|
||||||
|
targetId: system.dmn_engine
|
||||||
|
mode: autonomous
|
||||||
|
usesDecision: dmn/01-atbilstiba-un-izsledzosie.dmn.xml#EligibilityDecision
|
||||||
|
output: eligibilityResult
|
||||||
|
|
||||||
|
# Phase 1b: Deficiency correction
|
||||||
|
- source: {type: bpmn.sendTask, ref: Task_RequestFix}
|
||||||
|
targetId: role.case_officer
|
||||||
|
mode: manual
|
||||||
|
output: deficiencyRequest
|
||||||
|
|
||||||
|
# Phase 2: Expert opinions
|
||||||
|
- source: {type: bpmn.sendTask, ref: Task_SendToAuthority}
|
||||||
|
targetId: role.case_officer
|
||||||
|
mode: manual
|
||||||
|
output: opinionRequest
|
||||||
|
|
||||||
|
- source: {type: bpmn.receiveTask, ref: Task_ReceiveOpinion}
|
||||||
|
targetId: role.competent_authority
|
||||||
|
mode: manual
|
||||||
|
output: expertOpinions
|
||||||
|
|
||||||
|
# Phase 3: Commission evaluation
|
||||||
|
- source: {type: bpmn.userTask, ref: Task_CommissionScoring}
|
||||||
|
targetId: role.commission
|
||||||
|
mode: manual
|
||||||
|
assistedBy:
|
||||||
|
- role.external_expert
|
||||||
|
- agent.evaluation_assistant
|
||||||
|
output: commissionRatings
|
||||||
|
|
||||||
|
- source: {type: bpmn.businessRuleTask, ref: Task_TRLMapping}
|
||||||
|
targetId: system.dmn_engine
|
||||||
|
mode: autonomous
|
||||||
|
usesDecision: dmn/03-trl-vertejums.dmn.xml#TRLMapping
|
||||||
|
output: trlScore
|
||||||
|
|
||||||
|
- source: {type: bpmn.businessRuleTask, ref: Task_ScoringDMN}
|
||||||
|
targetId: system.dmn_engine
|
||||||
|
mode: autonomous
|
||||||
|
usesDecision: dmn/02-vertesanas-punkti.dmn.xml#TotalScore
|
||||||
|
output: scoringResult
|
||||||
|
|
||||||
|
# Phase 4: Decision
|
||||||
|
- source: {type: bpmn.userTask, ref: Task_PrepareDecision}
|
||||||
|
targetId: role.commission
|
||||||
|
mode: manual
|
||||||
|
output: decisionRecommendation
|
||||||
|
|
||||||
|
- source: {type: bpmn.sendTask, ref: Task_NotifyApplicant}
|
||||||
|
targetId: role.case_officer
|
||||||
|
mode: manual
|
||||||
|
output: decisionNotification
|
||||||
|
|
||||||
|
# CMMN discretionary bindings
|
||||||
|
- source: {type: cmmn.humanTask, ref: HT_ExternalExpert}
|
||||||
|
targetId: role.external_expert
|
||||||
|
mode: manual
|
||||||
|
discretionary: true
|
||||||
|
|
||||||
|
- source: {type: cmmn.processTask, ref: PT_AIPreAssessment}
|
||||||
|
targetId: agent.evaluation_assistant
|
||||||
|
mode: assisted
|
||||||
|
discretionary: true
|
||||||
|
guardrails: guardrails/ai-evaluation-rules.yaml
|
||||||
|
|
||||||
|
audit:
|
||||||
|
logTarget: system.audit_log
|
||||||
|
events:
|
||||||
|
- {event: application-received, phase: registration}
|
||||||
|
- {event: eligibility-evaluated, phase: formal-check}
|
||||||
|
- {event: deficiency-requested, phase: formal-check}
|
||||||
|
- {event: deficiency-resolved, phase: formal-check}
|
||||||
|
- {event: sent-to-authorities, phase: expert-opinion}
|
||||||
|
- {event: opinions-received, phase: expert-opinion}
|
||||||
|
- {event: ai-pre-assessment-run, phase: commission, aiRelevant: true}
|
||||||
|
- {event: commission-scores-entered, phase: commission}
|
||||||
|
- {event: scores-calculated, phase: scoring}
|
||||||
|
- {event: decision-prepared, phase: decision}
|
||||||
|
- {event: decision-issued, phase: decision}
|
||||||
73
processes/L4/vdaa.mi.sandbox.atlase/uapf.yaml
Normal file
73
processes/L4/vdaa.mi.sandbox.atlase/uapf.yaml
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
kind: uapf.package
|
||||||
|
id: vdaa.mi.sandbox.atlase
|
||||||
|
name: "MI sandbox atlases process un vērtēšanas algoritms"
|
||||||
|
level: 4
|
||||||
|
version: "0.2.0"
|
||||||
|
|
||||||
|
cornerstones:
|
||||||
|
bpmn: true
|
||||||
|
dmn: true
|
||||||
|
cmmn: true
|
||||||
|
resources: true
|
||||||
|
|
||||||
|
owners:
|
||||||
|
- type: team
|
||||||
|
id: algomation
|
||||||
|
contact: info@algomation.io
|
||||||
|
|
||||||
|
lifecycle: draft
|
||||||
|
|
||||||
|
description: >-
|
||||||
|
UAPF Level 4 pakotne, kas modelē VDAA publicēto Speciālās regulatīvās vides
|
||||||
|
MI sistēmu attīstībai projektu iesniegumu atlases nolikumu kā mašīnlasāmu un
|
||||||
|
izpildāmu procesa + lēmumu modeli. Ietver BPMN procesu, DMN lēmumu tabulas,
|
||||||
|
CMMN gadījumu pārvaldību, resursu kartējumu un AI aģenta vērtēšanas konceptu.
|
||||||
|
|
||||||
|
artifacts:
|
||||||
|
bpmn:
|
||||||
|
- path: bpmn/mi-sandbox-atlase.bpmn.xml
|
||||||
|
role: primary-process
|
||||||
|
description: "Iesnieguma plūsma no saņemšanas līdz lēmumam"
|
||||||
|
dmn:
|
||||||
|
- path: dmn/01-atbilstiba-un-izsledzosie.dmn.xml
|
||||||
|
role: eligibility-gate
|
||||||
|
description: "Formālā atbilstība un izslēdzošie nosacījumi"
|
||||||
|
- path: dmn/02-vertesanas-punkti.dmn.xml
|
||||||
|
role: scoring-algorithm
|
||||||
|
description: "5 kritēriju svērtais punktu aprēķins un neizšķirta loģika"
|
||||||
|
- path: dmn/03-trl-vertejums.dmn.xml
|
||||||
|
role: trl-mapping
|
||||||
|
description: "TRL līmeņu pārvēršana 0–5 vērtējumā"
|
||||||
|
cmmn:
|
||||||
|
- path: cmmn/vertesanas-lieta.cmmn.xml
|
||||||
|
role: evaluation-case
|
||||||
|
description: "Komisijas vērtēšanas gadījuma pārvaldība ar diskrecionāriem soļiem"
|
||||||
|
resources:
|
||||||
|
- path: resources/mappings.yaml
|
||||||
|
role: execution-mapping
|
||||||
|
|
||||||
|
exposure:
|
||||||
|
mcp:
|
||||||
|
enabled: true
|
||||||
|
exposedEntrypoints:
|
||||||
|
- decision: dmn/01-atbilstiba-un-izsledzosie.dmn.xml#EligibilityDecision
|
||||||
|
tool: check_eligibility
|
||||||
|
- decision: dmn/02-vertesanas-punkti.dmn.xml#TotalScore
|
||||||
|
tool: calculate_score
|
||||||
|
- decision: dmn/03-trl-vertejums.dmn.xml#TRLMapping
|
||||||
|
tool: map_trl_level
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
- application
|
||||||
|
- applicant
|
||||||
|
- aiSystem
|
||||||
|
- expertOpinions
|
||||||
|
- commissionRatings
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
- eligibilityResult
|
||||||
|
- scoringResult
|
||||||
|
- rankingResult
|
||||||
|
- tieBreakResolution
|
||||||
|
- decisionRecommendation
|
||||||
|
- auditTrail
|
||||||
@@ -0,0 +1,511 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="lv">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>MI Sandbox — Komisijas vērtēšanas panelis</title>
|
||||||
|
<style>
|
||||||
|
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
|
||||||
|
:root {
|
||||||
|
--bg: #0f1117; --surface: #1a1d27; --surface2: #232733; --surface3: #2d3140;
|
||||||
|
--border: #363b4d; --text: #e8eaf0; --text2: #9ca3b8; --text3: #6b7394;
|
||||||
|
--accent: #6366f1; --accent2: #818cf8; --green: #22c55e; --green-bg: rgba(34,197,94,0.1);
|
||||||
|
--red: #ef4444; --red-bg: rgba(239,68,68,0.1); --amber: #f59e0b; --amber-bg: rgba(245,158,11,0.1);
|
||||||
|
--blue: #3b82f6; --blue-bg: rgba(59,130,246,0.1);
|
||||||
|
--radius: 8px; --radius-lg: 12px;
|
||||||
|
}
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
body { font-family: 'DM Sans', system-ui, sans-serif; background: var(--bg); color: var(--text); line-height: 1.5; }
|
||||||
|
.app { max-width: 960px; margin: 0 auto; padding: 20px; }
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
.header { display: flex; align-items: center; gap: 12px; margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid var(--border); }
|
||||||
|
.header-icon { font-size: 28px; }
|
||||||
|
.header h1 { font-size: 18px; font-weight: 600; letter-spacing: -0.3px; }
|
||||||
|
.header .badge { font-size: 11px; font-weight: 500; padding: 2px 8px; border-radius: 20px; background: var(--accent); color: white; margin-left: 8px; }
|
||||||
|
.header .sub { font-size: 13px; color: var(--text2); margin-top: 2px; }
|
||||||
|
|
||||||
|
/* Tabs */
|
||||||
|
.tabs { display: flex; gap: 2px; margin-bottom: 20px; background: var(--surface); border-radius: var(--radius); padding: 3px; }
|
||||||
|
.tab { flex: 1; padding: 8px 12px; text-align: center; font-size: 13px; font-weight: 500; cursor: pointer; border-radius: 6px; color: var(--text2); transition: all 0.15s; }
|
||||||
|
.tab:hover { color: var(--text); background: var(--surface2); }
|
||||||
|
.tab.active { background: var(--accent); color: white; }
|
||||||
|
|
||||||
|
/* Panels */
|
||||||
|
.panel { display: none; }
|
||||||
|
.panel.active { display: block; }
|
||||||
|
|
||||||
|
/* Cards */
|
||||||
|
.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 16px; margin-bottom: 12px; }
|
||||||
|
.card-title { font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text2); margin-bottom: 12px; }
|
||||||
|
|
||||||
|
/* Eligibility form */
|
||||||
|
.check-grid { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: center; }
|
||||||
|
.check-label { font-size: 13px; color: var(--text); }
|
||||||
|
.check-ref { font-size: 11px; color: var(--text3); font-family: 'JetBrains Mono', monospace; }
|
||||||
|
.toggle { appearance: none; width: 36px; height: 20px; border-radius: 10px; background: var(--surface3); cursor: pointer; position: relative; transition: background 0.2s; }
|
||||||
|
.toggle:checked { background: var(--green); }
|
||||||
|
.toggle::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: white; transition: transform 0.2s; }
|
||||||
|
.toggle:checked::after { transform: translateX(16px); }
|
||||||
|
|
||||||
|
/* Scoring */
|
||||||
|
.criteria-table { width: 100%; border-collapse: collapse; }
|
||||||
|
.criteria-table th { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text3); text-align: left; padding: 8px 6px; border-bottom: 1px solid var(--border); }
|
||||||
|
.criteria-table td { padding: 10px 6px; font-size: 13px; border-bottom: 1px solid rgba(54,59,77,0.5); }
|
||||||
|
.criteria-table .nr { font-family: 'JetBrains Mono', monospace; color: var(--text3); width: 30px; }
|
||||||
|
.criteria-table .weight { font-family: 'JetBrains Mono', monospace; color: var(--accent2); width: 50px; text-align: center; }
|
||||||
|
.criteria-table .score { font-family: 'JetBrains Mono', monospace; font-weight: 600; width: 60px; text-align: right; }
|
||||||
|
|
||||||
|
.rating-input { width: 52px; padding: 5px 8px; font-size: 14px; font-family: 'JetBrains Mono', monospace; font-weight: 600; text-align: center; background: var(--surface2); border: 1px solid var(--border); border-radius: 6px; color: var(--text); outline: none; }
|
||||||
|
.rating-input:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(99,102,241,0.2); }
|
||||||
|
.rating-input.invalid { border-color: var(--red); }
|
||||||
|
|
||||||
|
select.jurisdiction { padding: 5px 8px; font-size: 13px; background: var(--surface2); border: 1px solid var(--border); border-radius: 6px; color: var(--text); outline: none; }
|
||||||
|
select.jurisdiction:focus { border-color: var(--accent); }
|
||||||
|
|
||||||
|
.trl-input { width: 52px; padding: 5px 8px; font-size: 14px; font-family: 'JetBrains Mono', monospace; font-weight: 600; text-align: center; background: var(--surface2); border: 1px solid var(--border); border-radius: 6px; color: var(--text); outline: none; }
|
||||||
|
|
||||||
|
/* Total */
|
||||||
|
.total-bar { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; background: var(--surface2); border-radius: var(--radius); margin-top: 12px; }
|
||||||
|
.total-label { font-size: 14px; font-weight: 600; }
|
||||||
|
.total-score { font-size: 28px; font-weight: 700; font-family: 'JetBrains Mono', monospace; }
|
||||||
|
.total-score.high { color: var(--green); }
|
||||||
|
.total-score.mid { color: var(--amber); }
|
||||||
|
.total-score.low { color: var(--red); }
|
||||||
|
|
||||||
|
/* Tiebreak */
|
||||||
|
.tiebreak { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
|
||||||
|
.tiebreak-chip { font-size: 12px; font-family: 'JetBrains Mono', monospace; padding: 4px 10px; border-radius: 20px; background: var(--surface3); color: var(--text2); }
|
||||||
|
.tiebreak-chip .val { font-weight: 600; color: var(--accent2); }
|
||||||
|
|
||||||
|
/* Status badges */
|
||||||
|
.status { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 20px; }
|
||||||
|
.status.eligible { background: var(--green-bg); color: var(--green); }
|
||||||
|
.status.fix { background: var(--amber-bg); color: var(--amber); }
|
||||||
|
.status.reject { background: var(--red-bg); color: var(--red); }
|
||||||
|
|
||||||
|
/* Progress bar */
|
||||||
|
.progress-track { width: 100%; height: 8px; background: var(--surface3); border-radius: 4px; overflow: hidden; margin-top: 8px; }
|
||||||
|
.progress-fill { height: 100%; border-radius: 4px; transition: width 0.4s ease, background 0.4s ease; }
|
||||||
|
|
||||||
|
/* Guardrails panel */
|
||||||
|
.rule-card { padding: 10px 12px; background: var(--surface2); border-radius: var(--radius); margin-bottom: 8px; border-left: 3px solid var(--accent); }
|
||||||
|
.rule-id { font-size: 11px; font-family: 'JetBrains Mono', monospace; color: var(--accent2); margin-bottom: 4px; }
|
||||||
|
.rule-text { font-size: 13px; color: var(--text); }
|
||||||
|
.rule-enforcement { font-size: 11px; color: var(--red); font-weight: 600; margin-top: 4px; }
|
||||||
|
|
||||||
|
/* AI output preview */
|
||||||
|
.ai-output { background: var(--surface2); border-radius: var(--radius); padding: 12px; font-family: 'JetBrains Mono', monospace; font-size: 12px; line-height: 1.6; color: var(--text2); white-space: pre-wrap; max-height: 400px; overflow-y: auto; }
|
||||||
|
.ai-disclaimer { margin-top: 12px; padding: 10px; background: var(--amber-bg); border-radius: var(--radius); font-size: 12px; color: var(--amber); }
|
||||||
|
|
||||||
|
/* Audit */
|
||||||
|
.audit-event { display: flex; align-items: flex-start; gap: 8px; padding: 6px 0; font-size: 12px; }
|
||||||
|
.audit-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); margin-top: 5px; flex-shrink: 0; }
|
||||||
|
.audit-dot.ai { background: var(--amber); }
|
||||||
|
.audit-ts { font-family: 'JetBrains Mono', monospace; color: var(--text3); min-width: 140px; }
|
||||||
|
.audit-name { color: var(--text); }
|
||||||
|
|
||||||
|
/* Buttons */
|
||||||
|
.btn { padding: 8px 16px; font-size: 13px; font-weight: 600; border: none; border-radius: 6px; cursor: pointer; transition: all 0.15s; }
|
||||||
|
.btn-primary { background: var(--accent); color: white; }
|
||||||
|
.btn-primary:hover { background: var(--accent2); }
|
||||||
|
.btn-ghost { background: transparent; color: var(--text2); border: 1px solid var(--border); }
|
||||||
|
.btn-ghost:hover { color: var(--text); background: var(--surface2); }
|
||||||
|
|
||||||
|
.actions { display: flex; gap: 8px; margin-top: 16px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="app">
|
||||||
|
<div class="header">
|
||||||
|
<span class="header-icon">🏛️</span>
|
||||||
|
<div>
|
||||||
|
<h1>MI Sandbox Atlase <span class="badge">DEMO</span></h1>
|
||||||
|
<div class="sub">Komisijas vērtēšanas panelis — Nolikuma process kā UAPF/ProcessGit</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tabs">
|
||||||
|
<div class="tab active" data-panel="eligibility">Atbilstība</div>
|
||||||
|
<div class="tab" data-panel="scoring">Vērtēšana</div>
|
||||||
|
<div class="tab" data-panel="ai-agent">AI Aģents</div>
|
||||||
|
<div class="tab" data-panel="guardrails">Guardrails</div>
|
||||||
|
<div class="tab" data-panel="audit">Audits</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ===== PANEL: ELIGIBILITY ===== -->
|
||||||
|
<div class="panel active" id="panel-eligibility">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">Formālā atbilstība (DMN: 01-atbilstiba-un-izsledzosie)</div>
|
||||||
|
<div class="check-grid">
|
||||||
|
<div><span class="check-label">Juridiska persona</span> <span class="check-ref">6.1.p.</span></div>
|
||||||
|
<input type="checkbox" class="toggle" id="ck_legal" checked>
|
||||||
|
|
||||||
|
<div><span class="check-label">Jurisdikcija</span> <span class="check-ref">6.1.p.</span></div>
|
||||||
|
<select class="jurisdiction" id="sel_jurisdiction">
|
||||||
|
<option value="LV" selected>LV — Latvija</option>
|
||||||
|
<option value="EU">EU — ES dalībvalsts</option>
|
||||||
|
<option value="EEA">EEA — EEZ valsts</option>
|
||||||
|
<option value="CH">CH — Šveice</option>
|
||||||
|
<option value="OTHER">Cita (neatbilst)</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<div><span class="check-label">Iesniegts termiņā</span> <span class="check-ref">7., 8.p.</span></div>
|
||||||
|
<input type="checkbox" class="toggle" id="ck_time" checked>
|
||||||
|
|
||||||
|
<div><span class="check-label">Dokumenti latviešu valodā</span> <span class="check-ref">10.p.</span></div>
|
||||||
|
<input type="checkbox" class="toggle" id="ck_latvian" checked>
|
||||||
|
|
||||||
|
<div><span class="check-label">Drošs e-paraksts ar laika zīmogu</span> <span class="check-ref">7.p.</span></div>
|
||||||
|
<input type="checkbox" class="toggle" id="ck_esign" checked>
|
||||||
|
|
||||||
|
<div><span class="check-label">NAV aizliegtā MI prakse</span> <span class="check-ref">6.2.p., Regula 5.p.</span></div>
|
||||||
|
<input type="checkbox" class="toggle" id="ck_notforbidden" checked>
|
||||||
|
|
||||||
|
<div><span class="check-label">NAV izslēdzošie nosacījumi (Likuma 8.p.3.d.)</span> <span class="check-ref">6.3.p.</span></div>
|
||||||
|
<input type="checkbox" class="toggle" id="ck_noexclusion" checked>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 16px;">
|
||||||
|
<strong style="font-size:13px;">Rezultāts:</strong>
|
||||||
|
<span id="elig-result" class="status eligible">✓ ELIGIBLE</span>
|
||||||
|
<span id="elig-reason" style="font-size:12px; color:var(--text2); margin-left:8px;"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ===== PANEL: SCORING ===== -->
|
||||||
|
<div class="panel" id="panel-scoring">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">TRL līmeņa kartējums (DMN: 03-trl-vertejums)</div>
|
||||||
|
<div style="display:flex; align-items:center; gap:12px;">
|
||||||
|
<span style="font-size:13px;">TRL līmenis:</span>
|
||||||
|
<input type="number" class="trl-input" id="trl_level" min="1" max="9" value="7">
|
||||||
|
<span style="font-size:13px;">→ Vērtējums:</span>
|
||||||
|
<span id="trl_score" style="font-family:'JetBrains Mono'; font-weight:700; font-size:18px; color:var(--accent2);">4</span>
|
||||||
|
<span id="trl_label" style="font-size:12px; color:var(--text2);"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">Kritēriju vērtējumi (DMN: 02-vertesanas-punkti)</div>
|
||||||
|
<table class="criteria-table">
|
||||||
|
<thead>
|
||||||
|
<tr><th>Nr.</th><th>Kritērijs</th><th>Svars</th><th>0–5</th><th>Punkti</th></tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="nr">1</td>
|
||||||
|
<td>Inovitāte un tirgus nepilnību novēršana</td>
|
||||||
|
<td class="weight">20</td>
|
||||||
|
<td><input type="number" class="rating-input" data-crit="1" data-weight="20" min="0" max="5" value="4"></td>
|
||||||
|
<td class="score" id="sc1">16.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="nr">2</td>
|
||||||
|
<td>Ieguldījums digitālās transformācijas mērķos</td>
|
||||||
|
<td class="weight">15</td>
|
||||||
|
<td><input type="number" class="rating-input" data-crit="2" data-weight="15" min="0" max="5" value="4"></td>
|
||||||
|
<td class="score" id="sc2">12.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="nr">3</td>
|
||||||
|
<td>Tehniskā gatavība un resursu nodrošinājums</td>
|
||||||
|
<td class="weight">30</td>
|
||||||
|
<td><input type="number" class="rating-input" data-crit="3" data-weight="30" min="0" max="5" value="5"></td>
|
||||||
|
<td class="score" id="sc3">30.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="nr">4</td>
|
||||||
|
<td>Augsta riska MI sistēmas kvalifikācija</td>
|
||||||
|
<td class="weight">10</td>
|
||||||
|
<td><input type="number" class="rating-input" data-crit="4" data-weight="10" min="0" max="5" value="4"></td>
|
||||||
|
<td class="score" id="sc4">8.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="nr">5</td>
|
||||||
|
<td>Regulatīvās vides pamatojums</td>
|
||||||
|
<td class="weight">25</td>
|
||||||
|
<td><input type="number" class="rating-input" data-crit="5" data-weight="25" min="0" max="5" value="5"></td>
|
||||||
|
<td class="score" id="sc5">25.0</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="total-bar">
|
||||||
|
<div>
|
||||||
|
<div class="total-label">Kopējais rezultāts</div>
|
||||||
|
<div class="tiebreak" id="tiebreak">
|
||||||
|
<span class="tiebreak-chip">Kr.3: <span class="val" id="tb3">30.0</span></span>
|
||||||
|
<span class="tiebreak-chip">Kr.5: <span class="val" id="tb5">25.0</span></span>
|
||||||
|
<span class="tiebreak-chip">Kr.1: <span class="val" id="tb1">16.0</span></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="total-score high" id="total-score">91.0</div>
|
||||||
|
</div>
|
||||||
|
<div class="progress-track">
|
||||||
|
<div class="progress-fill" id="progress-fill" style="width:91%; background:var(--green);"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ===== PANEL: AI AGENT ===== -->
|
||||||
|
<div class="panel" id="panel-ai-agent">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">AI aģenta iepriekšējais novērtējums (demo)</div>
|
||||||
|
<p style="font-size:13px; color:var(--text2); margin-bottom:12px;">
|
||||||
|
AI aģents analizē iesnieguma datus un sniedz strukturētu ieteikumu komisijai.
|
||||||
|
Šis ir <strong>asistēts režīms</strong> — galīgais lēmums vienmēr ir komisijas.
|
||||||
|
</p>
|
||||||
|
<div class="actions" style="margin-bottom:12px;">
|
||||||
|
<button class="btn btn-primary" id="btn-run-ai">▶ Palaist AI novērtējumu</button>
|
||||||
|
<button class="btn btn-ghost" id="btn-clear-ai">Notīrīt</button>
|
||||||
|
</div>
|
||||||
|
<div class="ai-output" id="ai-output">Nospied "Palaist AI novērtējumu", lai redzētu rezultātu...</div>
|
||||||
|
<div class="ai-disclaimer">
|
||||||
|
⚠ Šis ir AI aģenta ieteikums. Galīgais lēmums ir komisijas kompetencē (Nolikuma 20.p.).
|
||||||
|
AI nedrīkst mainīt komisijas piešķirtos vērtējumus (guardrails: NO_SCORE_OVERRIDE).
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ===== PANEL: GUARDRAILS ===== -->
|
||||||
|
<div class="panel" id="panel-guardrails">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">AI novērtēšanas ierobežojumi (guardrails/ai-evaluation-rules.yaml)</div>
|
||||||
|
<div class="rule-card">
|
||||||
|
<div class="rule-id">HUMAN_FINAL_DECISION</div>
|
||||||
|
<div class="rule-text">AI aģenta izvade ir tikai ieteikums. Galīgais lēmums vienmēr ir komisijas.</div>
|
||||||
|
<div class="rule-enforcement">enforcement: HARD — Nolikuma 20.p.</div>
|
||||||
|
</div>
|
||||||
|
<div class="rule-card">
|
||||||
|
<div class="rule-id">TRANSPARENCY</div>
|
||||||
|
<div class="rule-text">Katrs AI izvades elements ietver pamatojumu un atsauci uz nolikuma punktu.</div>
|
||||||
|
<div class="rule-enforcement">enforcement: HARD</div>
|
||||||
|
</div>
|
||||||
|
<div class="rule-card">
|
||||||
|
<div class="rule-id">NO_SCORE_OVERRIDE</div>
|
||||||
|
<div class="rule-text">AI nedrīkst mainīt komisijas piešķirtos 0–5 vērtējumus. AI var tikai ieteikt.</div>
|
||||||
|
<div class="rule-enforcement">enforcement: HARD</div>
|
||||||
|
</div>
|
||||||
|
<div class="rule-card">
|
||||||
|
<div class="rule-id">AUDIT_TRAIL</div>
|
||||||
|
<div class="rule-text">Katra AI aģenta darbība tiek reģistrēta audita žurnālā ar laika zīmogu.</div>
|
||||||
|
<div class="rule-enforcement">enforcement: HARD</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">EU AI Act atbilstība</div>
|
||||||
|
<div class="rule-card" style="border-left-color: var(--blue);">
|
||||||
|
<div class="rule-id">Regulas 3.p.1.pk. — MI sistēmas definīcija</div>
|
||||||
|
<div class="rule-text">AI aģents secina no iesnieguma datiem, kā ģenerēt novērtējuma ieteikumus.</div>
|
||||||
|
</div>
|
||||||
|
<div class="rule-card" style="border-left-color: var(--blue);">
|
||||||
|
<div class="rule-id">Regulas 14.p. — Cilvēka uzraudzība</div>
|
||||||
|
<div class="rule-text">Komisija pārbauda katru AI ieteikumu pirms lēmuma pieņemšanas.</div>
|
||||||
|
</div>
|
||||||
|
<div class="rule-card" style="border-left-color: var(--blue);">
|
||||||
|
<div class="rule-id">Regulas 13.p. — Pārredzamība</div>
|
||||||
|
<div class="rule-text">Pamatojums un atsauces pieejamas katrā AI izvades elementā.</div>
|
||||||
|
</div>
|
||||||
|
<div class="rule-card" style="border-left-color: var(--blue);">
|
||||||
|
<div class="rule-id">Regulas 10.p. — Datu pārvaldība</div>
|
||||||
|
<div class="rule-text">Tikai iesnieguma dati — nav ārējie avoti.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">Aizliegtās darbības</div>
|
||||||
|
<ul style="font-size:13px; color:var(--text); padding-left:20px; list-style: none;">
|
||||||
|
<li style="margin-bottom:6px;">🚫 Piešķirt galīgo punktu skaitu</li>
|
||||||
|
<li style="margin-bottom:6px;">🚫 Mainīt komisijas vērtējumus</li>
|
||||||
|
<li style="margin-bottom:6px;">🚫 Pieņemt lēmumu par apstiprināšanu/noraidīšanu</li>
|
||||||
|
<li style="margin-bottom:6px;">🚫 Salīdzināt konkrētus iesniedzējus savā starpā</li>
|
||||||
|
<li style="margin-bottom:6px;">🚫 Izmantot ārējos datus ārpus iesnieguma</li>
|
||||||
|
<li>🚫 Sazināties tieši ar iesniedzēju</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ===== PANEL: AUDIT ===== -->
|
||||||
|
<div class="panel" id="panel-audit">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">Audita notikumu žurnāls (demo)</div>
|
||||||
|
<div id="audit-log"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// ===== Tab switching =====
|
||||||
|
document.querySelectorAll('.tab').forEach(tab => {
|
||||||
|
tab.addEventListener('click', () => {
|
||||||
|
document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
|
||||||
|
document.querySelectorAll('.panel').forEach(p => p.classList.remove('active'));
|
||||||
|
tab.classList.add('active');
|
||||||
|
document.getElementById('panel-' + tab.dataset.panel).classList.add('active');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// ===== TRL Mapping (mirrors DMN 03) =====
|
||||||
|
const TRL_MAP = {
|
||||||
|
1:{s:0,l:"Pamatprincipu novērojumi"},2:{s:0,l:"Formulēta koncepcija"},
|
||||||
|
3:{s:2,l:"Koncepcijas eksperimentālā pārbaude"},4:{s:2,l:"Validācija laboratorijā"},
|
||||||
|
5:{s:3,l:"Validācija mākslīgi radītā vidē"},6:{s:4,l:"Demonstrācija mākslīgi radītā vidē"},
|
||||||
|
7:{s:4,l:"Prototipa demonstrācija reālā vidē"},8:{s:5,l:"Sistēma pabeigta un pārbaudīta"},
|
||||||
|
9:{s:5,l:"Sekmīga ekspluatācija"}
|
||||||
|
};
|
||||||
|
|
||||||
|
function updateTRL() {
|
||||||
|
const lvl = parseInt(document.getElementById('trl_level').value) || 1;
|
||||||
|
const map = TRL_MAP[Math.min(9, Math.max(1, lvl))] || TRL_MAP[1];
|
||||||
|
document.getElementById('trl_score').textContent = map.s;
|
||||||
|
document.getElementById('trl_label').textContent = '— ' + map.l;
|
||||||
|
}
|
||||||
|
document.getElementById('trl_level').addEventListener('input', updateTRL);
|
||||||
|
updateTRL();
|
||||||
|
|
||||||
|
// ===== Eligibility (mirrors DMN 01) =====
|
||||||
|
function checkEligibility() {
|
||||||
|
const legal = document.getElementById('ck_legal').checked;
|
||||||
|
const jur = document.getElementById('sel_jurisdiction').value;
|
||||||
|
const time = document.getElementById('ck_time').checked;
|
||||||
|
const lat = document.getElementById('ck_latvian').checked;
|
||||||
|
const esign = document.getElementById('ck_esign').checked;
|
||||||
|
const notForbidden = document.getElementById('ck_notforbidden').checked;
|
||||||
|
const noExcl = document.getElementById('ck_noexclusion').checked;
|
||||||
|
|
||||||
|
const el = document.getElementById('elig-result');
|
||||||
|
const re = document.getElementById('elig-reason');
|
||||||
|
|
||||||
|
if (!legal) { el.className='status reject'; el.textContent='✗ REJECT'; re.textContent='Iesniedzējs nav juridiska persona (6.1.p.)'; return; }
|
||||||
|
if (jur === 'OTHER') { el.className='status reject'; el.textContent='✗ REJECT'; re.textContent='Jurisdikcija nav LV/ES/EEZ/CH (6.1.p.)'; return; }
|
||||||
|
if (!time) { el.className='status reject'; el.textContent='✗ REJECT'; re.textContent='Iesniegums nav saņemts termiņā (7., 8.p.)'; return; }
|
||||||
|
if (!notForbidden) { el.className='status reject'; el.textContent='✗ REJECT'; re.textContent='MI sistēma ir aizliegtā prakse (6.2.p.)'; return; }
|
||||||
|
if (!noExcl) { el.className='status reject'; el.textContent='✗ REJECT'; re.textContent='Izslēdzošie nosacījumi (6.3.p.)'; return; }
|
||||||
|
if (!lat) { el.className='status fix'; el.textContent='⚠ FIX_OR_REJECT'; re.textContent='Dokumenti nav latviešu valodā (10., 12.p.)'; return; }
|
||||||
|
if (!esign) { el.className='status fix'; el.textContent='⚠ FIX_OR_REJECT'; re.textContent='Trūkst e-paraksta/laika zīmoga (7., 12.p.)'; return; }
|
||||||
|
el.className='status eligible'; el.textContent='✓ ELIGIBLE'; re.textContent='Atbilst visām prasībām — virzīt uz vērtēšanu (13.p.)';
|
||||||
|
}
|
||||||
|
document.querySelectorAll('#panel-eligibility .toggle, #panel-eligibility select').forEach(el => el.addEventListener('change', checkEligibility));
|
||||||
|
checkEligibility();
|
||||||
|
|
||||||
|
// ===== Scoring (mirrors DMN 02) =====
|
||||||
|
function recalcScores() {
|
||||||
|
let total = 0;
|
||||||
|
const scores = {};
|
||||||
|
document.querySelectorAll('.rating-input').forEach(inp => {
|
||||||
|
const crit = inp.dataset.crit;
|
||||||
|
const weight = parseInt(inp.dataset.weight);
|
||||||
|
let rating = parseFloat(inp.value);
|
||||||
|
if (isNaN(rating) || rating < 0 || rating > 5) { inp.classList.add('invalid'); rating = 0; } else { inp.classList.remove('invalid'); }
|
||||||
|
const score = weight * (rating / 5);
|
||||||
|
scores[crit] = score;
|
||||||
|
document.getElementById('sc' + crit).textContent = score.toFixed(1);
|
||||||
|
total += score;
|
||||||
|
});
|
||||||
|
|
||||||
|
const totalEl = document.getElementById('total-score');
|
||||||
|
totalEl.textContent = total.toFixed(1);
|
||||||
|
totalEl.className = 'total-score ' + (total >= 70 ? 'high' : total >= 40 ? 'mid' : 'low');
|
||||||
|
|
||||||
|
const fill = document.getElementById('progress-fill');
|
||||||
|
fill.style.width = total + '%';
|
||||||
|
fill.style.background = total >= 70 ? 'var(--green)' : total >= 40 ? 'var(--amber)' : 'var(--red)';
|
||||||
|
|
||||||
|
document.getElementById('tb3').textContent = (scores['3'] || 0).toFixed(1);
|
||||||
|
document.getElementById('tb5').textContent = (scores['5'] || 0).toFixed(1);
|
||||||
|
document.getElementById('tb1').textContent = (scores['1'] || 0).toFixed(1);
|
||||||
|
}
|
||||||
|
document.querySelectorAll('.rating-input').forEach(inp => inp.addEventListener('input', recalcScores));
|
||||||
|
recalcScores();
|
||||||
|
|
||||||
|
// ===== AI Agent demo =====
|
||||||
|
document.getElementById('btn-run-ai').addEventListener('click', () => {
|
||||||
|
const out = document.getElementById('ai-output');
|
||||||
|
const ratings = {};
|
||||||
|
document.querySelectorAll('.rating-input').forEach(inp => {
|
||||||
|
ratings[inp.dataset.crit] = parseFloat(inp.value) || 0;
|
||||||
|
});
|
||||||
|
const trl = parseInt(document.getElementById('trl_level').value) || 1;
|
||||||
|
const trlMap = TRL_MAP[Math.min(9, Math.max(1, trl))];
|
||||||
|
|
||||||
|
const reasoning = [];
|
||||||
|
if (ratings['3'] >= 4) reasoning.push({criterion:"Tehniskā gatavība", observation:"TRL"+trl+" → vērtējums "+trlMap.s+"/5. "+trlMap.l+". Atbilst enkuram "+(trlMap.s>=4?"4/5":"3/5")+".", nolikumaRef:"1.piel. Kr.3; 2.piel."});
|
||||||
|
if (ratings['5'] >= 4) reasoning.push({criterion:"Regulatīvās vides pamatojums", observation:"Augsts vērtējums ("+ratings['5']+"/5) norāda uz skaidru nepieciešamību pēc strukturētas testēšanas.", nolikumaRef:"1.piel. Kr.5"});
|
||||||
|
if (ratings['1'] >= 4) reasoning.push({criterion:"Inovitāte", observation:"Vērtējums "+ratings['1']+"/5 norāda uz inovatīvu risinājumu ar tirgus nepilnību novēršanu.", nolikumaRef:"1.piel. Kr.1"});
|
||||||
|
if (ratings['4'] >= 3) reasoning.push({criterion:"Augsta riska MI", observation:"Kvalificējas kā augsta riska MI sistēma — regulatīvā vide sniedz pievienoto vērtību.", nolikumaRef:"1.piel. Kr.4"});
|
||||||
|
|
||||||
|
const total = Object.entries(ratings).reduce((s,[c,r]) => s + [20,15,30,10,25][c-1]*(r/5), 0);
|
||||||
|
const confidence = Math.min(0.95, Math.max(0.1, total / 110));
|
||||||
|
const rec = total >= 70 ? "RECOMMEND_APPROVE" : total >= 40 ? "RECOMMEND_REVIEW" : "RECOMMEND_REJECT";
|
||||||
|
|
||||||
|
const result = {
|
||||||
|
recommendation: rec,
|
||||||
|
confidence: parseFloat(confidence.toFixed(2)),
|
||||||
|
reasoning: reasoning,
|
||||||
|
flags: total < 60 ? ["Kopējais rezultāts zem 60 — ieteicams papildu pārskatīšana"] : [],
|
||||||
|
disclaimers: ["Šis ir AI aģenta ieteikums. Galīgais lēmums ir komisijas kompetencē."]
|
||||||
|
};
|
||||||
|
|
||||||
|
out.textContent = JSON.stringify(result, null, 2);
|
||||||
|
addAuditEvent('ai-pre-assessment-run', true);
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('btn-clear-ai').addEventListener('click', () => {
|
||||||
|
document.getElementById('ai-output').textContent = 'Nospied "Palaist AI novērtējumu", lai redzētu rezultātu...';
|
||||||
|
});
|
||||||
|
|
||||||
|
// ===== Audit log =====
|
||||||
|
const auditEvents = [
|
||||||
|
{event:'application-received', ts:'2026-03-15T10:00:00Z', ai:false},
|
||||||
|
{event:'eligibility-evaluated', ts:'2026-03-15T10:01:00Z', ai:false},
|
||||||
|
{event:'sent-to-authorities', ts:'2026-03-18T09:00:00Z', ai:false},
|
||||||
|
{event:'opinions-received', ts:'2026-04-10T15:30:00Z', ai:false},
|
||||||
|
{event:'commission-scores-entered', ts:'2026-04-12T14:00:00Z', ai:false},
|
||||||
|
{event:'scores-calculated', ts:'2026-04-12T14:01:00Z', ai:false},
|
||||||
|
{event:'decision-prepared', ts:'2026-04-14T10:00:00Z', ai:false},
|
||||||
|
{event:'decision-issued', ts:'2026-04-14T11:00:00Z', ai:false}
|
||||||
|
];
|
||||||
|
|
||||||
|
function addAuditEvent(name, ai) {
|
||||||
|
auditEvents.splice(auditEvents.length - 3, 0, {event: name, ts: new Date().toISOString(), ai: !!ai});
|
||||||
|
renderAudit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderAudit() {
|
||||||
|
const el = document.getElementById('audit-log');
|
||||||
|
el.innerHTML = auditEvents.map(e =>
|
||||||
|
'<div class="audit-event">' +
|
||||||
|
'<div class="audit-dot' + (e.ai ? ' ai' : '') + '"></div>' +
|
||||||
|
'<span class="audit-ts">' + e.ts.replace('T',' ').substring(0,19) + '</span>' +
|
||||||
|
'<span class="audit-name">' + e.event + (e.ai ? ' 🤖' : '') + '</span>' +
|
||||||
|
'</div>'
|
||||||
|
).join('');
|
||||||
|
}
|
||||||
|
renderAudit();
|
||||||
|
|
||||||
|
// ===== PGV Protocol (ProcessGit Viewer integration) =====
|
||||||
|
window.addEventListener('message', function(e) {
|
||||||
|
if (e.data && e.data.type === 'PGV_INIT') {
|
||||||
|
console.log('PGV_INIT received:', e.data.payload);
|
||||||
|
}
|
||||||
|
if (e.data && e.data.type === 'PGV_SAVE_CLICKED') {
|
||||||
|
const data = collectFormData();
|
||||||
|
window.parent.postMessage({type:'PGV_REQUEST_SAVE', path:'examples/candidate-input.example.json', content: JSON.stringify(data, null, 2), summary:'Updated evaluation data'}, '*');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
window.parent.postMessage({type:'PGV_READY'}, '*');
|
||||||
|
|
||||||
|
function collectFormData() {
|
||||||
|
const ratings = {};
|
||||||
|
document.querySelectorAll('.rating-input').forEach(inp => { ratings['c'+inp.dataset.crit] = parseFloat(inp.value) || 0; });
|
||||||
|
return {
|
||||||
|
applicationId: "DEMO-001",
|
||||||
|
applicant: {isLegalEntity: document.getElementById('ck_legal').checked, jurisdiction: document.getElementById('sel_jurisdiction').value},
|
||||||
|
submission: {submittedInTime: document.getElementById('ck_time').checked, documentsInLatvian: document.getElementById('ck_latvian').checked, hasQualifiedESignatureAndTimestamp: document.getElementById('ck_esign').checked},
|
||||||
|
aiSystem: {isForbiddenAIPractice: !document.getElementById('ck_notforbidden').checked, trlLevel: parseInt(document.getElementById('trl_level').value) || 7},
|
||||||
|
commissionRatings: {innovationRating: ratings.c1, transformationRating: ratings.c2, readinessRating: ratings.c3, highRiskRating: ratings.c4, regulatoryNeedRating: ratings.c5}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user