source names are unique

This commit is contained in:
root
2025-09-15 09:26:41 +05:00
parent 95c09289d6
commit 47f22b9c03
2 changed files with 37 additions and 28 deletions
+37 -27
View File
@@ -605,15 +605,18 @@ async function checkRssFeeds() {
try { try {
const response = await fetch('/api/health/rss'); const response = await fetch('/api/health/rss');
const result = await response.json(); const result = await response.json();
if (result.success) { if (result.success) {
const data = result.data; const data = result.data;
console.log('Общий статус:', data.overallStatus); console.log('Общий статус:', data.overallStatus);
console.log('Доступные ленты:', data.accessibleFeeds); console.log('Доступные ленты:', data.accessibleFeeds);
console.log('Недоступные ленты:', data.unaccessibleFeeds); console.log('Недоступные ленты:', data.unaccessibleFeeds);
// Показать рекомендации для недоступных лент // Показать рекомендации для недоступных лент
if (data.recommendations && Object.keys(data.recommendations).length > 0) { if (
data.recommendations &&
Object.keys(data.recommendations).length > 0
) {
console.log('Рекомендации по альтернативным URL:'); console.log('Рекомендации по альтернативным URL:');
Object.entries(data.recommendations).forEach(([source, url]) => { Object.entries(data.recommendations).forEach(([source, url]) => {
console.log(`${source}: ${url}`); console.log(`${source}: ${url}`);
@@ -632,14 +635,14 @@ function RssStatusWidget() {
useEffect(() => { useEffect(() => {
fetch('/api/health/rss') fetch('/api/health/rss')
.then(res => res.json()) .then((res) => res.json())
.then(data => { .then((data) => {
if (data.success) { if (data.success) {
setRssStatus(data.data); setRssStatus(data.data);
} }
setLoading(false); setLoading(false);
}) })
.catch(err => { .catch((err) => {
console.error('Ошибка загрузки статуса RSS:', err); console.error('Ошибка загрузки статуса RSS:', err);
setLoading(false); setLoading(false);
}); });
@@ -648,28 +651,35 @@ function RssStatusWidget() {
if (loading) return <div>Загрузка...</div>; if (loading) return <div>Загрузка...</div>;
return ( return (
<div className="rss-status"> <div className='rss-status'>
<h3>Статус RSS-лент</h3> <h3>Статус RSS-лент</h3>
<div className={`status ${rssStatus.overallStatus.toLowerCase()}`}> <div className={`status ${rssStatus.overallStatus.toLowerCase()}`}>
{rssStatus.overallStatus === 'UP' ? '✅ Все ленты доступны' : {rssStatus.overallStatus === 'UP'
rssStatus.overallStatus === 'DEGRADED' ? '⚠️ Некоторые ленты недоступны' : ? '✅ Все ленты доступны'
'❌ Ленты недоступны'} : rssStatus.overallStatus === 'DEGRADED'
? '⚠️ Некоторые ленты недоступны'
: '❌ Ленты недоступны'}
</div> </div>
<div className="feeds-list"> <div className='feeds-list'>
{Object.entries(rssStatus.accessibilityResults).map(([source, isAccessible]) => ( {Object.entries(rssStatus.accessibilityResults).map(
<div key={source} className={`feed-item ${isAccessible ? 'accessible' : 'inaccessible'}`}> ([source, isAccessible]) => (
<span className="source">{source}</span> <div
<span className="status"> key={source}
{isAccessible ? '✅' : '❌'} className={`feed-item ${
</span> isAccessible ? 'accessible' : 'inaccessible'
{!isAccessible && rssStatus.recommendations[source] && ( }`}
<div className="recommendation"> >
Рекомендация: {rssStatus.recommendations[source]} <span className='source'>{source}</span>
</div> <span className='status'>{isAccessible ? '✅' : '❌'}</span>
)} {!isAccessible && rssStatus.recommendations[source] && (
</div> <div className='recommendation'>
))} Рекомендация: {rssStatus.recommendations[source]}
</div>
)}
</div>
)
)}
</div> </div>
</div> </div>
); );
@@ -867,8 +877,8 @@ function NewsFilter({ onFilterChange }) {
// Загружаем список источников при монтировании компонента // Загружаем список источников при монтировании компонента
fetch('/api/items/sources') fetch('/api/items/sources')
.then((res) => res.json()) .then((res) => res.json())
.then((data) => { .then((data) => {
if (data.success) { if (data.success) {
setSources(data.data); setSources(data.data);
} }
}) })
@@ -47,7 +47,6 @@ public interface MarketItemRepository extends MongoRepository<MarketItem, String
/** /**
* Получить все уникальные названия источников * Получить все уникальные названия источников
*/ */
@Query(value = "{}", fields = "{'sourceName': 1}")
List<String> findDistinctSourceNames(); List<String> findDistinctSourceNames();
/** /**