پوشش راهنمای داوطلب
100%Source for 100%Source: گزارش پوشش اطلس دانشگاههای ایرانTables: public/explore/data/universities.json, public/explore/data/city-profiles.json, public/explore/data/province-profiles.json
پوشش راهنمای کاربردی روی مجموع رکوردهای استان، شهر و مرکز آموزشی.
Source for پوشش راهنمای داوطلبپوشش راهنمای کاربردی روی مجموع رکوردهای استان، شهر و مرکز آموزشی.Source: گزارش پوشش اطلس دانشگاههای ایرانTables: public/explore/data/universities.json, public/explore/data/city-profiles.json, public/explore/data/province-profiles.json
شمارش وضعیت پوشش با SQLite JSON1 روی خروجیهای ساختهشده اطلس پس از اعتبارسنجی.
WITH
universities AS (
SELECT value AS row
FROM json_each(readfile('public/explore/data/universities.json'), '$.records')
),
cities AS (
SELECT value AS row
FROM json_each(readfile('public/explore/data/city-profiles.json'), '$.records')
),
provinces AS (
SELECT value AS row
FROM json_each(readfile('public/explore/data/province-profiles.json'), '$.records')
)
SELECT 'راهنمای داوطلب برای استان' AS area,
SUM(CASE WHEN trim(json_extract(row, '$.applicantGuide.summary')) <> '' THEN 1 ELSE 0 END) AS completed,
COUNT(*) AS total,
'decision-guide' AS kind,
'ready' AS severity
FROM provinces
UNION ALL
SELECT 'راهنمای داوطلب برای شهر',
SUM(CASE WHEN trim(json_extract(row, '$.studentGuide.summary')) <> '' THEN 1 ELSE 0 END),
COUNT(*), 'decision-guide', 'ready'
FROM cities
UNION ALL
SELECT 'راهنمای داوطلب برای مرکز آموزشی',
SUM(CASE WHEN trim(json_extract(row, '$.applicantGuide.summary')) <> '' THEN 1 ELSE 0 END),
COUNT(*), 'decision-guide', 'ready'
FROM universities
UNION ALL
SELECT 'لینک کشف مکان برای شهر',
SUM(CASE WHEN json_array_length(json_extract(row, '$.placeDiscovery.searches')) >= 5 THEN 1 ELSE 0 END),
COUNT(*), 'live-discovery', 'ready'
FROM cities
UNION ALL
SELECT 'سایت رسمی دانشگاه',
SUM(CASE WHEN json_type(row, '$.officialWebsite') = 'text' AND trim(json_extract(row, '$.officialWebsite')) <> '' THEN 1 ELSE 0 END),
COUNT(*), 'official-evidence', 'high-gap'
FROM universities
UNION ALL
SELECT 'دامنهٔ احتمالی با تطبیق جستوجو',
SUM(CASE WHEN json_type(row, '$.websiteCandidate.candidateWebsite') = 'text'
AND json_type(row, '$.officialWebsite') = 'null'
THEN 1 ELSE 0 END),
COUNT(*), 'candidate-evidence', 'in-progress'
FROM universities
UNION ALL
SELECT 'هویت ادغامشده تعیینتکلیفشده',
SUM(CASE WHEN json_extract(row, '$.identityStatus') = 'merged-into-parent' THEN 1 ELSE 0 END),
COUNT(*), 'identity-evidence', 'high-gap'
FROM universities
UNION ALL
SELECT 'تلفن و آدرس منبعدار دانشگاه',
SUM(CASE WHEN json_type(row, '$.phone') = 'text'
AND json_type(row, '$.address') = 'text'
AND json_type(row, '$.contactEvidence.phoneSource') = 'text'
AND json_type(row, '$.contactEvidence.addressSource') = 'text'
THEN 1 ELSE 0 END),
COUNT(*), 'official-evidence', 'high-gap'
FROM universities
UNION ALL
SELECT 'حملونقل شهری منبعدار',
SUM(CASE WHEN json_extract(row, '$.coverage.mobility') = 'official-operator-presence-checked' THEN 1 ELSE 0 END),
COUNT(*), 'official-evidence', 'high-gap'
FROM cities
UNION ALL
SELECT 'خلاصه نظر قابل انتشار برای شهر',
SUM(CASE WHEN json_extract(row, '$.coverage.socialReviewDigest') = 'publishable-multisource' THEN 1 ELSE 0 END),
COUNT(*), 'sampled-evidence', 'high-gap'
FROM cities
UNION ALL
SELECT 'پایلوت نظر شهر؛ هنوز قابل انتشار نیست',
SUM(CASE WHEN json_extract(row, '$.coverage.socialReviewDigest') = 'pilot-insufficient-sample' THEN 1 ELSE 0 END),
COUNT(*), 'pilot-evidence', 'in-progress'
FROM cities;