[{"data":1,"prerenderedAt":895},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-ZhuLinsen\u002Fdaily_stock_analysis":249,"page-views-\u002Ftrending\u002FZhuLinsen\u002Fdaily_stock_analysis":893},[4,29,104,124,194],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Start",false,"\u002Fstart","1.start",[10,14,19,24],{"title":11,"path":7,"stem":12,"icon":13},"What jscpd finds","1.start\u002Findex","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Configuration basics","\u002Fstart\u002Fconfiguration","1.start\u002F4.configuration","i-lucide-settings-2",{"title":30,"icon":6,"path":31,"stem":32,"children":33,"page":6},"Guides","\u002Fguides","2.guides",[34,39,44,49,54,59,64,69,74,79,84,89,94,99],{"title":35,"path":36,"stem":37,"icon":38},"Use jscpd in CI","\u002Fguides\u002Fci","2.guides\u002F01.ci","i-lucide-github",{"title":40,"path":41,"stem":42,"icon":43},"Pre-commit hooks","\u002Fguides\u002Fpre-commit","2.guides\u002F02.pre-commit","i-lucide-git-commit",{"title":45,"path":46,"stem":47,"icon":48},"Fail only on new duplication","\u002Fguides\u002Fbaseline","2.guides\u002F03.baseline","i-lucide-git-compare",{"title":50,"path":51,"stem":52,"icon":53},"Monorepos","\u002Fguides\u002Fmonorepos","2.guides\u002F04.monorepos","i-lucide-folder-tree",{"title":55,"path":56,"stem":57,"icon":58},"Cross-format detection","\u002Fguides\u002Fcross-format","2.guides\u002F05.cross-format","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Agents","\u002Fguides\u002Fagents","2.guides\u002F06.agents","i-lucide-cpu",{"title":65,"path":66,"stem":67,"icon":68},"Editors","\u002Fguides\u002Feditors","2.guides\u002F07.editors","i-lucide-code",{"title":70,"path":71,"stem":72,"icon":73},"Duplication over git history","\u002Fguides\u002Fhistory","2.guides\u002F08.history","i-lucide-chart-no-axes-combined",{"title":75,"path":76,"stem":77,"icon":78},"Dashboard and health score","\u002Fguides\u002Fdashboard","2.guides\u002F09.dashboard","i-lucide-layout-dashboard",{"title":80,"path":81,"stem":82,"icon":83},"Dead code","\u002Fguides\u002Fdead-code","2.guides\u002F10.dead-code","i-lucide-ghost",{"title":85,"path":86,"stem":87,"icon":88},"Comparing two codebases","\u002Fguides\u002Fcompare","2.guides\u002F11.compare","i-lucide-git-compare-arrows",{"title":90,"path":91,"stem":92,"icon":93},"Semantic clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F12.semantic-clones","i-lucide-brain-circuit",{"title":95,"path":96,"stem":97,"icon":98},"Similar functions","\u002Fguides\u002Fsimilarity","2.guides\u002F13.similarity","i-lucide-list-tree",{"title":100,"path":101,"stem":102,"icon":103},"Boundaries","\u002Fguides\u002Fboundaries","2.guides\u002F14.boundaries","i-lucide-fence",{"title":105,"icon":6,"path":106,"stem":107,"children":108,"page":6},"Concepts","\u002Fconcepts","3.concepts",[109,114,119],{"title":110,"path":111,"stem":112,"icon":113},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":115,"path":116,"stem":117,"icon":118},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":120,"path":121,"stem":122,"icon":123},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":125,"icon":6,"path":126,"stem":127,"children":128,"page":6},"Reference","\u002Freference","4.reference",[129,134,139,144,181,186,190],{"title":130,"path":131,"stem":132,"icon":133},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":135,"path":136,"stem":137,"icon":138},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":140,"path":141,"stem":142,"icon":143},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":145,"icon":6,"path":146,"stem":147,"children":148},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[149,151,156,161,166,171,176],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-file-chart-column",{"title":152,"path":153,"stem":154,"icon":155},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":157,"path":158,"stem":159,"icon":160},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":162,"path":163,"stem":164,"icon":165},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":167,"path":168,"stem":169,"icon":170},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":172,"path":173,"stem":174,"icon":175},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":177,"path":178,"stem":179,"icon":180},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":182,"path":183,"stem":184,"icon":185},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":187,"path":188,"stem":189,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":191,"path":192,"stem":193,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":195,"icon":6,"path":196,"stem":197,"children":198,"page":6},"Project","\u002Fproject","5.project",[199,204,209,214,239,244],{"title":200,"path":201,"stem":202,"icon":203},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":210,"path":211,"stem":212,"icon":213},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":215,"icon":6,"path":216,"stem":217,"children":218},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[219,221,226,230,235],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-gauge",{"title":222,"path":223,"stem":224,"icon":225},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":227,"path":228,"stem":229,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":231,"path":232,"stem":233,"icon":234},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":236,"path":237,"stem":238,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":240,"path":241,"stem":242,"icon":243},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":245,"path":246,"stem":247,"icon":248},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"name":250,"url":251,"appearances":252,"latest":268},"ZhuLinsen\u002Fdaily_stock_analysis","https:\u002F\u002Fgithub.com\u002FZhuLinsen\u002Fdaily_stock_analysis",[253],{"date":254,"rank":255,"stars":256,"starsToday":257,"headSha":258,"sources":259,"lines":260,"clones":261,"duplicatedLines":262,"percentage":263,"codePercentage":264,"codeSources":265,"healthScore":266,"healthGrade":267},"2026-11-10",6,69131,506,"15c7cdc0ca07bd71158e268fb8596f3ae356ad9b",1170,499864,2310,30347,6.07,1.96,539,58.3,"C",{"date":254,"generatedAt":269,"name":250,"url":251,"description":270,"language":271,"stars":256,"starsToday":257,"defaultBranch":272,"headSha":258,"durationMs":273,"total":274,"formats":278,"topClones":348,"code":615,"health":768,"complexity":801,"deadCode":852},"2026-11-10T05:21:45.471Z","LLM 驱动的多市场股票智能分析系统：多源行情、实时新闻、决策看板与自动推送，支持零成本定时运行。  LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.","Python","main",3638,{"sources":259,"lines":260,"tokens":275,"clones":261,"duplicatedLines":262,"duplicatedTokens":276,"percentage":263,"percentageTokens":277},2979136,168548,5.66,[279,286,293,300,307,314,321,328,335,341],{"format":280,"sources":281,"lines":282,"clones":283,"duplicatedLines":284,"percentage":285},"python",652,363045,1734,22153,6.1,{"format":287,"sources":288,"lines":289,"clones":290,"duplicatedLines":291,"percentage":292},"tsx",170,63385,425,5813,9.17,{"format":294,"sources":295,"lines":296,"clones":297,"duplicatedLines":298,"percentage":299},"typescript",134,29120,39,439,1.51,{"format":301,"sources":302,"lines":303,"clones":304,"duplicatedLines":305,"percentage":306},"json",15,10058,35,1057,10.51,{"format":308,"sources":309,"lines":310,"clones":311,"duplicatedLines":312,"percentage":313},"javascript",7,4265,27,306,7.17,{"format":315,"sources":316,"lines":317,"clones":318,"duplicatedLines":319,"percentage":320},"css",1,2924,16,168,5.75,{"format":322,"sources":323,"lines":324,"clones":325,"duplicatedLines":326,"percentage":327},"yaml",44,3922,13,208,5.3,{"format":329,"sources":330,"lines":331,"clones":332,"duplicatedLines":333,"percentage":334},"markdown",77,19113,8,83,0.43,{"format":336,"sources":337,"lines":338,"clones":309,"duplicatedLines":339,"percentage":340},"bash",26,1825,67,3.67,{"format":342,"sources":343,"lines":344,"clones":345,"duplicatedLines":346,"percentage":347},"text",18,509,3,25,4.91,[349,373,421,471,506,519,530,541,574,598],{"format":329,"lines":350,"tokens":351,"first":352,"others":355,"copies":345,"excerpt":360,"kind":372},11,382,{"name":353,"start":354,"end":302},"README.md",5,[356,358],{"name":357,"start":354,"end":302},"docs\u002FREADME_CHT.md",{"name":359,"start":354,"end":302},"docs\u002FREADME_EN.md",{"lines":361,"total":350},[362,363,364,365,366,367,368,369,370,371],"[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FZhuLinsen\u002Fdaily_stock_analysis?style=social)](https:\u002F\u002Fgithub.com\u002FZhuLinsen\u002Fdaily_stock_analysis\u002Fstargazers)","[![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-2608.26990-b31b1b.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2608.26990)","[![CI](https:\u002F\u002Fgithub.com\u002FZhuLinsen\u002Fdaily_stock_analysis\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FZhuLinsen\u002Fdaily_stock_analysis\u002Factions\u002Fworkflo…","[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)","[![Python 3.10+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10+-blue.svg)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)","[![GitHub Actions](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitHub%20Actions-Ready-2088FF?logo=github-actions&logoColor=white)](https:\u002F\u002Fgithub.com\u002Ffeatures\u002Factions)","[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Ready-2496ED?logo=docker&logoColor=white)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fzhulinsen\u002Fdaily_stock_analysis)","","\u003Cp align=\"center\">","  \u003Cimg src=\"https:\u002F\u002Ftrendshift.io\u002Fapi\u002Fbadge\u002Ftrendshift\u002Frepositories\u002F18527\u002Fdaily?language=Python\" alt=\"#1 Python Repository Of The Day | Trendshift\" width=\"250\"…","docs",{"format":280,"lines":332,"tokens":374,"first":375,"others":379,"copies":405,"excerpt":406,"excerptSecond":416,"kind":420},62,{"name":376,"start":377,"end":378},"tests\u002Ftest_portfolio_pr2.py",342,349,[380,383,386,389,392,395,399,402],{"name":376,"start":381,"end":382},518,525,{"name":376,"start":384,"end":385},544,551,{"name":376,"start":387,"end":388},581,588,{"name":376,"start":390,"end":391},648,655,{"name":376,"start":393,"end":394},674,681,{"name":396,"start":397,"end":398},"tests\u002Ftest_portfolio_service.py",422,430,{"name":396,"start":400,"end":401},764,771,{"name":396,"start":403,"end":404},863,871,12,{"lines":407,"total":332},[408,409,410,411,412,413,414,415],"def test_risk_threshold_boundary(self) -> None:","    account = self.service.create_account(name=\"Main\", broker=\"Demo\", market=\"cn\", base_currency=\"CNY\")","    aid = account[\"id\"]","    self.service.record_cash_ledger(","        account_id=aid,","        event_date=date(2026, 1, 1),","        direction=\"in\",","        amount=20000,",{"lines":417,"total":332},[418,409,410,411,412,413,414,419],"def test_sector_concentration_cn_board_mapping(self, _mock_fetch) -> None:","        amount=10000.0,","tests",{"format":280,"lines":422,"tokens":423,"first":424,"others":428,"copies":453,"excerpt":454,"excerptSecond":466,"kind":420},10,51,{"name":425,"start":426,"end":427},"tests\u002Ftest_notification.py",1063,1072,[429,432,435,438,441,444,447,450],{"name":425,"start":430,"end":431},1099,1110,{"name":425,"start":433,"end":434},1133,1144,{"name":425,"start":436,"end":437},1321,1330,{"name":425,"start":439,"end":440},1393,1402,{"name":425,"start":442,"end":443},1411,1420,{"name":425,"start":445,"end":446},1566,1575,{"name":425,"start":448,"end":449},1596,1607,{"name":425,"start":451,"end":452},1715,1726,14,{"lines":455,"total":422},[456,457,458,459,460,461,462,463,464,465],"def test_generate_brief_report_shows_model_by_default(self, mock_get_config: mock.MagicMock):","    mock_get_config.return_value = _make_config(report_renderer_enabled=False)","    service = NotificationService()","    result = AnalysisResult(","        code=\"600519\",","        name=\"贵州茅台\",","        sentiment_score=72,","        trend_prediction=\"看多\",","        operation_advice=\"持有\",","        analysis_summary=\"稳健\",",{"lines":467,"total":405},[468,469,470,457,458,459,460,461,462,463],"def test_generate_dashboard_report_shows_phase_decision_in_default_renderer(","    self, mock_get_config: mock.MagicMock","):",{"format":280,"lines":318,"tokens":472,"first":473,"others":477,"copies":422,"kind":420},70,{"name":474,"start":475,"end":476},"tests\u002Ftest_agent_memory_decision_review.py",30,45,[478,481,485,489,493,496,500,503],{"name":479,"start":311,"end":480},"tests\u002Ftest_decision_signal_extractor.py",42,{"name":482,"start":483,"end":484},"tests\u002Ftest_decision_signal_outcome_service.py",21,36,{"name":486,"start":487,"end":488},"tests\u002Ftest_decision_signal_repo.py",22,37,{"name":490,"start":491,"end":492},"tests\u002Ftest_decision_signal_review_memory.py",41,56,{"name":494,"start":495,"end":374},"tests\u002Ftest_decision_signal_service.py",47,{"name":497,"start":498,"end":499},"tests\u002Ftest_skill_opinion_outcome_stats.py",34,49,{"name":501,"start":304,"end":502},"tests\u002Ftest_skill_opinion_outcomes.py",50,{"name":504,"start":488,"end":505},"tests\u002Ftest_skill_opinion_samples.py",52,{"format":280,"lines":507,"tokens":508,"first":509,"others":513,"copies":517,"kind":518},97,601,{"name":510,"start":511,"end":512},"data_provider\u002Fakshare_fetcher.py",2090,2186,[514],{"name":515,"start":305,"end":516},"data_provider\u002Fefinance_fetcher.py",1152,2,"code",{"format":280,"lines":520,"tokens":521,"first":522,"others":525,"copies":517,"kind":518},94,568,{"name":510,"start":523,"end":524},2092,2185,[526],{"name":527,"start":528,"end":529},"data_provider\u002Ftushare_fetcher.py",957,1050,{"format":280,"lines":531,"tokens":532,"first":533,"others":537,"copies":517,"kind":518},93,560,{"name":534,"start":535,"end":536},"src\u002Fagent\u002Fexecutor.py",73,165,[538],{"name":534,"start":539,"end":540},232,324,{"format":280,"lines":332,"tokens":542,"first":543,"others":547,"copies":573,"kind":420},65,{"name":544,"start":545,"end":546},"tests\u002Ftest_system_config_api.py",914,921,[548,552,555,558,561,564,567,570],{"name":549,"start":550,"end":551},"tests\u002Ftest_system_config_service.py",2463,2470,{"name":549,"start":553,"end":554},2477,2484,{"name":549,"start":556,"end":557},2498,2505,{"name":549,"start":559,"end":560},2533,2540,{"name":549,"start":562,"end":563},2547,2554,{"name":549,"start":565,"end":566},3075,3082,{"name":549,"start":568,"end":569},3150,3157,{"name":549,"start":571,"end":572},3165,3172,9,{"format":308,"lines":255,"tokens":575,"first":576,"others":580,"copies":309,"kind":420},84,{"name":577,"start":578,"end":579},"apps\u002Fdsa-desktop\u002Ftests\u002Fmain.test.js",375,380,[581,584,587,589,592,595],{"name":577,"start":582,"end":583},389,394,{"name":577,"start":585,"end":586},403,408,{"name":577,"start":588,"end":397},417,{"name":577,"start":590,"end":591},431,436,{"name":577,"start":593,"end":594},447,452,{"name":577,"start":596,"end":597},467,472,{"format":280,"lines":337,"tokens":599,"first":600,"others":604,"copies":614,"kind":420},139,{"name":601,"start":602,"end":603},"tests\u002Ftest_agent_pipeline.py",1694,1719,[605,608,611],{"name":601,"start":606,"end":607},1986,2011,{"name":601,"start":609,"end":610},2134,2159,{"name":601,"start":612,"end":613},2378,2403,4,{"sources":265,"lines":616,"tokens":617,"clones":618,"duplicatedLines":619,"duplicatedTokens":620,"percentage":264,"percentageTokens":621,"formats":622,"topClones":648,"generated":766},240958,1328047,326,4712,27211,2.05,[623,629,634,639,642,645],{"format":280,"sources":624,"lines":625,"clones":626,"duplicatedLines":627,"percentage":628},340,191106,296,4403,2.3,{"format":287,"sources":630,"lines":631,"clones":343,"duplicatedLines":632,"percentage":633},102,31659,176,0.56,{"format":294,"sources":635,"lines":636,"clones":350,"duplicatedLines":637,"percentage":638},82,14176,125,0.88,{"format":308,"sources":354,"lines":640,"clones":316,"duplicatedLines":332,"percentage":641},2433,0.33,{"format":336,"sources":255,"lines":643,"clones":644,"duplicatedLines":644,"percentage":644},1074,0,{"format":646,"sources":614,"lines":647,"clones":644,"duplicatedLines":644,"percentage":644},"powershell",510,[649,669,676,689,701,713,725,735,745,756],{"format":280,"lines":507,"tokens":508,"first":650,"others":651,"copies":517,"excerpt":653,"excerptSecond":663,"kind":518},{"name":510,"start":511,"end":512},[652],{"name":515,"start":305,"end":516},{"lines":654,"total":507},[655,656,657,369,658,369,659,660,661,662],"            \"api=ak.stock_zh_a_spot action=failed error=%s\",","            e,","        )","    return None","def _calc_market_stats(","    self,","    df: pd.DataFrame,","    ) -> Optional[Dict[str, Any]]:",{"lines":664,"total":668},[665,656,657,666,369,659,660,661,662,667],"            \"api=ef.stock.get_realtime_quotes action=failed error=%s\",","        return None","    \"\"\"从行情 DataFrame 计算涨跌统计。\"\"\"",96,{"format":280,"lines":520,"tokens":521,"first":670,"others":671,"copies":517,"excerpt":673,"kind":518},{"name":510,"start":523,"end":524},[672],{"name":527,"start":528,"end":529},{"lines":674,"total":520},[657,369,658,369,659,660,661,662,667,675],"    import numpy as np",{"format":280,"lines":531,"tokens":532,"first":677,"others":678,"copies":517,"excerpt":680,"kind":518},{"name":534,"start":535,"end":536},[679],{"name":534,"start":539,"end":540},{"lines":681,"total":531},[682,369,683,369,684,685,686,369,687,688],"{market_guidelines}","## 工作流程（必须严格按阶段顺序执行，每阶段等工具结果返回后再进入下一阶段）","**第一阶段 · 行情与K线**（首先执行）","- `get_realtime_quote` 获取实时行情","- `get_daily_history` 获取历史K线","**第二阶段 · 技术与筹码**（等第一阶段结果返回后执行）","- `analyze_trend` 获取技术指标",{"format":280,"lines":343,"tokens":690,"first":691,"others":693,"copies":345,"kind":518},186,{"name":534,"start":326,"end":692},225,[694,698],{"name":695,"start":696,"end":697},"src\u002Fanalyzer.py",2131,2148,{"name":695,"start":699,"end":700},2317,2334,{"format":280,"lines":702,"tokens":703,"first":704,"others":708,"copies":517,"kind":518},43,335,{"name":705,"start":706,"end":707},"src\u002Fservices\u002Fscreening\u002Fdaily.py",400,442,[709],{"name":710,"start":711,"end":712},"src\u002Fservices\u002Fscreening\u002Fsnapshot.py",177,219,{"format":280,"lines":714,"tokens":715,"first":716,"others":720,"copies":517,"kind":518},59,278,{"name":717,"start":718,"end":719},"src\u002Fnotification.py",1358,1416,[721],{"name":722,"start":723,"end":724},"src\u002Fservices\u002Fhistory_service.py",1171,1230,{"format":280,"lines":505,"tokens":726,"first":727,"others":731,"copies":517,"kind":518},262,{"name":728,"start":729,"end":730},"data_provider\u002Fbase.py",2049,2100,[732],{"name":728,"start":733,"end":734},2128,2181,{"format":280,"lines":502,"tokens":736,"first":737,"others":741,"copies":517,"kind":518},255,{"name":738,"start":739,"end":740},"src\u002Frepositories\u002Fportfolio_repo.py",875,924,[742],{"name":738,"start":743,"end":744},1060,1109,{"format":280,"lines":746,"tokens":747,"first":748,"others":752,"copies":517,"kind":518},20,230,{"name":749,"start":750,"end":751},"src\u002Fservices\u002Fscreening\u002Ffilter.py",228,247,[753],{"name":749,"start":754,"end":755},328,347,{"format":280,"lines":757,"tokens":758,"first":759,"others":762,"copies":517,"kind":518},69,224,{"name":695,"start":760,"end":761},1969,2037,[763],{"name":695,"start":764,"end":765},2157,2225,{"files":644,"minified":644,"sample":767},[],{"score":266,"grade":267,"size":769,"dimensions":773},{"lines":770,"files":771,"class":772},461421,970,"L",[774,787,795],{"id":775,"source":776,"value":777,"adjusted":777,"lines":778,"halfLife":779,"formats":780,"excluded":783,"weight":316,"score":786},"duplication","jscpd",6.2,28711,8.5,[280,287,294,308,336,646,781,782],"nsis","docker",[784,342,785],"markup","data",60.3,{"id":788,"source":776,"value":789,"adjusted":789,"lines":790,"halfLife":791,"coverage":792,"weight":793,"score":794},"dead-code",1.4,6435,7.5,99.6,0.996,87.8,{"id":796,"source":776,"value":797,"adjusted":798,"lines":799,"halfLife":502,"weight":316,"score":800},"complexity",71,70.8,327670,37.5,{"total":802,"mean":803,"files":804},64752,66.8,[805,810,815,819,823,827,832,837,842,847],{"path":806,"complexity":807,"lines":808,"bytes":809},"src\u002Fservices\u002Fscreening_service.py",1384,4384,175732,{"path":811,"complexity":812,"lines":813,"bytes":814},"src\u002Fservices\u002Fsystem_config_service.py",1282,5680,244429,{"path":695,"complexity":816,"lines":817,"bytes":818},1134,5770,253714,{"path":728,"complexity":820,"lines":821,"bytes":822},1046,5016,219118,{"path":824,"complexity":546,"lines":825,"bytes":826},"src\u002Fsearch_service.py",4961,194390,{"path":828,"complexity":829,"lines":830,"bytes":831},"src\u002Fcore\u002Fpipeline.py",911,4377,199619,{"path":833,"complexity":834,"lines":835,"bytes":836},"src\u002Fconfig.py",824,3934,180188,{"path":838,"complexity":839,"lines":840,"bytes":841},"src\u002Fshare_image.py",696,2172,105912,{"path":843,"complexity":844,"lines":845,"bytes":846},"apps\u002Fdsa-web\u002Fsrc\u002Fcomponents\u002Fsettings\u002FLLMChannelEditor.tsx",688,2673,104011,{"path":848,"complexity":849,"lines":850,"bytes":851},"src\u002Fagent\u002Fweb_intent_resolver.py",687,2176,109560,{"percentage":789,"findings":853,"files":854,"byCategory":855,"largest":865},128,977,[856,858,860,862],{"category":857,"count":422},"unused-file",{"category":859,"count":337},"unused-export",{"category":861,"count":505},"unused-symbol",{"category":863,"count":864},"unused-import",40,[866,867,870,873,876,879,881,883,886,891],{"category":857,"path":848,"name":369,"line":316,"lines":850},{"category":857,"path":868,"name":369,"line":316,"lines":869},"src\u002Fagent\u002Fweb_intent_types.py",994,{"category":857,"path":871,"name":369,"line":316,"lines":872},"src\u002Fagent\u002Fweb_intent_tokenizer.py",802,{"category":857,"path":874,"name":369,"line":316,"lines":875},"src\u002Fagent\u002Ftool_surface.py",451,{"category":857,"path":877,"name":369,"line":316,"lines":878},"bot\u002Fplatforms\u002Fdiscord.py",377,{"category":857,"path":880,"name":369,"line":316,"lines":715},"src\u002Fnotification_capabilities.py",{"category":857,"path":882,"name":369,"line":316,"lines":692},"bot\u002Fhandler.py",{"category":857,"path":884,"name":369,"line":316,"lines":885},"src\u002Fservices\u002Fanalyzer_service.py",135,{"category":859,"path":887,"name":888,"line":889,"lines":890},"src\u002Fformatters.py","chunk_markdown_preserving_blocks",361,112,{"category":857,"path":892,"name":369,"line":316,"lines":339},"apps\u002Fdsa-desktop\u002Fpreload.js",{"\u002Ftrending\u002FZhuLinsen\u002Fdaily_stock_analysis":894},{"views":644,"visits":644},1794293465667]