Update app.py
Browse files
app.py
CHANGED
|
@@ -1493,9 +1493,22 @@ CARA BERPIKIR — CHAIN OF THOUGHT (lakukan ini secara SILENT sebelum menjawab):
|
|
| 1493 |
def _t(i, e, h):
|
| 1494 |
return {'id': i, 'en': e, 'hi': h}[lang]
|
| 1495 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1496 |
# ① Who is Maya / greetings
|
| 1497 |
-
|
| 1498 |
-
|
|
|
|
|
|
|
| 1499 |
response = _t(
|
| 1500 |
"Hei! Aku **Maya**, AI Credit Advisor kamu Aku dirancang untuk bantu kamu pahami skor kredit dan strategi bisnis UMKM. "
|
| 1501 |
"Skor PD kamu sekarang **" + str(round(pd_pct,1)) + "%** — " +
|
|
@@ -1532,6 +1545,94 @@ CARA BERPIKIR — CHAIN OF THOUGHT (lakukan ini secara SILENT sebelum menjawab):
|
|
| 1532 |
adjustments['digital_presence_score'] = 75
|
| 1533 |
adjustments['monthly_cash_flow'] = 25000000
|
| 1534 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1535 |
# ③ How to improve / lower PD → triggers sliders
|
| 1536 |
elif any(w in low for w in ['improve','better','lower','reduce','tingkatkan','kurangi',
|
| 1537 |
'turunkan','cara','gimana','bagaimana','naik','turun',
|
|
@@ -1576,8 +1677,11 @@ CARA BERPIKIR — CHAIN OF THOUGHT (lakukan ini secara SILENT sebelum menjawab):
|
|
| 1576 |
)
|
| 1577 |
|
| 1578 |
# ④ Why high score / SHAP factors — CoT picks actual SHAP values
|
| 1579 |
-
|
| 1580 |
-
|
|
|
|
|
|
|
|
|
|
| 1581 |
ti = int(np.argsort(np.abs(shap_vals))[-1])
|
| 1582 |
ti2 = int(np.argsort(np.abs(shap_vals))[-2])
|
| 1583 |
fn = feature_names[ti]
|
|
@@ -1632,7 +1736,8 @@ CARA BERPIKIR — CHAIN OF THOUGHT (lakukan ini secara SILENT sebelum menjawab):
|
|
| 1632 |
)
|
| 1633 |
|
| 1634 |
# ⑤ Ideal loan amount → trigger loan_rp slider
|
| 1635 |
-
|
|
|
|
| 1636 |
'limit','ideal','rekomendasi pinjaman']):
|
| 1637 |
if cf > 0:
|
| 1638 |
dur_val = raw_input.get('duration', 24)
|
|
@@ -1663,40 +1768,6 @@ CARA BERPIKIR — CHAIN OF THOUGHT (lakukan ini secara SILENT sebelum menjawab):
|
|
| 1663 |
"Sahi sujhaav ke liye pehle maasik naqad pravaah bharein!"
|
| 1664 |
)
|
| 1665 |
|
| 1666 |
-
# ⑥ Digital score targeted question → trigger slider
|
| 1667 |
-
elif any(w in low for w in ['digital score','skor digital','digital presence',
|
| 1668 |
-
'naikin digital','naik digital','digital jadi','digital ke']):
|
| 1669 |
-
target = 80
|
| 1670 |
-
try:
|
| 1671 |
-
nums = re.findall(r'\d+', user_msg)
|
| 1672 |
-
if nums:
|
| 1673 |
-
target = int(nums[-1])
|
| 1674 |
-
except Exception:
|
| 1675 |
-
pass
|
| 1676 |
-
target = max(1, min(100, target))
|
| 1677 |
-
adjustments['digital_presence_score'] = target
|
| 1678 |
-
cur_dig = raw_input.get('digital_presence_score', 0)
|
| 1679 |
-
response = _t(
|
| 1680 |
-
"Digital score **" + str(cur_dig) + " → " + str(target) + "** sudah aku set di What-If!\n\n"
|
| 1681 |
-
"Cara naik digital score:\n"
|
| 1682 |
-
"1. **Google Business Profile** — verifikasi & lengkapi info\n"
|
| 1683 |
-
"2. **Aktif di marketplace** — Tokopedia/Shopee/TikTok Shop\n"
|
| 1684 |
-
"3. **Media sosial konsisten** — posting minimal 3x/minggu\n\n"
|
| 1685 |
-
"Cek tab What-If untuk lihat dampak ke PD!",
|
| 1686 |
-
"Digital score **" + str(cur_dig) + " → " + str(target) + "** set in What-If!\n\n"
|
| 1687 |
-
"Ways to improve:\n"
|
| 1688 |
-
"1. **Google Business Profile** — verify & complete\n"
|
| 1689 |
-
"2. **Active marketplace** — Tokopedia/Shopee/TikTok Shop\n"
|
| 1690 |
-
"3. **Consistent social media** — post 3x/week\n\n"
|
| 1691 |
-
"Check the What-If tab for PD impact!",
|
| 1692 |
-
"Digital score **" + str(cur_dig) + " → " + str(target) + "** What-If mein set!\n\n"
|
| 1693 |
-
"Sudhaar ke tarike:\n"
|
| 1694 |
-
"1. Google Business Profile verify karein\n"
|
| 1695 |
-
"2. Marketplace active rahein\n"
|
| 1696 |
-
"3. Social media niyamit rahein\n\n"
|
| 1697 |
-
"What-If tab mein PD prabhav dekhein!"
|
| 1698 |
-
)
|
| 1699 |
-
|
| 1700 |
# ⑦ Savings / cash flow topics
|
| 1701 |
elif any(w in low for w in ['tabungan','saving','nabung','menabung','savings',
|
| 1702 |
'uang','keuangan','finance','financial','simpan']):
|
|
@@ -1723,6 +1794,7 @@ CARA BERPIKIR — CHAIN OF THOUGHT (lakukan ini secara SILENT sebelum menjawab):
|
|
| 1723 |
adjustments['monthly_cash_flow'] = int(cf * 1.3)
|
| 1724 |
|
| 1725 |
# ⑧ Credit history
|
|
|
|
| 1726 |
elif any(w in low for w in ['riwayat kredit','credit history','kredit history',
|
| 1727 |
'credit record','riwayat','history kredit']):
|
| 1728 |
ch_val = raw_input.get('credit_history', '-')
|
|
@@ -1779,57 +1851,6 @@ CARA BERPIKIR — CHAIN OF THOUGHT (lakukan ini secara SILENT sebelum menjawab):
|
|
| 1779 |
if dig < 75:
|
| 1780 |
adjustments['digital_presence_score'] = 75
|
| 1781 |
|
| 1782 |
-
# ⑩ Humor: absurd / animal / 6-month plan — CoT robustness
|
| 1783 |
-
elif any(w in low for w in ['beruang','maling','jerapah','babi','kucing','lucu',
|
| 1784 |
-
'absurd','random','hewan','binatang']):
|
| 1785 |
-
response = _t(
|
| 1786 |
-
"Haha, oke oke! 😄 Tapi balik ke topik serius — bahkan si beruang pun butuh skor kredit bagus buat pinjam madu dari bank!\n\n"
|
| 1787 |
-
"Profil kamu: PD **" + str(round(pd_pct,1)) + "%** — " +
|
| 1788 |
-
('udah bagus banget nih!' if pd_pct < 20 else 'masih ada yang bisa diperbaiki.') +
|
| 1789 |
-
" Ada yang mau ditanyain soal kredit atau bisnis?",
|
| 1790 |
-
"Haha, fair enough! 😄 But back to business — even a bear needs good credit to borrow honey from the bank!\n\n"
|
| 1791 |
-
"Your profile: PD **" + str(round(pd_pct,1)) + "%** — " +
|
| 1792 |
-
('already looking great!' if pd_pct < 20 else 'some room to improve.') +
|
| 1793 |
-
" Anything credit or business related?",
|
| 1794 |
-
"Haha, theek hai! 😄 Lekin credit ki baat karein — bhaaloo ko bhi bank se madhu udhaarne ke liye achha score chahiye!\n\n"
|
| 1795 |
-
"Aapka PD **" + str(round(pd_pct,1)) + "%** — " +
|
| 1796 |
-
('pehle se badhiya!' if pd_pct < 20 else 'kuch sudhaar ho sakta hai.') +
|
| 1797 |
-
" Kuch aur poochna hai?"
|
| 1798 |
-
)
|
| 1799 |
-
|
| 1800 |
-
# ⑪ 6-month action plan
|
| 1801 |
-
elif any(w in low for w in ['6 bulan','rencana','plan','action plan','ke depan',
|
| 1802 |
-
'persiapan','apply lagi','sebelum apply']):
|
| 1803 |
-
rec_items = []
|
| 1804 |
-
if not npwp:
|
| 1805 |
-
rec_items.append(_t(
|
| 1806 |
-
"**Bulan 1**: Urus NPWP di pajak.go.id (gratis, 1-3 hari)",
|
| 1807 |
-
"**Month 1**: Register NPWP at pajak.go.id (free, 1-3 days)",
|
| 1808 |
-
"**Maah 1**: NPWP register karein pajak.go.id par"
|
| 1809 |
-
))
|
| 1810 |
-
if dig < 60:
|
| 1811 |
-
rec_items.append(_t(
|
| 1812 |
-
"**Bulan 1-2**: Aktifkan Google Business + daftar marketplace",
|
| 1813 |
-
"**Month 1-2**: Activate Google Business + register on marketplace",
|
| 1814 |
-
"**Maah 1-2**: Google Business activate + marketplace register karein"
|
| 1815 |
-
))
|
| 1816 |
-
if cf < 15e6:
|
| 1817 |
-
rec_items.append(_t(
|
| 1818 |
-
"**Bulan 2-4**: Pisah rekening bisnis, dokumentasi semua pemasukan",
|
| 1819 |
-
"**Month 2-4**: Separate business account, document all income",
|
| 1820 |
-
"**Maah 2-4**: Vyapaar khaata alag karein, sabhi aay document karein"
|
| 1821 |
-
))
|
| 1822 |
-
rec_items.append(_t(
|
| 1823 |
-
"**Bulan 5-6**: Simulasikan ulang di What-If, ajukan kredit jika PD < 20%",
|
| 1824 |
-
"**Month 5-6**: Re-simulate in What-If, apply when PD < 20%",
|
| 1825 |
-
"**Maah 5-6**: What-If mein re-simulate karein, PD < 20% ho tab apply karein"
|
| 1826 |
-
))
|
| 1827 |
-
response = _t(
|
| 1828 |
-
"Action plan 6 bulan buat kamu (PD sekarang **" + str(round(pd_pct,1)) + "%**):\n\n",
|
| 1829 |
-
"6-month action plan (current PD **" + str(round(pd_pct,1)) + "%**):\n\n",
|
| 1830 |
-
"6 maah ka plan (abhi PD **" + str(round(pd_pct,1)) + "%**):\n\n"
|
| 1831 |
-
) + '\n'.join(rec_items[:4])
|
| 1832 |
-
|
| 1833 |
# ⑫ Generic fallback
|
| 1834 |
else:
|
| 1835 |
top_issue = _get_top_issue(raw_input, pd_pct, lang)
|
|
|
|
| 1493 |
def _t(i, e, h):
|
| 1494 |
return {'id': i, 'en': e, 'hi': h}[lang]
|
| 1495 |
|
| 1496 |
+
# Helper: word-boundary check for short keywords (avoids 'hi' matching 'mempengaruhi')
|
| 1497 |
+
def _kw(msg_low, word_list):
|
| 1498 |
+
for w in word_list:
|
| 1499 |
+
if len(w) <= 3:
|
| 1500 |
+
if re.search(r'\b' + re.escape(w) + r'\b', msg_low):
|
| 1501 |
+
return True
|
| 1502 |
+
else:
|
| 1503 |
+
if w in msg_low:
|
| 1504 |
+
return True
|
| 1505 |
+
return False
|
| 1506 |
+
|
| 1507 |
# ① Who is Maya / greetings
|
| 1508 |
+
# FIXED: removed 'kamu','km' (too broad — appears in almost every sentence)
|
| 1509 |
+
# FIXED: 'hi','hei','hai' use word-boundary via _kw helper
|
| 1510 |
+
if _kw(low, ['siapa','who are you','perkenalan','halo','hello','hei','hai','hi',
|
| 1511 |
+
'maya','nama kamu','you are']):
|
| 1512 |
response = _t(
|
| 1513 |
"Hei! Aku **Maya**, AI Credit Advisor kamu Aku dirancang untuk bantu kamu pahami skor kredit dan strategi bisnis UMKM. "
|
| 1514 |
"Skor PD kamu sekarang **" + str(round(pd_pct,1)) + "%** — " +
|
|
|
|
| 1545 |
adjustments['digital_presence_score'] = 75
|
| 1546 |
adjustments['monthly_cash_flow'] = 25000000
|
| 1547 |
|
| 1548 |
+
# ⑥ Digital score targeted — MOVED UP before ③ and ⑤
|
| 1549 |
+
# FIXED: was after ③improve which had 'naik' catching 'naikin digital score'
|
| 1550 |
+
elif any(w in low for w in ['digital score','skor digital','digital presence',
|
| 1551 |
+
'naikin digital','naik digital','digital jadi','digital ke']):
|
| 1552 |
+
target = 80
|
| 1553 |
+
try:
|
| 1554 |
+
nums = re.findall(r'\d+', user_msg)
|
| 1555 |
+
if nums:
|
| 1556 |
+
target = int(nums[-1])
|
| 1557 |
+
except Exception:
|
| 1558 |
+
pass
|
| 1559 |
+
target = max(1, min(100, target))
|
| 1560 |
+
adjustments['digital_presence_score'] = target
|
| 1561 |
+
cur_dig = raw_input.get('digital_presence_score', 0)
|
| 1562 |
+
response = _t(
|
| 1563 |
+
"Digital score **" + str(cur_dig) + " → " + str(target) + "** sudah aku set di What-If!\n\n"
|
| 1564 |
+
"Cara naik digital score:\n"
|
| 1565 |
+
"1. **Google Business Profile** — verifikasi & lengkapi info\n"
|
| 1566 |
+
"2. **Aktif di marketplace** — Tokopedia/Shopee/TikTok Shop\n"
|
| 1567 |
+
"3. **Media sosial konsisten** — posting minimal 3x/minggu\n\n"
|
| 1568 |
+
"Cek tab What-If untuk lihat dampak ke PD!",
|
| 1569 |
+
"Digital score **" + str(cur_dig) + " → " + str(target) + "** set in What-If!\n\n"
|
| 1570 |
+
"Ways to improve:\n"
|
| 1571 |
+
"1. **Google Business Profile** — verify & complete\n"
|
| 1572 |
+
"2. **Active marketplace** — Tokopedia/Shopee/TikTok Shop\n"
|
| 1573 |
+
"3. **Consistent social media** — post 3x/week\n\n"
|
| 1574 |
+
"Check the What-If tab for PD impact!",
|
| 1575 |
+
"Digital score **" + str(cur_dig) + " → " + str(target) + "** What-If mein set!\n\n"
|
| 1576 |
+
"Sudhaar ke tarike:\n"
|
| 1577 |
+
"1. Google Business Profile verify karein\n"
|
| 1578 |
+
"2. Marketplace active rahein\n"
|
| 1579 |
+
"3. Social media niyamit rahein\n\n"
|
| 1580 |
+
"What-If tab mein PD prabhav dekhein!"
|
| 1581 |
+
)
|
| 1582 |
+
|
| 1583 |
+
# ⑩ Humor/absurd — MOVED UP before ⑤loan
|
| 1584 |
+
# FIXED: 'kredit' in ⑤loan was catching "beruang... minta kredit bisa gak?"
|
| 1585 |
+
elif any(w in low for w in ['beruang','maling','jerapah','babi','kucing','lucu',
|
| 1586 |
+
'absurd','random','hewan','binatang','gajah','dinosaurus']):
|
| 1587 |
+
response = _t(
|
| 1588 |
+
"Haha, oke oke! 😄 Tapi balik ke topik serius — bahkan si beruang pun butuh skor kredit bagus buat pinjam madu dari bank!\n\n"
|
| 1589 |
+
"Profil kamu: PD **" + str(round(pd_pct,1)) + "%** — " +
|
| 1590 |
+
('udah bagus banget nih!' if pd_pct < 20 else 'masih ada yang bisa diperbaiki.') +
|
| 1591 |
+
" Ada yang mau ditanyain soal kredit atau bisnis?",
|
| 1592 |
+
"Haha, fair enough! 😄 But back to business — even a bear needs good credit to borrow honey from the bank!\n\n"
|
| 1593 |
+
"Your profile: PD **" + str(round(pd_pct,1)) + "%** — " +
|
| 1594 |
+
('already looking great!' if pd_pct < 20 else 'some room to improve.') +
|
| 1595 |
+
" Anything credit or business related?",
|
| 1596 |
+
"Haha, theek hai! 😄 Lekin credit ki baat karein — bhaaloo ko bhi bank se madhu udhaarne ke liye achha score chahiye!\n\n"
|
| 1597 |
+
"Aapka PD **" + str(round(pd_pct,1)) + "%** — " +
|
| 1598 |
+
('pehle se badhiya!' if pd_pct < 20 else 'kuch sudhaar ho sakta hai.') +
|
| 1599 |
+
" Kuch aur poochna hai?"
|
| 1600 |
+
)
|
| 1601 |
+
|
| 1602 |
+
# ⑪ 6-month action plan — MOVED UP before ④shap
|
| 1603 |
+
# FIXED: 'apa yang perlu' was triggering ④shap via 'apa yang' substring
|
| 1604 |
+
elif any(w in low for w in ['6 bulan','rencana','plan','action plan','ke depan',
|
| 1605 |
+
'persiapan','apply lagi','sebelum apply']):
|
| 1606 |
+
rec_items = []
|
| 1607 |
+
if not npwp:
|
| 1608 |
+
rec_items.append(_t(
|
| 1609 |
+
"**Bulan 1**: Urus NPWP di pajak.go.id (gratis, 1-3 hari)",
|
| 1610 |
+
"**Month 1**: Register NPWP at pajak.go.id (free, 1-3 days)",
|
| 1611 |
+
"**Maah 1**: NPWP register karein pajak.go.id par"
|
| 1612 |
+
))
|
| 1613 |
+
if dig < 60:
|
| 1614 |
+
rec_items.append(_t(
|
| 1615 |
+
"**Bulan 1-2**: Aktifkan Google Business + daftar marketplace",
|
| 1616 |
+
"**Month 1-2**: Activate Google Business + register on marketplace",
|
| 1617 |
+
"**Maah 1-2**: Google Business activate + marketplace register karein"
|
| 1618 |
+
))
|
| 1619 |
+
if cf < 15e6:
|
| 1620 |
+
rec_items.append(_t(
|
| 1621 |
+
"**Bulan 2-4**: Pisah rekening bisnis, dokumentasi semua pemasukan",
|
| 1622 |
+
"**Month 2-4**: Separate business account, document all income",
|
| 1623 |
+
"**Maah 2-4**: Vyapaar khaata alag karein, sabhi aay document karein"
|
| 1624 |
+
))
|
| 1625 |
+
rec_items.append(_t(
|
| 1626 |
+
"**Bulan 5-6**: Simulasikan ulang di What-If, ajukan kredit jika PD < 20%",
|
| 1627 |
+
"**Month 5-6**: Re-simulate in What-If, apply when PD < 20%",
|
| 1628 |
+
"**Maah 5-6**: What-If mein re-simulate karein, PD < 20% ho tab apply karein"
|
| 1629 |
+
))
|
| 1630 |
+
response = _t(
|
| 1631 |
+
"Action plan 6 bulan buat kamu (PD sekarang **" + str(round(pd_pct,1)) + "%**):\n\n",
|
| 1632 |
+
"6-month action plan (current PD **" + str(round(pd_pct,1)) + "%**):\n\n",
|
| 1633 |
+
"6 maah ka plan (abhi PD **" + str(round(pd_pct,1)) + "%**):\n\n"
|
| 1634 |
+
) + '\n'.join(rec_items[:4])
|
| 1635 |
+
|
| 1636 |
# ③ How to improve / lower PD → triggers sliders
|
| 1637 |
elif any(w in low for w in ['improve','better','lower','reduce','tingkatkan','kurangi',
|
| 1638 |
'turunkan','cara','gimana','bagaimana','naik','turun',
|
|
|
|
| 1677 |
)
|
| 1678 |
|
| 1679 |
# ④ Why high score / SHAP factors — CoT picks actual SHAP values
|
| 1680 |
+
# FIXED: removed 'apa yang' (matched 'berapa yang'), 'factor' (too broad)
|
| 1681 |
+
# Use specific phrases instead
|
| 1682 |
+
elif any(w in low for w in ['why','kenapa','mengapa','shap','pengaruh','faktor risiko',
|
| 1683 |
+
'driver','jelasin','jelaskan','explain','definisi',
|
| 1684 |
+
'kenapa skor','mengapa skor','yang mempengaruhi','apa penyebab']):
|
| 1685 |
ti = int(np.argsort(np.abs(shap_vals))[-1])
|
| 1686 |
ti2 = int(np.argsort(np.abs(shap_vals))[-2])
|
| 1687 |
fn = feature_names[ti]
|
|
|
|
| 1736 |
)
|
| 1737 |
|
| 1738 |
# ⑤ Ideal loan amount → trigger loan_rp slider
|
| 1739 |
+
# FIXED: removed 'besar' (too broad); ⑥digit and ⑩humor now come before this
|
| 1740 |
+
elif any(w in low for w in ['pinjaman','loan','kredit','berapa','amount',
|
| 1741 |
'limit','ideal','rekomendasi pinjaman']):
|
| 1742 |
if cf > 0:
|
| 1743 |
dur_val = raw_input.get('duration', 24)
|
|
|
|
| 1768 |
"Sahi sujhaav ke liye pehle maasik naqad pravaah bharein!"
|
| 1769 |
)
|
| 1770 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1771 |
# ⑦ Savings / cash flow topics
|
| 1772 |
elif any(w in low for w in ['tabungan','saving','nabung','menabung','savings',
|
| 1773 |
'uang','keuangan','finance','financial','simpan']):
|
|
|
|
| 1794 |
adjustments['monthly_cash_flow'] = int(cf * 1.3)
|
| 1795 |
|
| 1796 |
# ⑧ Credit history
|
| 1797 |
+
|
| 1798 |
elif any(w in low for w in ['riwayat kredit','credit history','kredit history',
|
| 1799 |
'credit record','riwayat','history kredit']):
|
| 1800 |
ch_val = raw_input.get('credit_history', '-')
|
|
|
|
| 1851 |
if dig < 75:
|
| 1852 |
adjustments['digital_presence_score'] = 75
|
| 1853 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1854 |
# ⑫ Generic fallback
|
| 1855 |
else:
|
| 1856 |
top_issue = _get_top_issue(raw_input, pd_pct, lang)
|