闲鱼自动回复管理系统是一个基于 Python + FastAPI 开发的自动化客服系统,专为闲鱼平台设计。系统通过 WebSocket 连接闲鱼服务器,实时接收和处理消息,提供智能化的自动回复服务。同时集成闲鱼自动发货,自动评价,自动擦亮等功能,实现闲鱼虚拟商品自动化流程。
This report presents the forensic synthetic code analysis of zhinianboke/xianyu-auto-reply, a Python project with 5,726 GitHub stars. SynthScan v2.0 examined 209,726 lines of code across 771 source files, recording 3170 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 15.3 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 3170 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | promotion/backend/_bootstrap.py | 36 | except Exception as exc: | CODE |
| LOW | promotion/backend/app/api/routes/cookies.py | 318 | except Exception: | CODE |
| LOW | promotion/backend/app/api/routes/auth.py | 51 | except Exception: | CODE |
| LOW | promotion/backend/app/api/routes/geetest.py | 132 | except Exception as e: | CODE |
| LOW | promotion/backend/app/api/routes/geetest.py | 197 | except Exception as e: | CODE |
| LOW | promotion/backend/app/api/routes/settings.py | 57 | except Exception as e: | CODE |
| LOW | promotion/backend/app/api/routes/settings.py | 90 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/taobao_alliance_detail.py | 81 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/taobao_alliance_detail.py | 227 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/taobao_alliance_detail.py | 328 | except Exception as e: | CODE |
| LOW | …on/backend/app/services/publish_coupon_card_service.py | 86 | except Exception as exc: | CODE |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 46 | except Exception as exc: | CODE |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 73 | except Exception as exc: | CODE |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 98 | except Exception as exc: | CODE |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 153 | except Exception as card_exc: | CODE |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 156 | except Exception as exc: | CODE |
| LOW | …otion/backend/app/services/item_delete_sync_service.py | 80 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 187 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 212 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 322 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 449 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 546 | except Exception as e: | CODE |
| LOW⚡ | …end/app/services/published_item_id_repair_scheduler.py | 39 | except Exception as exc: | CODE |
| LOW | …end/app/services/published_item_id_repair_scheduler.py | 129 | except Exception as exc: | CODE |
| LOW | …end/app/services/published_item_id_repair_scheduler.py | 215 | except Exception as exc: | CODE |
| LOW⚡ | …nd/app/services/material_short_url_repair_scheduler.py | 34 | except Exception as exc: | CODE |
| LOW | …nd/app/services/material_short_url_repair_scheduler.py | 86 | except Exception as exc: | CODE |
| LOW | …nd/app/services/material_short_url_repair_scheduler.py | 151 | except Exception as exc: | CODE |
| LOW | promotion/backend/app/services/delete_rule_scheduler.py | 41 | except Exception as e: | CODE |
| LOW | promotion/backend/app/services/delete_rule_scheduler.py | 68 | except Exception as e: | CODE |
| LOW | promotion/backend/app/services/delete_rule_scheduler.py | 73 | except Exception as e: | CODE |
| LOW | promotion/backend/app/services/delete_rule_scheduler.py | 316 | except Exception as e: | CODE |
| LOW | …motion/backend/app/services/taobao_alliance_service.py | 313 | except Exception as e: | CODE |
| LOW⚡ | …/backend/app/services/publish_coupon_card_scheduler.py | 27 | except Exception as exc: | CODE |
| LOW | …/backend/app/services/publish_coupon_card_scheduler.py | 139 | except Exception as exc: | CODE |
| LOW | …motion/backend/app/services/item_delete_api_service.py | 165 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 37 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 66 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 47 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 82 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 119 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 277 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 296 | except Exception as e: | CODE |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 312 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 59 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 82 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 89 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 119 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 134 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 140 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 184 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 198 | except Exception as e: | CODE |
| LOW | backend-web/_bootstrap.py | 248 | except Exception as e: | CODE |
| LOW | backend-web/app/core/http_client.py | 122 | except Exception: | CODE |
| LOW | backend-web/app/api/routes/listing_monitor.py | 225 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | backend-web/app/api/routes/listing_monitor.py | 366 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | backend-web/app/api/routes/cookies.py | 89 | except Exception: | CODE |
| LOW | backend-web/app/api/routes/cookies.py | 475 | except Exception as exc: | CODE |
| LOW | backend-web/app/api/routes/cookies.py | 626 | except Exception: | CODE |
| LOW | backend-web/app/api/routes/cookies.py | 657 | except Exception as exc: | CODE |
| 1478 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | promotion/frontend/src/api/publishRule.ts | 113 | export async function getExecutePublishRuleStatus(taskId: string): Promise<ApiResponse<PublishRuleExecuteTask>> { | CODE |
| LOW⚡ | promotion/backend/_bootstrap.py | 29 | def _setup_windows_event_loop_policy() -> None: | CODE |
| LOW | promotion/backend/app/api/routes/cookies.py | 323 | async def _get_account_with_permission(session: AsyncSession, account_pk: int, current_user: User): | CODE |
| LOW | …omotion/backend/app/services/taobao_alliance_detail.py | 347 | def _parse_short_url_response(data: dict) -> dict: | CODE |
| LOW | …on/backend/app/services/publish_coupon_card_service.py | 54 | async def _get_publish_coupon_card_lock(user_id: int, published_item_id: str) -> asyncio.Lock: | CODE |
| LOW | …on/backend/app/services/publish_coupon_card_service.py | 64 | async def ensure_publish_coupon_card( | CODE |
| LOW | …on/backend/app/services/publish_coupon_card_service.py | 95 | async def _ensure_publish_coupon_card_once( | CODE |
| LOW | …on/backend/app/services/publish_coupon_card_service.py | 185 | async def get_publish_coupon_card_status( | CODE |
| LOW | promotion/backend/app/services/product_rule_service.py | 291 | async def sync_product_rules_to_publish_accounts( | CODE |
| LOW | promotion/backend/app/services/product_rule_service.py | 388 | async def sync_material_accounts_from_product_rules( | CODE |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 25 | async def save_publish_rule_progress( | CODE |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 54 | async def get_account_product_total_count(owner_id: int, account_id: str) -> int: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 33 | def _build_rule_execution_key(rule_id: int, user_id: int) -> str: | CODE |
| LOW⚡ | …omotion/backend/app/services/publish_rule_scheduler.py | 89 | def _generate_publish_trace_code() -> str: | CODE |
| LOW⚡ | …omotion/backend/app/services/publish_rule_scheduler.py | 92 | def _build_publish_title_with_trace(title: str | None, trace_code: str) -> str: | CODE |
| LOW⚡ | …omotion/backend/app/services/publish_rule_scheduler.py | 98 | async def _find_published_item_id_by_trace_code( | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 133 | async def get_manual_execute_publish_rule_status(task_id: str, user_id: int) -> dict: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 139 | async def _run_manual_execute_publish_rule_task(task_id: str, rule_id: int, user_id: int) -> None: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 199 | async def run_publish_rule_scheduler(): | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 217 | async def manual_execute_publish_rule(rule_id: int, user_id: int) -> dict: | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 277 | async def _execute_all_publish_rules(): | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 331 | async def _execute_single_publish_rule( | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 458 | async def _publish_material_to_xianyu( | CODE |
| LOW⚡ | …end/app/services/published_item_id_repair_scheduler.py | 31 | async def run_published_item_id_repair_scheduler() -> None: | CODE |
| LOW⚡ | …end/app/services/published_item_id_repair_scheduler.py | 44 | async def _repair_published_item_ids() -> None: | CODE |
| LOW | …end/app/services/published_item_id_repair_scheduler.py | 146 | async def _find_item_id_by_trace_code( | CODE |
| LOW | …end/app/services/published_item_id_repair_scheduler.py | 176 | async def _update_material_published_item_id( | CODE |
| LOW⚡ | …nd/app/services/material_short_url_repair_scheduler.py | 26 | async def run_material_short_url_repair_scheduler() -> None: | CODE |
| LOW⚡ | …nd/app/services/material_short_url_repair_scheduler.py | 39 | async def repair_material_short_urls_once() -> None: | CODE |
| LOW | …nd/app/services/material_short_url_repair_scheduler.py | 161 | async def _update_material_short_url(material_id: int, short_url: str) -> bool: | CODE |
| LOW | promotion/backend/app/services/material_service.py | 204 | def _normalize_material_items(items: list[dict]) -> list[dict]: | CODE |
| LOW | promotion/backend/app/services/material_service.py | 224 | async def _get_material_upsert_context( | CODE |
| LOW | promotion/backend/app/services/material_service.py | 275 | async def collect_creatable_material_items( | CODE |
| LOW | promotion/backend/app/services/material_service.py | 420 | def _normalize_publish_status_filter(publish_status: str, legacy_published: str) -> str: | CODE |
| LOW | promotion/backend/app/services/delete_rule_scheduler.py | 28 | async def run_delete_rule_scheduler() -> None: | CODE |
| LOW | promotion/backend/app/services/delete_rule_scheduler.py | 320 | def _is_session_expired_error(message: str) -> bool: | CODE |
| LOW | promotion/backend/app/services/publish_rule_service.py | 266 | async def _get_user_rule_by_account( | CODE |
| LOW | promotion/backend/app/services/publish_rule_service.py | 285 | async def _get_total_published_count_map( | CODE |
| LOW | promotion/backend/app/services/publish_rule_service.py | 325 | def _is_publish_rule_account_duplicate_error(exc: IntegrityError) -> bool: | CODE |
| LOW | promotion/backend/app/services/delete_rule_service.py | 251 | async def _get_user_rule_by_account( | CODE |
| LOW | promotion/backend/app/services/delete_rule_service.py | 270 | def _is_delete_rule_account_duplicate_error(exc: IntegrityError) -> bool: | CODE |
| LOW | …motion/backend/app/services/taobao_alliance_service.py | 499 | def _build_coupon_info_from_promotion_path(promotion_path: list[dict]) -> str: | CODE |
| LOW⚡ | …/backend/app/services/publish_coupon_card_scheduler.py | 20 | async def run_publish_coupon_card_scheduler() -> None: | CODE |
| LOW⚡ | …/backend/app/services/publish_coupon_card_scheduler.py | 32 | async def _load_existing_catalog_item_keys(rows: list[tuple[int, int, str | None]]) -> set[tuple[int, str]]: | CODE |
| LOW | …/backend/app/services/publish_coupon_card_scheduler.py | 56 | async def _repair_publish_coupon_cards() -> None: | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 31 | async def check_database_connection() -> bool: | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 96 | async def _get_table_unique_constraints(conn: AsyncConnection, table_name: str) -> list[dict]: | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 115 | async def _ensure_unique_constraint( | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 168 | async def _check_product_rules_columns(conn: AsyncConnection, existing_tables: list[str]) -> bool: | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 308 | async def _check_publish_rules_columns(conn: AsyncConnection, existing_tables: list[str]) -> None: | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 372 | async def _check_delete_rules_columns(conn: AsyncConnection, existing_tables: list[str]) -> None: | CODE |
| LOW | …omotion/backend/app/services/database_check_service.py | 443 | async def _sync_rule_account_dimensions() -> None: | CODE |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 34 | async def run_product_rule_scheduler(): | CODE |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 325 | def merge_short_url_into_description(description: str, short_url: str) -> str: | CODE |
| LOW | backend-web/_bootstrap.py | 44 | async def check_database_connection(): | CODE |
| LOW | backend-web/app/api/deps.py | 109 | async def get_default_reply_service(session: AsyncSession = Depends(get_db_session)): | CODE |
| LOW | backend-web/app/api/deps.py | 121 | async def get_notification_channel_service(session: AsyncSession = Depends(get_db_session)): | CODE |
| LOW | backend-web/app/api/deps.py | 127 | async def get_system_setting_service(session: AsyncSession = Depends(get_db_session)): | CODE |
| LOW | backend-web/app/api/deps.py | 140 | async def get_account_login_log_service(session: AsyncSession = Depends(get_db_session)): | CODE |
| LOW | backend-web/app/api/deps.py | 146 | async def get_db_backup_log_service(session: AsyncSession = Depends(get_db_session)): | CODE |
| 537 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | promotion/backend/_bootstrap.py | 15 | CODE | |
| LOW | promotion/backend/main.py | 2 | CODE | |
| LOW | promotion/backend/main.py | 12 | CODE | |
| LOW | promotion/backend/app/core/config.py | 9 | CODE | |
| LOW | promotion/backend/app/core/security.py | 9 | CODE | |
| LOW | promotion/backend/app/api/deps.py | 9 | CODE | |
| LOW | promotion/backend/app/api/_exports.py | 7 | CODE | |
| LOW | promotion/backend/app/api/__init__.py | 2 | CODE | |
| LOW | promotion/backend/app/api/routes/delete_rule.py | 12 | CODE | |
| LOW | promotion/backend/app/api/routes/cookies.py | 11 | CODE | |
| LOW | promotion/backend/app/api/routes/auth.py | 9 | CODE | |
| LOW | promotion/backend/app/api/routes/auth.py | 11 | CODE | |
| LOW | promotion/backend/app/api/routes/material.py | 9 | CODE | |
| LOW | promotion/backend/app/api/routes/product_rule.py | 11 | CODE | |
| LOW | promotion/backend/app/api/routes/taobao_alliance.py | 9 | CODE | |
| LOW | promotion/backend/app/api/routes/dashboard.py | 8 | CODE | |
| LOW | promotion/backend/app/api/routes/settings.py | 8 | CODE | |
| LOW | promotion/backend/app/api/routes/publish_rule.py | 13 | CODE | |
| LOW | …omotion/backend/app/services/taobao_alliance_detail.py | 8 | CODE | |
| LOW | …on/backend/app/services/publish_coupon_card_service.py | 9 | CODE | |
| LOW | promotion/backend/app/services/product_rule_service.py | 9 | CODE | |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 9 | CODE | |
| LOW | promotion/backend/app/services/auth_service.py | 10 | CODE | |
| LOW | …otion/backend/app/services/item_delete_sync_service.py | 10 | CODE | |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 11 | CODE | |
| LOW | …end/app/services/published_item_id_repair_scheduler.py | 10 | CODE | |
| LOW | …end/app/services/published_item_id_repair_scheduler.py | 16 | CODE | |
| LOW | …nd/app/services/material_short_url_repair_scheduler.py | 10 | CODE | |
| LOW | promotion/backend/app/services/material_service.py | 10 | CODE | |
| LOW | promotion/backend/app/services/material_service.py | 18 | CODE | |
| LOW | promotion/backend/app/services/delete_rule_scheduler.py | 10 | CODE | |
| LOW | promotion/backend/app/services/publish_rule_service.py | 10 | CODE | |
| LOW | promotion/backend/app/services/delete_rule_service.py | 9 | CODE | |
| LOW | …motion/backend/app/services/taobao_alliance_service.py | 9 | CODE | |
| LOW | …/backend/app/services/publish_coupon_card_scheduler.py | 1 | CODE | |
| LOW | …motion/backend/app/services/item_delete_api_service.py | 9 | CODE | |
| LOW | …omotion/backend/app/services/database_check_service.py | 9 | CODE | |
| LOW | …omotion/backend/app/services/database_check_service.py | 24 | CODE | |
| LOW | …omotion/backend/app/services/database_check_service.py | 25 | CODE | |
| LOW | …omotion/backend/app/services/database_check_service.py | 26 | CODE | |
| LOW | …omotion/backend/app/services/database_check_service.py | 27 | CODE | |
| LOW | …omotion/backend/app/services/database_check_service.py | 28 | CODE | |
| LOW | …omotion/backend/app/services/product_rule_scheduler.py | 12 | CODE | |
| LOW | backend-web/_bootstrap.py | 15 | CODE | |
| LOW | backend-web/main.py | 2 | CODE | |
| LOW | backend-web/main.py | 22 | CODE | |
| LOW | backend-web/app/core/config.py | 9 | CODE | |
| LOW | backend-web/app/core/paths.py | 9 | CODE | |
| LOW | backend-web/app/core/http_client.py | 11 | CODE | |
| LOW | backend-web/app/core/security.py | 14 | CODE | |
| LOW | backend-web/app/api/deps.py | 10 | CODE | |
| LOW | backend-web/app/api/__init__.py | 6 | CODE | |
| LOW | backend-web/app/api/__init__.py | 9 | CODE | |
| LOW | backend-web/app/api/__init__.py | 10 | CODE | |
| LOW | backend-web/app/api/routes/listing_monitor.py | 9 | CODE | |
| LOW | backend-web/app/api/routes/user_settings.py | 6 | CODE | |
| LOW | backend-web/app/api/routes/user_settings.py | 10 | CODE | |
| LOW | backend-web/app/api/routes/user_settings.py | 10 | CODE | |
| LOW | backend-web/app/api/routes/cookies.py | 11 | CODE | |
| LOW | backend-web/app/api/routes/cookies.py | 14 | CODE | |
| 515 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | promotion/backend/app/api/routes/cookies.py | 309 | CODE | |
| LOW | promotion/backend/app/services/product_rule_service.py | 291 | CODE | |
| LOW | …ckend/app/services/publish_rule_persistence_service.py | 106 | CODE | |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 331 | CODE | |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 458 | CODE | |
| LOW | …end/app/services/published_item_id_repair_scheduler.py | 44 | CODE | |
| LOW | …nd/app/services/material_short_url_repair_scheduler.py | 39 | CODE | |
| LOW | …nd/app/services/material_short_url_repair_scheduler.py | 132 | CODE | |
| LOW | …/backend/app/services/publish_coupon_card_scheduler.py | 56 | CODE | |
| LOW | backend-web/app/api/routes/auth.py | 35 | CODE | |
| LOW | backend-web/app/api/routes/shared_scan.py | 226 | CODE | |
| LOW | backend-web/app/api/routes/orders.py | 434 | CODE | |
| LOW | backend-web/app/api/routes/qr_login.py | 108 | CODE | |
| LOW | backend-web/app/api/routes/captcha.py | 338 | CODE | |
| LOW | backend-web/app/api/routes/chat_new.py | 77 | CODE | |
| LOW | backend-web/app/api/routes/chat_new.py | 214 | CODE | |
| LOW | backend-web/app/api/routes/chat_new.py | 707 | CODE | |
| LOW | backend-web/app/api/routes/chat_new.py | 800 | CODE | |
| LOW | backend-web/app/api/routes/admin.py | 395 | CODE | |
| LOW | backend-web/app/api/routes/cookie_refresh.py | 184 | CODE | |
| LOW | backend-web/app/api/routes/notifications.py | 67 | CODE | |
| LOW | backend-web/app/api/routes/auto_rate.py | 149 | CODE | |
| LOW | backend-web/app/api/routes/goofish_crawler.py | 245 | CODE | |
| LOW | backend-web/app/api/routes/message_filters.py | 82 | CODE | |
| LOW | backend-web/app/api/routes/items.py | 30 | CODE | |
| LOW | backend-web/app/services/withdraw_risk_check.py | 129 | CODE | |
| LOW | backend-web/app/services/withdraw_risk_check.py | 241 | CODE | |
| LOW | backend-web/app/services/publish_execution_service.py | 226 | CODE | |
| LOW | backend-web/app/services/account_service.py | 758 | CODE | |
| LOW | backend-web/app/services/account_service.py | 848 | CODE | |
| LOW | backend-web/app/services/pickup_service.py | 59 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 395 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 582 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 1063 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 1134 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 1224 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 1267 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 1517 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 1606 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 920 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 1159 | CODE | |
| LOW | backend-web/app/services/xianyu_publisher.py | 925 | CODE | |
| LOW | backend-web/app/services/account_export_service.py | 142 | CODE | |
| LOW | backend-web/app/services/qr_login/face_verification.py | 46 | CODE | |
| LOW | backend-web/app/services/password_login/flow.py | 213 | CODE | |
| LOW | backend-web/app/services/chat_new/avatar_service.py | 39 | CODE | |
| LOW | backend-web/app/services/chat_new/avatar_service.py | 250 | CODE | |
| LOW | backend-web/app/services/chat_new/im_client.py | 1011 | CODE | |
| LOW | websocket/app/utils/image_uploader.py | 46 | CODE | |
| LOW | websocket/app/api/routes/internal.py | 232 | CODE | |
| LOW | websocket/app/api/routes/internal.py | 511 | CODE | |
| LOW | websocket/app/api/routes/internal.py | 727 | CODE | |
| LOW | websocket/app/api/routes/internal.py | 1769 | CODE | |
| LOW | websocket/app/api/routes/internal.py | 1816 | CODE | |
| LOW | websocket/app/api/routes/password_login.py | 92 | CODE | |
| LOW | websocket/app/api/routes/password_login.py | 306 | CODE | |
| LOW | websocket/app/api/routes/password_login.py | 547 | CODE | |
| LOW | websocket/app/services/xianyu/xianyu_async.py | 409 | CODE | |
| LOW | websocket/app/services/xianyu/xianyu_async.py | 680 | CODE | |
| LOW | websocket/app/services/xianyu/xianyu_async.py | 943 | CODE | |
| 180 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend-web/app/api/routes/payment.py | 177 | body: body.toString() | CODE |
| HIGH | backend-web/app/api/routes/payment.py | 269 | body: body.toString() | CODE |
| HIGH | backend-web/app/services/xianyu_publisher.py | 135 | Object.defineProperty(navigator, 'webdriver', { get: () => undefined }); | CODE |
| HIGH | backend-web/app/services/search/slider_handler.py | 299 | return null; | CODE |
| HIGH | …bsocket/app/services/xianyu/cookies_refresh_service.py | 153 | Object.defineProperty(navigator, 'webdriver', { get: () => undefined }); | STRING |
| HIGH | launcher/service_manager.py | 123 | error_msg = f'{{"success":false,"code":502,"message":"代理请求失败: {str(e)}","data":null}}' | CODE |
| HIGH | common/services/captcha/verification_checker.py | 159 | if (button && track) { | CODE |
| HIGH | common/services/captcha/verification_checker.py | 164 | return null; | CODE |
| HIGH | common/services/captcha/browser_features.py | 64 | get: () => undefined, | CODE |
| HIGH | common/services/captcha/browser_features.py | 147 | Object.defineProperty(navigator, 'headless', {{ get: () => undefined }}); | CODE |
| HIGH⚡ | common/services/captcha/browser_features.py | 159 | Object.defineProperty(navigator, 'webdriver', {{ get: () => undefined }}); | CODE |
| HIGH⚡ | common/services/captcha/browser_features.py | 160 | Object.defineProperty(navigator, '__webdriver_script_fn', {{ get: () => undefined }}); | CODE |
| HIGH⚡ | common/services/captcha/browser_features.py | 161 | Object.defineProperty(navigator, '__webdriver_evaluate', {{ get: () => undefined }}); | CODE |
| HIGH⚡ | common/services/captcha/browser_features.py | 162 | Object.defineProperty(navigator, '__webdriver_unwrapped', {{ get: () => undefined }}); | CODE |
| HIGH⚡ | common/services/captcha/browser_features.py | 163 | Object.defineProperty(navigator, '__fxdriver_evaluate', {{ get: () => undefined }}); | CODE |
| HIGH⚡ | common/services/captcha/browser_features.py | 164 | Object.defineProperty(navigator, '__driver_evaluate', {{ get: () => undefined }}); | CODE |
| HIGH⚡ | common/services/captcha/browser_features.py | 165 | Object.defineProperty(navigator, '__webdriver_script_func', {{ get: () => undefined }}); | CODE |
| HIGH | common/services/captcha/browser_features.py | 242 | mouseMovements.push({{ | CODE |
| HIGH | common/services/captcha/browser_features.py | 295 | id: undefined, | CODE |
| HIGH⚡ | common/services/captcha/xianyu_slider_stealth.py | 1009 | if (verifyButton && verifyButton.innerText && verifyButton.innerText.includes('立即验证')) { | CODE |
| HIGH⚡ | common/services/captcha/xianyu_slider_stealth.py | 1010 | const href = verifyButton.href || verifyButton.getAttribute('href') || null; | CODE |
| HIGH⚡ | common/services/captcha/xianyu_slider_stealth.py | 1010 | const href = verifyButton.href || verifyButton.getAttribute('href') || null; | CODE |
| HIGH⚡ | common/services/captcha/xianyu_slider_stealth.py | 1016 | return null; | CODE |
| HIGH | common/services/captcha/real_mouse_slider.py | 86 | try { Object.defineProperty(navigator, 'webdriver', { get: () => undefined, configurable: true }); } catch (e) {} | CODE |
| HIGH | common/services/captcha/real_mouse_slider.py | 97 | window.__cal.push([e.clientX, e.clientY, e.screenX, e.screenY, e.timeStamp, e.buttons]); | CODE |
| HIGH⚡ | common/services/captcha/real_mouse_slider.py | 225 | if (!button || !track) return null; | STRING |
| HIGH | common/services/captcha/slider_stealth.py | 123 | raise ImportError("Playwright 未安装,请运行: pip install playwright && playwright install chromium") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | build_backend_web.sh | 2 | # ========================================== | COMMENT |
| MEDIUM | build_backend_web.sh | 5 | # ========================================== | COMMENT |
| MEDIUM | build_scheduler.sh | 2 | # ========================================== | COMMENT |
| MEDIUM | build_scheduler.sh | 5 | # ========================================== | COMMENT |
| MEDIUM | build_websocket.sh | 2 | # ========================================== | COMMENT |
| MEDIUM | build_websocket.sh | 5 | # ========================================== | COMMENT |
| MEDIUM | build.sh | 2 | # ========================================== | COMMENT |
| MEDIUM | build.sh | 6 | # ========================================== | COMMENT |
| MEDIUM | build.sh | 72 | # ========================================== | COMMENT |
| MEDIUM | build.sh | 74 | # ========================================== | COMMENT |
| MEDIUM | update.sh | 2 | # ========================================== | COMMENT |
| MEDIUM | update.sh | 13 | # ========================================== | COMMENT |
| MEDIUM | update.sh | 340 | # ========================================== | COMMENT |
| MEDIUM | update.sh | 342 | # ========================================== | COMMENT |
| MEDIUM | deploy_remote.sh | 2 | # ========================================== | COMMENT |
| MEDIUM | deploy_remote.sh | 7 | # ========================================== | COMMENT |
| MEDIUM | deploy_remote.sh | 54 | # ========================================== | COMMENT |
| MEDIUM | deploy_remote.sh | 56 | # ========================================== | COMMENT |
| MEDIUM | deploy.sh | 2 | # ========================================== | COMMENT |
| MEDIUM | deploy.sh | 6 | # ========================================== | COMMENT |
| MEDIUM | deploy.sh | 53 | # ========================================== | COMMENT |
| MEDIUM | deploy.sh | 55 | # ========================================== | COMMENT |
| MEDIUM | build_frontend.sh | 2 | # ========================================== | COMMENT |
| MEDIUM | build_frontend.sh | 5 | # ========================================== | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 87 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 89 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 124 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 126 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 183 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 185 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 238 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 240 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 284 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/withdraw_risk_check.py | 286 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/email_service.py | 512 | # ── 风控检验 ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend-web/app/services/email_service.py | 521 | # ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | common/utils/service_restart.py | 371 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | common/utils/service_restart.py | 374 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | common/services/xianyu_order_client.py | 84 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | common/services/xianyu_order_client.py | 86 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | common/services/xianyu_order_client.py | 120 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | common/services/xianyu_order_client.py | 122 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | common/services/xianyu_order_client.py | 233 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | common/services/xianyu_order_client.py | 235 | # ------------------------------------------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | promotion/backend/_bootstrap.py | 29 | def _setup_windows_event_loop_policy() -> None: | CODE |
| LOW | promotion/backend/app/api/_exports.py | 49 | __all__ = ["api_router"] | CODE |
| LOW | …omotion/backend/app/services/publish_rule_scheduler.py | 54 | def _update_manual_task(task_id: str, **kwargs) -> None: | CODE |
| LOW | backend-web/app/core/paths.py | 89 | __all__ = [ | CODE |
| LOW | backend-web/app/core/http_client.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/api/__init__.py | 12 | __all__ = ["api_router", "deps"] | CODE |
| LOW | backend-web/app/api/routes/_exports.py | 190 | __all__ = ["api_router"] | CODE |
| LOW | backend-web/app/api/routes/advertisements.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/api/routes/activation.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/api/routes/items.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/services/recharge_service.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/services/withdraw_risk_check.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ckend-web/app/services/user_publish_address_service.py | 15 | __all__ = ["UserPublishAddressService", "_address_to_dict"] | CODE |
| LOW | backend-web/app/services/dashboard_stats_service.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/services/settlement_service.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/services/websocket_client.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/services/item_service.py | 16 | __all__ = ["ItemService"] | CODE |
| LOW | backend-web/app/services/order_service.py | 15 | __all__ = ["OrderService"] | STRING |
| LOW | backend-web/app/services/remote_content_service.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 380 | async def update_remark(self, account: XYAccount, remark: str) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 385 | async def update_auto_confirm(self, account: XYAccount, auto_confirm: bool) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 390 | async def update_pause_duration(self, account: XYAccount, duration: int) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 395 | async def update_message_expire_time(self, account: XYAccount, expire_time: int) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 401 | async def update_reply_delay(self, account: XYAccount, delay_seconds: int) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 424 | async def update_scheduled_redelivery(self, account: XYAccount, scheduled_redelivery: bool) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 430 | async def update_scheduled_rate(self, account: XYAccount, scheduled_rate: bool) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 587 | async def update_auto_polish(self, account: XYAccount, auto_polish: bool) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 593 | async def update_confirm_before_send(self, account: XYAccount, confirm_before_send: bool) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 601 | async def update_send_before_confirm(self, account: XYAccount, send_before_confirm: bool) -> None: | CODE |
| LOW⚡ | backend-web/app/services/account_service.py | 609 | async def update_auto_red_flower(self, account: XYAccount, auto_red_flower: bool) -> None: | CODE |
| LOW | backend-web/app/services/account_service.py | 360 | async def update_cookie(self, account: XYAccount, value: str) -> None: | CODE |
| LOW | backend-web/app/services/account_service.py | 366 | async def update_status(self, account: XYAccount, enabled: bool, disable_reason: str | None = None) -> None: | CODE |
| LOW | backend-web/app/services/account_service.py | 625 | async def update_ai_reply_block_ordered_users(self, account: XYAccount, ai_reply_block_ordered_users: bool) -> None: | CODE |
| LOW | backend-web/app/services/__init__.py | 13 | __all__ = [ | CODE |
| LOW | backend-web/app/services/alipay_service.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend-web/app/services/publish_address_service.py | 17 | __all__ = ["PublishAddressService", "ResolvedPublishAddress", "PublishAddressQueueState", "_address_to_dict"] | CODE |
| LOW | backend-web/app/services/listing_monitor_service.py | 12 | __all__ = ["ListingMonitorService", "_task_to_dict"] | CODE |
| LOW | …ckend-web/app/services/publish_batch_status_service.py | 90 | async def _update_account(cls, batch_id: str, account_id: str, **kwargs: Any) -> None: | CODE |
| LOW | backend-web/app/services/goofish_crawler.py | 60 | def set_loop(self, loop: asyncio.AbstractEventLoop) -> None: | CODE |
| LOW | backend-web/app/services/system_setting_service.py | 161 | async def set_setting(self, key: str, value: str, description: str | None = None) -> None: | CODE |
| LOW | backend-web/app/services/qr_login/__init__.py | 10 | __all__ = ["QRLoginManager", "qr_login_manager"] | STRING |
| LOW | backend-web/app/services/password_login/__init__.py | 15 | __all__ = ["PasswordLoginManager", "password_login_manager", "SESSION_PREFIX"] | CODE |
| LOW | backend-web/app/services/captcha/_exports.py | 34 | __all__ = [ | CODE |
| LOW | backend-web/app/services/search/__init__.py | 15 | __all__ = [ | STRING |
| LOW | backend-web/app/services/compass/__init__.py | 9 | __all__ = ["GoofishCompassService"] | STRING |
| LOW | backend-web/app/services/chat_new/__init__.py | 9 | __all__ = ['ImSessionManager', 'get_im_session_manager'] | CODE |
| LOW | websocket/app/utils/__init__.py | 6 | __all__ = ['ImageUploader'] | CODE |
| LOW | websocket/app/services/shipping/__init__.py | 14 | __all__ = [ | STRING |
| LOW | websocket/app/services/captcha/xianyu_slider_stealth.py | 13 | __all__ = [ | CODE |
| LOW | websocket/app/services/captcha/_exports.py | 34 | __all__ = [ | CODE |
| LOW | websocket/app/services/captcha/concurrency.py | 21 | __all__ = [ | CODE |
| LOW | websocket/app/services/captcha/slider_stealth.py | 15 | __all__ = [ | CODE |
| LOW | websocket/app/services/xianyu/delivery_utils.py | 28 | __all__ = [ | STRING |
| LOW | websocket/app/services/xianyu/utils.py | 8 | __all__ = ["safe_str"] | STRING |
| LOW | …bsocket/app/services/xianyu/delivery_rules/__init__.py | 19 | __all__ = [ | STRING |
| LOW | common/utils/auth_scope.py | 53 | __all__ = [ | CODE |
| LOW | common/utils/_exports.py | 26 | __all__ = [ | CODE |
| LOW⚡ | common/utils/text_utils.py | 51 | __all__ = ["escape_xss", "safe_str"] | CODE |
| LOW | common/utils/backup_paths.py | 115 | __all__ = [ | CODE |
| LOW | common/utils/local_image_upload.py | 205 | __all__ = [ | CODE |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend-web/app/core/http_client.py | 81 | 发送HTTP请求(带重试) Args: method: HTTP方法 url: 请求URL headers: 请求头 | STRING |
| HIGH | backend-web/app/services/account_service.py | 521 | 协议化账号密码登录成功后保存账号(按前端传入的 account_id upsert)。 与扫码登录 upsert_account_from_qr 的差异:按 account_id(非 unb)定位, 并保存 | STRING |
| HIGH | backend-web/app/services/chat_new/im_session_manager.py | 41 | 获取已连接的客户端,或新建连接 Args: account_id: 账号ID Returns: 已连接的GoofishImClient | STRING |
| HIGH | websocket/app/services/xianyu/xianyu_async.py | 1970 | 创建(或获取)单聊会话,返回会话ID(chat_id) 通过 LWP 协议 /r/SingleChatConversation/create 请求服务端: - 服务端基于 (pairFirs | STRING |
| HIGH | scheduler/app/core/http_client.py | 79 | 发送HTTP请求(带重试) Args: method: HTTP方法 url: 请求URL headers: 请求头 | STRING |
| HIGH | common/utils/xianyu_utils.py | 24 | 将cookies字符串转换为字典 Args: cookies_str: Cookie字符串,格式如 "key1=value1; key2=value2" 兼容 "k | STRING |
| HIGH | common/utils/xianyu_utils.py | 415 | 解密消息数据 Args: data: Base64编码的MessagePack数据 Returns: 解密后的JSON字符串 Raises | STRING |
| HIGH | common/utils/local_image_upload.py | 101 | 读取上传文件全部字节并按 ``max_size`` 校验大小。 Args: image: FastAPI 上传文件对象。 max_size: 最大字节数。``<= 0`` 表示不做大小校验 | STRING |
| HIGH | common/utils/local_image_upload.py | 160 | 统一处理图片上传:类型校验 → 大小校验 → 生成唯一文件名 → 写盘。 URL 拼接、失败回滚、业务保存等仍由调用方负责,函数只返回必要的中间结果。 Args: image: FastAPI 上传文件对 | STRING |
| HIGH | common/db/session.py | 63 | 将SQL语句和参数编译成完整的可执行SQL Args: statement: SQL语句 parameters: 参数字典或元组 Returns: | STRING |
| HIGH | common/services/listing_monitor_service.py | 179 | 校验分类存在且当前用户有权使用。 普通用户只能使用自己创建的分类;管理员(owner_id=None)可使用任意分类。 与分类列表的隔离规则保持一致,防止普通用户通过构造请求挂用他人分类。 | STRING |
| HIGH | common/services/listing_monitor_category_service.py | 141 | 创建分类 Args: owner_id: 当前用户ID name: 分类名称 Returns: 创建的分类详情 R | STRING |
| HIGH | common/services/listing_monitor_category_service.py | 180 | 修改分类名称 Args: category_id: 分类ID owner_id: 当前用户ID name: 新分类名称 Return | STRING |
| HIGH | common/services/xianyu_login/face_verification.py | 73 | 执行纯 API 人脸验证链路 Args: client: 贯穿登录全流程的 httpx.AsyncClient(携带 login.do 的 cookie jar) iframe_url: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | promotion/backend/app/services/product_rule_service.py | 0 | 分页查询删除规则 args: session: 数据库会话 user_id: 用户id page: 页码 page_size: 每页条数 is_admin: 是否管理员(管理员查看所有用户数据) returns: 包含规则列表和总数的字典 | STRING |
| HIGH | promotion/backend/app/services/publish_rule_service.py | 0 | 分页查询删除规则 args: session: 数据库会话 user_id: 用户id page: 页码 page_size: 每页条数 is_admin: 是否管理员(管理员查看所有用户数据) returns: 包含规则列表和总数的字典 | STRING |
| HIGH | promotion/backend/app/services/delete_rule_service.py | 0 | 分页查询删除规则 args: session: 数据库会话 user_id: 用户id page: 页码 page_size: 每页条数 is_admin: 是否管理员(管理员查看所有用户数据) returns: 包含规则列表和总数的字典 | STRING |
| HIGH | …heduler/app/services/scheduler/listing_monitor_task.py | 0 | 主动清理过期的补评价日志 删除 created_at 早于 (当前北京时间 - log_retention_days 天) 的日志记录, 避免日志表无限增长。使用参数化的 orm delete 语句,避免 sql 注入。 | STRING |
| HIGH | scheduler/app/services/scheduler/polish_task.py | 0 | 主动清理过期的补评价日志 删除 created_at 早于 (当前北京时间 - log_retention_days 天) 的日志记录, 避免日志表无限增长。使用参数化的 orm delete 语句,避免 sql 注入。 | STRING |
| HIGH | scheduler/app/services/scheduler/redelivery_task.py | 0 | 主动清理过期的补评价日志 删除 created_at 早于 (当前北京时间 - log_retention_days 天) 的日志记录, 避免日志表无限增长。使用参数化的 orm delete 语句,避免 sql 注入。 | STRING |
| HIGH | scheduler/app/services/scheduler/red_flower_task.py | 0 | 主动清理过期的补评价日志 删除 created_at 早于 (当前北京时间 - log_retention_days 天) 的日志记录, 避免日志表无限增长。使用参数化的 orm delete 语句,避免 sql 注入。 | STRING |
| HIGH | scheduler/app/services/scheduler/login_renew_task.py | 0 | 主动清理过期的补评价日志 删除 created_at 早于 (当前北京时间 - log_retention_days 天) 的日志记录, 避免日志表无限增长。使用参数化的 orm delete 语句,避免 sql 注入。 | STRING |
| HIGH | …eduler/app/services/scheduler/api_cookie_renew_task.py | 0 | 主动清理过期的补评价日志 删除 created_at 早于 (当前北京时间 - log_retention_days 天) 的日志记录, 避免日志表无限增长。使用参数化的 orm delete 语句,避免 sql 注入。 | STRING |
| HIGH | scheduler/app/services/scheduler/rate_task.py | 0 | 主动清理过期的补评价日志 删除 created_at 早于 (当前北京时间 - log_retention_days 天) 的日志记录, 避免日志表无限增长。使用参数化的 orm delete 语句,避免 sql 注入。 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | promotion/backend/app/api/routes/material.py | 35 | CODE | |
| LOW | promotion/backend/app/api/routes/taobao_alliance.py | 69 | CODE | |
| LOW | promotion/backend/app/api/routes/taobao_alliance.py | 21 | CODE | |
| LOW | promotion/backend/app/api/routes/taobao_alliance.py | 93 | CODE | |
| LOW | promotion/backend/app/api/routes/taobao_alliance.py | 124 | CODE | |
| LOW | …motion/backend/app/services/taobao_alliance_service.py | 78 | CODE | |
| LOW | …motion/backend/app/services/taobao_alliance_service.py | 198 | CODE | |
| LOW | backend-web/app/api/routes/listing_monitor.py | 388 | CODE | |
| LOW | backend-web/app/api/routes/cookies.py | 227 | CODE | |
| LOW | backend-web/app/api/routes/cookies.py | 1026 | CODE | |
| LOW | backend-web/app/api/routes/risk_control_logs.py | 21 | CODE | |
| LOW | backend-web/app/api/routes/cards.py | 182 | CODE | |
| LOW | backend-web/app/api/routes/auto_reply_logs.py | 15 | CODE | |
| LOW | backend-web/app/api/routes/orders.py | 56 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 108 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 197 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 176 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 293 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 311 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 331 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 406 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 458 | CODE | |
| LOW | backend-web/app/api/routes/distribution.py | 479 | CODE | |
| LOW | backend-web/app/api/routes/account_login_logs.py | 21 | CODE | |
| LOW | backend-web/app/api/routes/items.py | 101 | CODE | |
| LOW | backend-web/app/api/routes/payment.py | 46 | CODE | |
| LOW | backend-web/app/services/publish_execution_service.py | 36 | CODE | |
| LOW | backend-web/app/services/account_service.py | 70 | CODE | |
| LOW | backend-web/app/services/auto_reply_log_service.py | 93 | CODE | |
| LOW | backend-web/app/services/dock_record_service.py | 305 | CODE | |
| LOW | websocket/app/services/xianyu/auto_delivery_handler.py | 2595 | CODE | |
| LOW | common/services/publish_log_service.py | 25 | CODE | |
| LOW | common/services/order_service.py | 95 | CODE | |
| LOW | common/services/listing_monitor_service.py | 1101 | CODE | |
| LOW | common/services/delivery_block_rule_meta.py | 62 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | update.sh | 1 | #!/bin/bash | COMMENT |
| LOW | websocket/app/api/routes/internal.py | 1021 | CardItemRelation.item_id == request.item_id, | COMMENT |
| LOW | websocket/app/api/routes/internal.py | 1621 | "quantity_requested": requested_quantity, | COMMENT |
| LOW | frontend/src/pages/items/Items.tsx | 261 | COMMENT | |
| LOW | common/core/config.py | 81 | # 服务地址配置 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | common/db/init_database.py | 3209 | VALUES ('admin', 'admin@example.com', :password_hash, 'ACTIVE', 'ADMIN', NOW(), NOW()) | CODE |
| LOW | common/services/promotion_address_selector.py | 227 | placeholder = str(await current_input.get_attribute("placeholder") or "") | CODE |