kpi_assembler 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +83 -0
  4. data/app/controllers/kpi_assembler/api/v1/workspace_controller.rb +67 -0
  5. data/app/controllers/kpi_assembler/application_controller.rb +19 -0
  6. data/app/controllers/kpi_assembler/workspace_controller.rb +17 -0
  7. data/bin/kpi_assembler +77 -0
  8. data/bin/kpi_assembler_web +19 -0
  9. data/config/routes.rb +17 -0
  10. data/docs/integration.md +89 -0
  11. data/docs/rails-engine.md +92 -0
  12. data/lib/generators/kpi_assembler/install_generator.rb +25 -0
  13. data/lib/generators/kpi_assembler/templates/kpi_assembler.rb +47 -0
  14. data/lib/kpi_assembler/asset_server.rb +42 -0
  15. data/lib/kpi_assembler/briefing_generator.rb +108 -0
  16. data/lib/kpi_assembler/candidate_generator.rb +421 -0
  17. data/lib/kpi_assembler/certification_engine.rb +125 -0
  18. data/lib/kpi_assembler/configuration.rb +115 -0
  19. data/lib/kpi_assembler/connection.rb +140 -0
  20. data/lib/kpi_assembler/engine.rb +18 -0
  21. data/lib/kpi_assembler/env.rb +40 -0
  22. data/lib/kpi_assembler/html_report.rb +177 -0
  23. data/lib/kpi_assembler/location_directory.rb +32 -0
  24. data/lib/kpi_assembler/metric_evaluator.rb +62 -0
  25. data/lib/kpi_assembler/pack_builder.rb +53 -0
  26. data/lib/kpi_assembler/sample_database.rb +191 -0
  27. data/lib/kpi_assembler/schema_inspector.rb +197 -0
  28. data/lib/kpi_assembler/schema_kpi_proposer.rb +323 -0
  29. data/lib/kpi_assembler/version.rb +5 -0
  30. data/lib/kpi_assembler/web_app.rb +141 -0
  31. data/lib/kpi_assembler/web_service.rb +138 -0
  32. data/lib/kpi_assembler.rb +162 -0
  33. data/public/app.css +458 -0
  34. data/public/app.js +372 -0
  35. data/public/index.html +240 -0
  36. data/public/kpi-assembler.js +75 -0
  37. metadata +101 -0
@@ -0,0 +1,75 @@
1
+ (function () {
2
+ "use strict";
3
+
4
+ class KPIAssemblerElement extends HTMLElement {
5
+ static get observedAttributes() {
6
+ return ["service-url", "height"];
7
+ }
8
+
9
+ constructor() {
10
+ super();
11
+ this.attachShadow({ mode: "open" });
12
+ }
13
+
14
+ connectedCallback() {
15
+ this.render();
16
+ }
17
+
18
+ attributeChangedCallback() {
19
+ if (this.isConnected) this.render();
20
+ }
21
+
22
+ render() {
23
+ const source = (this.getAttribute("service-url") || window.location.origin).replace(/\/$/, "");
24
+ const height = this.getAttribute("height") || "760px";
25
+
26
+ this.shadowRoot.innerHTML = `
27
+ <style>
28
+ :host { display: block; width: 100%; }
29
+ .frame {
30
+ position: relative;
31
+ width: 100%;
32
+ height: ${this.safeCssSize(height)};
33
+ min-height: 560px;
34
+ border: 1px solid #e4e5ec;
35
+ border-radius: 14px;
36
+ background: #fafafd;
37
+ box-shadow: 0 14px 40px rgba(34, 31, 76, .08);
38
+ overflow: hidden;
39
+ }
40
+ iframe { width: 100%; height: 100%; border: 0; background: #fafafd; }
41
+ </style>
42
+ <div class="frame">
43
+ <iframe
44
+ src="${this.escapeAttribute(source)}/?embed=1"
45
+ title="KPIAssembler metric certification"
46
+ loading="lazy"
47
+ allow="clipboard-write"
48
+ ></iframe>
49
+ </div>`;
50
+
51
+ this.shadowRoot.querySelector("iframe").addEventListener("load", () => {
52
+ this.dispatchEvent(new CustomEvent("kpi-assembler-ready", {
53
+ bubbles: true,
54
+ detail: { serviceUrl: source }
55
+ }));
56
+ });
57
+ }
58
+
59
+ safeCssSize(value) {
60
+ return /^(\d+(\.\d+)?)(px|rem|em|vh|%)$/.test(value) ? value : "760px";
61
+ }
62
+
63
+ escapeAttribute(value) {
64
+ return String(value)
65
+ .replaceAll("&", "&amp;")
66
+ .replaceAll('"', "&quot;")
67
+ .replaceAll("<", "&lt;")
68
+ .replaceAll(">", "&gt;");
69
+ }
70
+ }
71
+
72
+ if (!customElements.get("kpi-assembler")) {
73
+ customElements.define("kpi-assembler", KPIAssemblerElement);
74
+ }
75
+ }());
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kpi_assembler
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - KPIAssembler contributors
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-09-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '7.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '7.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8'
33
+ description: A mountable Rails engine and Ruby library that proposes KPIs from application
34
+ schemas and certifies their SQL before publication.
35
+ email:
36
+ executables: []
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - LICENSE
41
+ - README.md
42
+ - app/controllers/kpi_assembler/api/v1/workspace_controller.rb
43
+ - app/controllers/kpi_assembler/application_controller.rb
44
+ - app/controllers/kpi_assembler/workspace_controller.rb
45
+ - bin/kpi_assembler
46
+ - bin/kpi_assembler_web
47
+ - config/routes.rb
48
+ - docs/integration.md
49
+ - docs/rails-engine.md
50
+ - lib/generators/kpi_assembler/install_generator.rb
51
+ - lib/generators/kpi_assembler/templates/kpi_assembler.rb
52
+ - lib/kpi_assembler.rb
53
+ - lib/kpi_assembler/asset_server.rb
54
+ - lib/kpi_assembler/briefing_generator.rb
55
+ - lib/kpi_assembler/candidate_generator.rb
56
+ - lib/kpi_assembler/certification_engine.rb
57
+ - lib/kpi_assembler/configuration.rb
58
+ - lib/kpi_assembler/connection.rb
59
+ - lib/kpi_assembler/engine.rb
60
+ - lib/kpi_assembler/env.rb
61
+ - lib/kpi_assembler/html_report.rb
62
+ - lib/kpi_assembler/location_directory.rb
63
+ - lib/kpi_assembler/metric_evaluator.rb
64
+ - lib/kpi_assembler/pack_builder.rb
65
+ - lib/kpi_assembler/sample_database.rb
66
+ - lib/kpi_assembler/schema_inspector.rb
67
+ - lib/kpi_assembler/schema_kpi_proposer.rb
68
+ - lib/kpi_assembler/version.rb
69
+ - lib/kpi_assembler/web_app.rb
70
+ - lib/kpi_assembler/web_service.rb
71
+ - public/app.css
72
+ - public/app.js
73
+ - public/index.html
74
+ - public/kpi-assembler.js
75
+ homepage: https://github.com/Akshatsrivastava700/kpi_assembler
76
+ licenses:
77
+ - MIT
78
+ metadata:
79
+ homepage_uri: https://github.com/Akshatsrivastava700/kpi_assembler
80
+ source_code_uri: https://github.com/Akshatsrivastava700/kpi_assembler
81
+ changelog_uri: https://github.com/Akshatsrivastava700/kpi_assembler/releases
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '3.0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubygems_version: 3.4.19
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: Schema-driven KPI proposal and deterministic certification
101
+ test_files: []