Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 52 additions & 14 deletions landing/templates/mms-client-iec61850.html

Large diffs are not rendered by default.

66 changes: 52 additions & 14 deletions landing/templates/mms-client.html

Large diffs are not rendered by default.

69 changes: 55 additions & 14 deletions landing/templates/smart-reporting-iec61850.html

Large diffs are not rendered by default.

93 changes: 28 additions & 65 deletions landing/templates/smart-reporting.html

Large diffs are not rendered by default.

35 changes: 33 additions & 2 deletions scripts/validate-adoption-proof.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
"""Validate ARSAS onboarding, evidence, localization, issue intake and supply-chain contracts."""
"""Validate ARSAS onboarding, learning, capability tutorials, evidence and supply-chain contracts."""

from __future__ import annotations

Expand All @@ -16,6 +16,8 @@
"learning-center.html": "pusat-belajar-iec61850.html",
"what-is-iec61850.html": "apa-itu-iec61850.html",
"connect-ied-ip-arsas.html": "cara-hubungkan-ied-ip-arsas.html",
"mms-client.html": "mms-client-iec61850.html",
"smart-reporting.html": "smart-reporting-iec61850.html",
"io-list-fat-evidence.html": "bukti-fat-iolist-iec61850.html",
"faq.html": "faq-arsas.html",
"compatibility.html": "bukti-kompatibilitas.html",
Expand Down Expand Up @@ -84,6 +86,35 @@ def main() -> int:
if "learning-center.html" not in text and "pusat-belajar-iec61850.html" not in text and name not in {"learning-center.html", "pusat-belajar-iec61850.html"}:
errors.append(f"{name}: missing Learning Center continuation path")

capability_tutorials = {
"mms-client.html": (
"30-second takeaway", "When to use the MMS Client", "Add IED", "Functional Constraint",
"Success criteria", "If it fails", "HowTo", "FAQPage", "learning-center.html",
),
"mms-client-iec61850.html": (
"Takeaway 30 detik", "Kapan memakai MMS Client", "Add IED", "Functional Constraint",
"Success criteria", "Bila gagal", "HowTo", "FAQPage", "pusat-belajar-iec61850.html",
),
"smart-reporting.html": (
"30-second takeaway", "DataSet", "BRCB", "URCB", "General Interrogation",
"Success criteria", "If Reporting is silent", "HowTo", "FAQPage", "learning-center.html",
),
"smart-reporting-iec61850.html": (
"Takeaway 30 detik", "DataSet", "BRCB", "URCB", "General Interrogation",
"Success criteria", "Bila Reporting silent", "HowTo", "FAQPage", "pusat-belajar-iec61850.html",
),
}
for name, required_values in capability_tutorials.items():
text = read(TEMPLATES / name, errors)
for value in required_values:
if value.lower() not in text.lower():
errors.append(f"{name}: missing capability tutorial contract {value}")
if text.count('<details class="faq-item">') != 3:
errors.append(f"{name}: expected three visible capability FAQ items")
expected_step_class = 'class="reporting-step"' if name.startswith("smart-reporting") else 'class="step"'
if text.count(expected_step_class) != 6:
errors.append(f"{name}: expected six capability tutorial steps")

for name in ("io-list-fat-evidence.html", "bukti-fat-iolist-iec61850.html"):
text = read(TEMPLATES / name, errors)
lower = text.lower()
Expand Down Expand Up @@ -216,7 +247,7 @@ def main() -> int:
for error in errors:
print(f"- {error}")
return 1
print("ARSAS adoption and field-proof validation passed: 62 pages, 21 localized pages, beginner learning, ARSAS tutorials, IO FAT evidence, onboarding, FAQ, field evidence, demo, issue intake and supply-chain contracts.")
print("ARSAS adoption and field-proof validation passed: 62 pages, 21 localized pages, beginner learning, bilingual MMS and Reporting tutorials, IO FAT evidence, onboarding, FAQ, field evidence, demo, issue intake and supply-chain contracts.")
return 0


Expand Down
10 changes: 7 additions & 3 deletions scripts/verify-adoption-deployment.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
"""Verify that public Pages exposes learning, adoption, evidence and IO FAT surfaces."""
"""Verify that public Pages exposes learning, capability tutorials, evidence and IO FAT surfaces."""

from __future__ import annotations

Expand All @@ -11,7 +11,7 @@


def fetch(url: str) -> tuple[int, str]:
request = Request(url, headers={"User-Agent": "ARSAS-Adoption-Attestation/1.1", "Cache-Control": "no-cache"})
request = Request(url, headers={"User-Agent": "ARSAS-Adoption-Attestation/1.2", "Cache-Control": "no-cache"})
try:
with urlopen(request, timeout=25) as response:
return response.status, response.read().decode("utf-8", errors="replace")
Expand All @@ -35,6 +35,10 @@ def main() -> int:
"apa-itu-iec61850.html": ("Takeaway 30 detik", "Logical Node", "Reporting", "GOOSE", "FAQPage", "what-is-iec61850.html"),
"connect-ied-ip-arsas.html": ("TCP port 102", "Add IED", "MMS association", "HowTo", "cara-hubungkan-ied-ip-arsas.html"),
"cara-hubungkan-ied-ip-arsas.html": ("TCP port 102", "Add IED", "association MMS", "HowTo", "connect-ied-ip-arsas.html"),
"mms-client.html": ("30-second takeaway", "Add IED", "Functional Constraint", "Success criteria", "If it fails", "HowTo", "FAQPage", "mms-client-iec61850.html"),
"mms-client-iec61850.html": ("Takeaway 30 detik", "Add IED", "Functional Constraint", "Success criteria", "Bila gagal", "HowTo", "FAQPage", "mms-client.html"),
"smart-reporting.html": ("30-second takeaway", "DataSet", "BRCB", "URCB", "Success criteria", "If Reporting is silent", "HowTo", "FAQPage", "smart-reporting-iec61850.html"),
"smart-reporting-iec61850.html": ("Takeaway 30 detik", "DataSet", "BRCB", "URCB", "Success criteria", "Bila Reporting silent", "HowTo", "FAQPage", "smart-reporting.html"),
"quick-start.html": ("quick-step-number", "data-responsive-media=\"webp\"", "panduan-mulai-arsas.html", "io-list-fat-evidence.html"),
"io-list-fat-evidence.html": ("OFF → ON", "ON → OFF", "TestPointId", ".arsas", "Native PDF report", "bukti-fat-iolist-iec61850.html"),
"bukti-fat-iolist-iec61850.html": ("OFF → ON", "ON → OFF", "TestPointId", ".arsas", "Report PDF native", "io-list-fat-evidence.html"),
Expand Down Expand Up @@ -68,7 +72,7 @@ def main() -> int:
for error in errors:
print(f"- {error}")
return 1
print("Public ARSAS adoption attestation passed: Learning Center, beginner IEC 61850 guides, ARSAS tutorials, Quick Start, IO FAT evidence, FAQ, compatibility, demo, filters and responsive media are live.")
print("Public ARSAS adoption attestation passed: Learning Center, beginner IEC 61850 guides, bilingual MMS and Reporting tutorials, Quick Start, IO FAT evidence, FAQ, compatibility, demo, filters and responsive media are live.")
return 0


Expand Down
Loading