feat: initial commit - oncology literature search platform
OncoLit: a multi-tenant oncology literature search, feed, and collaboration platform. Built with FastAPI + Vue 3 + PostgreSQL. Includes PubMed pipeline, drug approvals, AI summaries, and systematic review tools.
|
After Width: | Height: | Size: 849 B |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 531 B |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 620 B |
|
After Width: | Height: | Size: 443 B |
|
After Width: | Height: | Size: 461 B |
|
After Width: | Height: | Size: 461 B |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 483 B |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "SciLit Oncology - 肿瘤科文献中心",
|
||||
"short_name": "SciLit Oncology",
|
||||
"description": "全球肿瘤学进展,每日自动推送。覆盖 NEJM/Lancet/JAMA/JCO 等顶级期刊。",
|
||||
"start_url": "/app/feed",
|
||||
"display": "standalone",
|
||||
"background_color": "#f5f7fa",
|
||||
"theme_color": "#1a5276",
|
||||
"orientation": "any",
|
||||
"icons": [
|
||||
{ "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" },
|
||||
{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }
|
||||
],
|
||||
"categories": ["medical", "education", "productivity"],
|
||||
"lang": "zh-CN",
|
||||
"scope": "/"
|
||||
}
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,12 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Allow: /literature/
|
||||
Allow: /journals/
|
||||
Allow: /drugs/
|
||||
Allow: /guidelines/
|
||||
Allow: /help/
|
||||
Disallow: /app/
|
||||
Disallow: /admin/
|
||||
Disallow: /auth/
|
||||
Disallow: /api/
|
||||
Sitemap: https://scilit-oncology.com/sitemap.xml
|
||||
@@ -0,0 +1,28 @@
|
||||
// Service Worker — 离线缓存 + 推送通知
|
||||
const CACHE_NAME = 'scilit-oncology-v1';
|
||||
const STATIC_ASSETS = ['/', '/app/feed', '/app/search', '/app/library'];
|
||||
|
||||
self.addEventListener('install', (event) => {
|
||||
(event as any).waitUntil(
|
||||
caches.open(CACHE_NAME).then((cache) => cache.addAll(STATIC_ASSETS))
|
||||
);
|
||||
self.skipWaiting();
|
||||
});
|
||||
|
||||
self.addEventListener('activate', (event) => {
|
||||
(event as any).waitUntil(
|
||||
caches.keys().then((keys) =>
|
||||
Promise.all(keys.filter((k) => k !== CACHE_NAME).map((k) => caches.delete(k)))
|
||||
)
|
||||
);
|
||||
self.clients.claim();
|
||||
});
|
||||
|
||||
self.addEventListener('fetch', (event) => {
|
||||
const req = (event as FetchEvent).request;
|
||||
// API 请求不缓存
|
||||
if (req.url.includes('/api/')) return;
|
||||
(event as any).respondWith(
|
||||
caches.match(req).then((cached) => cached || fetch(req))
|
||||
);
|
||||
});
|
||||