Upload folder using huggingface_hub
Browse files- .gitattributes +0 -2
- app/kbdocs/Base insurance Program brochure.pdf +0 -0
- templates/index.html +55 -1
.gitattributes
CHANGED
|
@@ -1,4 +1,2 @@
|
|
| 1 |
*.pdf filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.png filter=lfs diff=lfs merge=lfs -text
|
| 3 |
-
app/kbdocs/OICL_Base_panel_hospital_Delhi.xlsx filter=lfs diff=lfs merge=lfs -text
|
| 4 |
-
data/kuzu_db.wal filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 1 |
*.pdf filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.png filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
app/kbdocs/Base insurance Program brochure.pdf
CHANGED
|
Binary files a/app/kbdocs/Base insurance Program brochure.pdf and b/app/kbdocs/Base insurance Program brochure.pdf differ
|
|
|
templates/index.html
CHANGED
|
@@ -31,11 +31,33 @@
|
|
| 31 |
padding: 1rem;
|
| 32 |
font-size: 1.25rem;
|
| 33 |
font-weight: 700;
|
|
|
|
|
|
|
|
|
|
| 34 |
}
|
| 35 |
header.banner h1 {
|
| 36 |
margin: 0;
|
| 37 |
font-size: 1.25rem;
|
| 38 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
main {
|
| 40 |
flex: 1;
|
| 41 |
padding: 1rem;
|
|
@@ -144,10 +166,10 @@
|
|
| 144 |
|
| 145 |
<header class="banner" role="banner">
|
| 146 |
<h1>Healthcare Policy Expert</h1>
|
|
|
|
| 147 |
</header>
|
| 148 |
|
| 149 |
<main role="main" id="main-content">
|
| 150 |
-
<div class="welcome" aria-live="polite">NITDAA Base Insurance FAQ - 2026</div>
|
| 151 |
|
| 152 |
<div class="milestone-graph" id="generating-graph" role="status" aria-live="polite">
|
| 153 |
<div class="milestone-dot" aria-hidden="true"></div>
|
|
@@ -195,10 +217,42 @@
|
|
| 195 |
const sendBtn = document.getElementById('send-btn');
|
| 196 |
const outputArea = document.getElementById('output-area');
|
| 197 |
const genGraph = document.getElementById('generating-graph');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 198 |
|
| 199 |
quickSelect.addEventListener('change', () => {
|
| 200 |
if (quickSelect.value) {
|
| 201 |
questionInput.value = quickSelect.value;
|
|
|
|
| 202 |
}
|
| 203 |
});
|
| 204 |
|
|
|
|
| 31 |
padding: 1rem;
|
| 32 |
font-size: 1.25rem;
|
| 33 |
font-weight: 700;
|
| 34 |
+
display: flex;
|
| 35 |
+
justify-content: space-between;
|
| 36 |
+
align-items: center;
|
| 37 |
}
|
| 38 |
header.banner h1 {
|
| 39 |
margin: 0;
|
| 40 |
font-size: 1.25rem;
|
| 41 |
}
|
| 42 |
+
.pill {
|
| 43 |
+
padding: 0.25rem 0.75rem;
|
| 44 |
+
border-radius: 12px;
|
| 45 |
+
font-size: 0.875rem;
|
| 46 |
+
font-weight: 700;
|
| 47 |
+
color: var(--white);
|
| 48 |
+
}
|
| 49 |
+
.pill.not-ready {
|
| 50 |
+
background: #d32f2f;
|
| 51 |
+
animation: blink 1s infinite;
|
| 52 |
+
}
|
| 53 |
+
.pill.ready {
|
| 54 |
+
background: #2e7d32;
|
| 55 |
+
}
|
| 56 |
+
@keyframes blink {
|
| 57 |
+
0% { opacity: 1; }
|
| 58 |
+
50% { opacity: 0.5; }
|
| 59 |
+
100% { opacity: 1; }
|
| 60 |
+
}
|
| 61 |
main {
|
| 62 |
flex: 1;
|
| 63 |
padding: 1rem;
|
|
|
|
| 166 |
|
| 167 |
<header class="banner" role="banner">
|
| 168 |
<h1>Healthcare Policy Expert</h1>
|
| 169 |
+
<div id="status-pill" class="pill not-ready">Not Ready</div>
|
| 170 |
</header>
|
| 171 |
|
| 172 |
<main role="main" id="main-content">
|
|
|
|
| 173 |
|
| 174 |
<div class="milestone-graph" id="generating-graph" role="status" aria-live="polite">
|
| 175 |
<div class="milestone-dot" aria-hidden="true"></div>
|
|
|
|
| 217 |
const sendBtn = document.getElementById('send-btn');
|
| 218 |
const outputArea = document.getElementById('output-area');
|
| 219 |
const genGraph = document.getElementById('generating-graph');
|
| 220 |
+
const statusPill = document.getElementById('status-pill');
|
| 221 |
+
|
| 222 |
+
async function pollStatus() {
|
| 223 |
+
try {
|
| 224 |
+
const res = await fetch('/api/status');
|
| 225 |
+
const data = await res.json();
|
| 226 |
+
const vecOk = (data.vector_db?.chunks ?? -1) >= 0;
|
| 227 |
+
const genOk = data.gen_llm?.online;
|
| 228 |
+
const embedOk = data.embed_llm?.online;
|
| 229 |
+
// Check for active ingestion / graphdb tasks via our system info endpoint as well
|
| 230 |
+
let isIngesting = false;
|
| 231 |
+
try {
|
| 232 |
+
const sysRes = await fetch('/api/sysinfo');
|
| 233 |
+
const sysData = await sysRes.json();
|
| 234 |
+
isIngesting = sysData.active_graph_tasks > 0;
|
| 235 |
+
} catch(e) {}
|
| 236 |
+
|
| 237 |
+
if (vecOk && genOk && embedOk && !isIngesting) {
|
| 238 |
+
statusPill.className = 'pill ready';
|
| 239 |
+
statusPill.textContent = 'Ready';
|
| 240 |
+
} else {
|
| 241 |
+
statusPill.className = 'pill not-ready';
|
| 242 |
+
statusPill.textContent = 'Not Ready';
|
| 243 |
+
}
|
| 244 |
+
} catch (e) {
|
| 245 |
+
statusPill.className = 'pill not-ready';
|
| 246 |
+
statusPill.textContent = 'Not Ready';
|
| 247 |
+
}
|
| 248 |
+
setTimeout(pollStatus, 5000);
|
| 249 |
+
}
|
| 250 |
+
pollStatus();
|
| 251 |
|
| 252 |
quickSelect.addEventListener('change', () => {
|
| 253 |
if (quickSelect.value) {
|
| 254 |
questionInput.value = quickSelect.value;
|
| 255 |
+
sendBtn.click();
|
| 256 |
}
|
| 257 |
});
|
| 258 |
|