https://github.com/digitie/kor-travel-concierge
· scanned 2026-06-17 01:56 UTC (1 month, 1 week ago)
63 raw signals (0 security + 63 graph)
Last scanned 1 month, 1 week ago · v2 · last Δ +5.4 (diff) · 33 actionable findings from 1 signal source. 30 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 1147 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
quoteForShell |
software | healthy | tests/playwright.config.ts:quoteForShell |
main |
software | healthy | tests/scripts/seed_e2e.py:28 |
normalizeNextEnv |
software | healthy | tests/scripts/start-frontend.mjs:normalizeNextEnv |
stopChild |
software | healthy | tests/scripts/start-frontend.mjs:stopChild |
resolvePython |
software | healthy | tests/scripts/start-backend.mjs:resolvePython |
forwardSignals |
software | healthy | tests/scripts/start-backend.mjs:forwardSignals |
stop |
software | healthy | tests/scripts/start-backend.mjs:stop |
job |
software | healthy | tests/e2e/ktc.spec.ts:job |
runs |
software | healthy | tests/e2e/ktc.spec.ts:runs |
candidates |
software | healthy | tests/e2e/ktc.spec.ts:candidates |
settings |
software | healthy | tests/e2e/ktc.spec.ts:settings |
seedE2EData |
software | healthy | tests/e2e/ktc.spec.ts:seedE2EData |
expectSeedReady |
software | healthy | tests/e2e/ktc.spec.ts:expectSeedReady |
resolvePython |
software | healthy | tests/e2e/ktc.spec.ts:resolvePython |
collectConsoleErrors |
software | healthy | tests/e2e/ktc.spec.ts:collectConsoleErrors |
expectRelevantConsoleErrors |
software | healthy | tests/e2e/ktc.spec.ts:expectRelevantConsoleErrors |
isRelevantConsoleError |
software | healthy | tests/e2e/ktc.spec.ts:isRelevantConsoleError |
lifespan |
software | healthy | backend/main.py:19 |
create_app |
software | healthy | backend/main.py:25 |
read_root |
software | healthy | backend/main.py:46 |
health |
software | healthy | backend/main.py:50 |
_runtime |
software | healthy | backend/tests/test_mcp_tools.py:30 |
_add_place |
software | healthy | backend/tests/test_mcp_tools.py:34 |
_add_video_and_candidate |
software | healthy | backend/tests/test_mcp_tools.py:42 |
test_harvest_travel_destinations_creates_mcp_run_and_is_ide… |
software | healthy | backend/tests/test_mcp_tools.py:62 |
test_get_harvest_status_returns_result_payload |
software | healthy | backend/tests/test_mcp_tools.py:89 |
test_search_existing_places_supports_query_category_and_rad… |
software | healthy | backend/tests/test_mcp_tools.py:111 |
test_correct_place_updates_fields_and_records_audit |
software | healthy | backend/tests/test_mcp_tools.py:130 |
test_merge_places_moves_mappings_and_deletes_source |
software | healthy | backend/tests/test_mcp_tools.py:150 |
test_idempotency_key_rejects_parameter_mismatch |
software | healthy | backend/tests/test_mcp_tools.py:190 |
test_trigger_deep_research_creates_pending_run |
software | healthy | backend/tests/test_mcp_tools.py:205 |
test_review_unmatched_place_updates_review_metadata |
software | healthy | backend/tests/test_mcp_tools.py:224 |
test_resolve_place_candidate_create_place_adds_mapping |
software | healthy | backend/tests/test_mcp_tools.py:239 |
test_resolve_place_candidate_can_ignore_candidate |
software | healthy | backend/tests/test_mcp_tools.py:264 |
test_write_disabled_blocks_write_tools |
software | healthy | backend/tests/test_mcp_tools.py:282 |
test_haversine_known_distance |
software | healthy | backend/tests/test_place_service.py:15 |
_add_place |
software | healthy | backend/tests/test_place_service.py:21 |
test_find_within_radius_filters_and_sorts |
software | healthy | backend/tests/test_place_service.py:29 |
test_excludes_non_geocoded |
software | healthy | backend/tests/test_place_service.py:47 |
test_find_duplicate_candidates |
software | healthy | backend/tests/test_place_service.py:55 |
test_list_unmatched_candidates |
software | healthy | backend/tests/test_place_service.py:65 |
test_resolve_create_place_fills_category_code_via_selector |
software | healthy | backend/tests/test_place_service.py:88 |
fake_selector |
software | healthy | backend/tests/test_place_service.py:101 |
test_resolve_create_place_without_selector_leaves_code_none |
software | healthy | backend/tests/test_place_service.py:125 |
test_list_place_summaries_sorts_by_mention_count |
software | healthy | backend/tests/test_place_service.py:147 |
test_process_harvest_videos_creates_place_from_summarized_p… |
software | healthy | backend/tests/test_etl_postprocess.py:23 |
fetch_transcript |
software | healthy | backend/tests/test_etl_postprocess.py:129 |
geocode_decider |
software | healthy | backend/tests/test_etl_postprocess.py:144 |
reporter |
software | healthy | backend/tests/test_etl_postprocess.py:77 |
test_process_harvest_videos_keeps_candidate_when_geocoder_n… |
software | healthy | backend/tests/test_etl_postprocess.py:119 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
.env.example |
software | healthy | .env.example |
CLAUDE.md |
software | healthy | CLAUDE.md |
AGENTS.md |
software | healthy | AGENTS.md |
README.md |
software | healthy | README.md |
LICENSE |
software | healthy | LICENSE |
docker-compose.yml |
software | healthy | docker-compose.yml |
SKILL.md |
software | healthy | SKILL.md |
playwright.config.ts |
software | healthy | tests/playwright.config.ts |
package-lock.json |
software | healthy | tests/package-lock.json |
package.json |
software | healthy | tests/package.json |
seed_e2e.py |
software | healthy | tests/scripts/seed_e2e.py |
start-frontend.mjs |
software | healthy | tests/scripts/start-frontend.mjs |
start-backend.mjs |
software | healthy | tests/scripts/start-backend.mjs |
ktc.spec.ts |
software | healthy | tests/e2e/ktc.spec.ts |
requirements.txt |
software | healthy | backend/requirements.txt |
main.py |
software | healthy | backend/main.py |
test_mcp_tools.py |
software | healthy | backend/tests/test_mcp_tools.py |
test_place_service.py |
software | healthy | backend/tests/test_place_service.py |
test_etl_postprocess.py |
software | healthy | backend/tests/test_etl_postprocess.py |
conftest.py |
software | healthy | backend/tests/conftest.py |
test_etl_geocoding.py |
software | healthy | backend/tests/test_etl_geocoding.py |
test_etl_pipeline.py |
software | healthy | backend/tests/test_etl_pipeline.py |
test_place_export_service.py |
software | healthy | backend/tests/test_place_export_service.py |
test_etl_poi.py |
software | healthy | backend/tests/test_etl_poi.py |
test_models_spatial.py |
software | healthy | backend/tests/test_models_spatial.py |
__init__.py |
software | healthy | backend/tests/__init__.py |
test_api.py |
software | healthy | backend/tests/test_api.py |
test_etl_ingest.py |
software | healthy | backend/tests/test_etl_ingest.py |
test_etl_transcript.py |
software | healthy | backend/tests/test_etl_transcript.py |
test_feature_export_api.py |
software | healthy | backend/tests/test_feature_export_api.py |
test_etl_frame_extraction.py |
software | healthy | backend/tests/test_etl_frame_extraction.py |
test_etl_gemini_client.py |
software | healthy | backend/tests/test_etl_gemini_client.py |
test_etl_video_analysis.py |
software | healthy | backend/tests/test_etl_video_analysis.py |
test_etl_ranking.py |
software | healthy | backend/tests/test_etl_ranking.py |
test_category_suggestion.py |
software | healthy | backend/tests/test_category_suggestion.py |
test_etl_summarize.py |
software | healthy | backend/tests/test_etl_summarize.py |
test_crawl_run_service.py |
software | healthy | backend/tests/test_crawl_run_service.py |
test_api_auth.py |
software | healthy | backend/tests/test_api_auth.py |
test_postgis_database.py |
software | healthy | backend/tests/test_postgis_database.py |
test_etl_geocode_service.py |
software | healthy | backend/tests/test_etl_geocode_service.py |
test_scheduler_worker.py |
software | healthy | backend/tests/test_scheduler_worker.py |
test_settings_and_audit.py |
software | healthy | backend/tests/test_settings_and_audit.py |
env.py |
software | healthy | backend/alembic/env.py |
20260610_0004_candidate_feature_evidence.py |
software | healthy | backend/alembic/versions/20260610_0004_candidate_feature_ev… |
20260610_0002_youtube_source_tables.py |
software | healthy | backend/alembic/versions/20260610_0002_youtube_source_table… |
20260610_0005_feature_exports.py |
software | healthy | backend/alembic/versions/20260610_0005_feature_exports.py |
20260610_0001_postgres_postgis_bootstrap.py |
software | healthy | backend/alembic/versions/20260610_0001_postgres_postgis_boo… |
20260610_0006_place_category_code_suggestion.py |
software | healthy | backend/alembic/versions/20260610_0006_place_category_code_… |
20260610_0003_source_scan_targets.py |
software | healthy | backend/alembic/versions/20260610_0003_source_scan_targets.… |
cli.py |
software | healthy | backend/ktc/cli.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
FakeVWorldClient |
software | healthy | backend/tests/test_etl_geocoding.py:186 |
FakeResponse |
software | healthy | backend/tests/test_etl_poi.py:82 |
_Fetched |
software | healthy | backend/tests/test_etl_transcript.py:62 |
_NewApi |
software | healthy | backend/tests/test_etl_transcript.py:69 |
SettingsStub |
software | healthy | backend/tests/test_etl_frame_extraction.py:138 |
_Resp |
software | healthy | backend/tests/test_etl_gemini_client.py:11 |
FakeResponse |
software | healthy | backend/tests/test_etl_video_analysis.py:164 |
FakeVWorld |
software | healthy | backend/tests/test_etl_geocode_service.py:205 |
HarvestRequest |
software | healthy | backend/ktc/api/routes.py:46 |
HarvestJob |
software | healthy | backend/ktc/api/routes.py:58 |
TranscriptRequest |
software | healthy | backend/ktc/api/routes.py:65 |
RunStatusLog |
software | healthy | backend/ktc/api/routes.py:72 |
HarvestStatus |
software | healthy | backend/ktc/api/routes.py:81 |
CorrectPlaceRequest |
software | healthy | backend/ktc/api/routes.py:93 |
ResolveCandidateRequest |
software | healthy | backend/ktc/api/routes.py:107 |
DeepResearchRequest |
software | healthy | backend/ktc/api/routes.py:125 |
DeepResearchError |
software | healthy | backend/ktc/etl/deep_research_service.py:29 |
DeepResearchResult |
software | healthy | backend/ktc/etl/deep_research_service.py:33 |
GeocodeCandidate |
software | healthy | backend/ktc/etl/geocoding.py:34 |
GeocodeDecision |
software | healthy | backend/ktc/etl/geocoding.py:45 |
KakaoGeocoder |
software | healthy | backend/ktc/etl/geocoding.py:113 |
NaverGeocoder |
software | healthy | backend/ktc/etl/geocoding.py:217 |
FrameExtractionError |
software | healthy | backend/ktc/etl/frame_extraction.py:27 |
StreamUrlResolver |
software | healthy | backend/ktc/etl/frame_extraction.py:31 |
FrameExtractor |
software | healthy | backend/ktc/etl/frame_extraction.py:36 |
FrameExtractionResult |
software | healthy | backend/ktc/etl/frame_extraction.py:42 |
GeminiRequestError |
software | healthy | backend/ktc/etl/gemini_client.py:23 |
YouTubeApiError |
software | healthy | backend/ktc/etl/youtube_client.py:29 |
YouTubeQuotaExceededError |
software | healthy | backend/ktc/etl/youtube_client.py:33 |
YouTubeClient |
software | healthy | backend/ktc/etl/youtube_client.py:37 |
TranscriptSegment |
software | healthy | backend/ktc/etl/transcript.py:23 |
TranscriptResult |
software | healthy | backend/ktc/etl/transcript.py:29 |
VideoAnalysisError |
software | healthy | backend/ktc/etl/video_analysis_service.py:40 |
UrlSummaryPlace |
software | healthy | backend/ktc/etl/video_analysis_service.py:44 |
UrlSummaryResult |
software | healthy | backend/ktc/etl/video_analysis_service.py:58 |
ReconciledPlace |
software | healthy | backend/ktc/etl/video_analysis_service.py:68 |
ReconcileResult |
software | healthy | backend/ktc/etl/video_analysis_service.py:80 |
ExtractedPOI |
software | healthy | backend/ktc/etl/poi_extraction.py:27 |
POIExtractionResult |
software | healthy | backend/ktc/etl/poi_extraction.py:39 |
POIExtractionError |
software | healthy | backend/ktc/etl/poi_extraction.py:85 |
MediaStore |
software | healthy | backend/ktc/etl/media_store.py:53 |
InMemoryMediaStore |
software | healthy | backend/ktc/etl/media_store.py:69 |
RustFSMediaStore |
software | healthy | backend/ktc/etl/media_store.py:89 |
HashingReader |
software | healthy | backend/ktc/etl/media_store.py:135 |
_GeocodeContext |
software | healthy | backend/ktc/etl/postprocess_service.py:263 |
EvidenceSourceKind |
software | healthy | backend/ktc/models/feature_evidence.py:8 |
FeatureExportStatus |
software | healthy | backend/ktc/models/feature_evidence.py:16 |
TargetType |
software | healthy | backend/ktc/models/source_target.py:18 |
SourceTarget |
software | healthy | backend/ktc/models/source_target.py:25 |
AuditLog |
software | healthy | backend/ktc/models/audit_log.py:15 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
SourceTarget |
data | healthy | backend/ktc/models/source_target.py |
source_targets |
data | healthy | backend/ktc/models/source_target.py |
AuditLog |
data | healthy | backend/ktc/models/audit_log.py |
audit_logs |
data | healthy | backend/ktc/models/audit_log.py |
VideoPlaceMapping |
data | healthy | backend/ktc/models/video_place_mapping.py |
video_place_mappings |
data | healthy | backend/ktc/models/video_place_mapping.py |
TravelPlace |
data | healthy | backend/ktc/models/travel_place.py |
travel_places |
data | healthy | backend/ktc/models/travel_place.py |
FeatureExport |
data | healthy | backend/ktc/models/feature_export.py |
feature_exports |
data | healthy | backend/ktc/models/feature_export.py |
CrawlRun |
data | healthy | backend/ktc/models/crawl_run.py |
crawl_runs |
data | healthy | backend/ktc/models/crawl_run.py |
SearchKeyword |
data | healthy | backend/ktc/models/search_keyword.py |
search_keywords |
data | healthy | backend/ktc/models/search_keyword.py |
YoutubeVideo |
data | healthy | backend/ktc/models/youtube_video.py |
youtube_videos |
data | healthy | backend/ktc/models/youtube_video.py |
ExtractedPlaceCandidate |
data | healthy | backend/ktc/models/extracted_place_candidate.py |
extracted_place_candidates |
data | healthy | backend/ktc/models/extracted_place_candidate.py |
YoutubePlaylist |
data | healthy | backend/ktc/models/youtube_playlist.py |
youtube_playlists |
data | healthy | backend/ktc/models/youtube_playlist.py |
YoutubeChannel |
data | healthy | backend/ktc/models/youtube_channel.py |
youtube_channels |
data | healthy | backend/ktc/models/youtube_channel.py |
MediaAsset |
data | healthy | backend/ktc/models/media_asset.py |
media_assets |
data | healthy | backend/ktc/models/media_asset.py |
SystemSetting |
data | healthy | backend/ktc/models/system_setting.py |
system_settings |
data | healthy | backend/ktc/models/system_setting.py |
YoutubePlaylistVideo |
data | healthy | backend/ktc/models/youtube_playlist_video.py |
youtube_playlist_videos |
data | healthy | backend/ktc/models/youtube_playlist_video.py |
Base |
data | healthy | backend/ktc/models/base.py |
YoutubeVideoAnalysisRun |
data | healthy | backend/ktc/models/youtube_video_analysis_run.py |
youtube_video_analysis_runs |
data | healthy | backend/ktc/models/youtube_video_analysis_run.py |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
scripts |
software | healthy | tests/scripts |
e2e |
software | healthy | tests/e2e |
backend |
software | healthy | backend |
tests |
software | healthy | backend/tests |
alembic |
software | healthy | backend/alembic |
versions |
software | healthy | backend/alembic/versions |
ktc |
software | healthy | backend/ktc |
api |
software | healthy | backend/ktc/api |
etl |
software | healthy | backend/ktc/etl |
models |
software | healthy | backend/ktc/models |
mcp_server |
software | healthy | backend/ktc/mcp_server |
core |
software | healthy | backend/ktc/core |
services |
software | healthy | backend/ktc/services |
scripts |
software | healthy | scripts |
frontend |
software | healthy | frontend |
src |
software | healthy | frontend/src |
app |
software | healthy | frontend/src/app |
api |
software | healthy | frontend/src/app/api |
v1 |
software | healthy | frontend/src/app/api/v1 |
[...path] |
software | healthy | frontend/src/app/api/v1/[...path] |
settings |
software | healthy | frontend/src/app/settings |
components |
software | healthy | frontend/src/components |
ui |
software | healthy | frontend/src/components/ui |
lib |
software | healthy | frontend/src/lib |
etl |
software | healthy | etl |
docs |
software | healthy | docs |
mcp |
software | healthy | mcp |
scheduler |
software | healthy | scheduler |
| Label | Layer | Status | Path |
|---|---|---|---|
GET / |
api | healthy | backend/main.py |
GET /health |
api | healthy | backend/main.py |
POST /harvest |
api | healthy | backend/ktc/api/routes.py |
GET /harvest/{job_id} |
api | healthy | backend/ktc/api/routes.py |
POST /harvest/{job_id}/transcript |
api | healthy | backend/ktc/api/routes.py |
GET /runs |
api | healthy | backend/ktc/api/routes.py |
GET /audit-logs |
api | healthy | backend/ktc/api/routes.py |
GET /keywords |
api | healthy | backend/ktc/api/routes.py |
GET /destinations |
api | healthy | backend/ktc/api/routes.py |
GET /destinations/export |
api | healthy | backend/ktc/api/routes.py |
GET /destinations/unmatched |
api | healthy | backend/ktc/api/routes.py |
POST /destinations/{place_id}/correct |
api | healthy | backend/ktc/api/routes.py |
POST /destinations/{place_id}/deep-research |
api | healthy | backend/ktc/api/routes.py |
POST /destinations/unmatched/{candidate_id}/resolve |
api | healthy | backend/ktc/api/routes.py |
GET /storage/rustfs |
api | healthy | backend/ktc/api/routes.py |
GET /features/snapshot |
api | healthy | backend/ktc/api/routes.py |
GET /features/changes |
api | healthy | backend/ktc/api/routes.py |
GET /settings |
api | healthy | backend/ktc/api/routes.py |
POST /settings |
api | healthy | backend/ktc/api/routes.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::frontend/Dockerfile |
hardware | healthy | frontend/Dockerfile |
rustfs |
hardware | healthy | docker-compose.yml |
api |
hardware | healthy | docker-compose.yml |
mcp |
hardware | healthy | docker-compose.yml |
scheduler |
hardware | healthy | docker-compose.yml |
frontend |
hardware | healthy | docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
postgresql |
data | healthy | .env.example |
sqlite |
data | healthy | CLAUDE.md |
postgres |
data | healthy | CLAUDE.md |
redis |
data | healthy | scheduler/worker.py |
| Label | Layer | Status | Path |
|---|---|---|---|
RootLayout |
frontend | healthy | frontend/src/app/layout.tsx |
HomePage |
frontend | healthy | frontend/src/app/page.tsx |
SettingsPage |
frontend | healthy | frontend/src/app/settings/page.tsx |
| Label | Layer | Status | Path |
|---|---|---|---|
celery |
data | healthy | scheduler/worker.py |
rabbitmq |
data | healthy | scheduler/worker.py |
| Label | Layer | Status | Path |
|---|---|---|---|
port:12601 |
network | healthy | backend/main.py |
port:3000 |
network | healthy | frontend/Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
/page.tsx |
frontend | healthy | frontend/src/app/page.tsx |
/settings |
frontend | healthy | frontend/src/app/settings/page.tsx |
| Label | Layer | Status | Path |
|---|---|---|---|
digitie__kor-travel-concierge |
software | healthy | /data/fable5_failed_archive/digitie__kor-travel-concierge |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | .env.example |
This page is publicly accessible at:
https://repobility.com/scan/fbd01191-af9f-42e7-a60b-1a32a31942e7/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/fbd01191-af9f-42e7-a60b-1a32a31942e7/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.