[INFO] cloning repository https://github.com/ITmrHoang/Valuation_Pricing_Tools
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ITmrHoang/Valuation_Pricing_Tools" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FITmrHoang%2FValuation_Pricing_Tools", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FITmrHoang%2FValuation_Pricing_Tools'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4c066500997056394efb0d1421d0eed43c8ff16d
[INFO] checking ITmrHoang/Valuation_Pricing_Tools against try#ad93f57d532978d6739002a21bc66b45ed22f998 for pr-155418
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FITmrHoang%2FValuation_Pricing_Tools" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools
[INFO] finished tweaking git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools
[INFO] tweaked toml for git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools on toolchain ad93f57d532978d6739002a21bc66b45ed22f998
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad93f57d532978d6739002a21bc66b45ed22f998" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ITmrHoang/Valuation_Pricing_Tools already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad93f57d532978d6739002a21bc66b45ed22f998" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ad93f57d532978d6739002a21bc66b45ed22f998" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c9ec726b6168ea369d65abe63a22ff01a8ab2e706af3a98e91a9b7665a2b5bb9
[INFO] running `Command { std: "docker" "start" "-a" "c9ec726b6168ea369d65abe63a22ff01a8ab2e706af3a98e91a9b7665a2b5bb9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c9ec726b6168ea369d65abe63a22ff01a8ab2e706af3a98e91a9b7665a2b5bb9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c9ec726b6168ea369d65abe63a22ff01a8ab2e706af3a98e91a9b7665a2b5bb9", kill_on_drop: false }`
[INFO] [stdout] c9ec726b6168ea369d65abe63a22ff01a8ab2e706af3a98e91a9b7665a2b5bb9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ad93f57d532978d6739002a21bc66b45ed22f998" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 58a01b35ee21804173ab2fbb4554f40623a3dde43ef33ed509509bc68ef66760
[INFO] running `Command { std: "docker" "start" "-a" "58a01b35ee21804173ab2fbb4554f40623a3dde43ef33ed509509bc68ef66760", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]     Checking tokio v1.51.1
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking rustls-webpki v0.103.11
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]     Checking webpki-roots v1.0.6
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking arc-swap v1.9.1
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking tokio-test v0.4.5
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]     Checking valuation_pricing_tools v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/engine/stock_valuator.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Recommendation`
[INFO] [stdout]   --> src/engine/stock_valuator.rs:13:40
[INFO] [stdout]    |
[INFO] [stdout] 13 |     ValuationRequest, ValuationResult, Recommendation,
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FundamentalConfig`
[INFO] [stdout]   --> src/engine/stock_valuator.rs:16:26
[INFO] [stdout]    |
[INFO] [stdout] 16 |     FundamentalAnalyzer, FundamentalConfig, FundamentalData,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> src/engine/scoring.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Duration`
[INFO] [stdout]  --> src/scrapers/stock_data.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | use chrono::{DateTime, Utc, TimeZone, Duration};
[INFO] [stdout]   |              ^^^^^^^^                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> src/scrapers/proxy_pool.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::DynamicConfigManager`
[INFO] [stdout]   --> src/api/handlers.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::config::DynamicConfigManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FundamentalConfig`
[INFO] [stdout]   --> src/api/handlers.rs:22:26
[INFO] [stdout]    |
[INFO] [stdout] 22 |     FundamentalAnalyzer, FundamentalConfig, parse_fundamental_from_json,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/engine/stock_valuator.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Recommendation`
[INFO] [stdout]   --> src/engine/stock_valuator.rs:13:40
[INFO] [stdout]    |
[INFO] [stdout] 13 |     ValuationRequest, ValuationResult, Recommendation,
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FundamentalConfig`
[INFO] [stdout]   --> src/engine/stock_valuator.rs:16:26
[INFO] [stdout]    |
[INFO] [stdout] 16 |     FundamentalAnalyzer, FundamentalConfig, FundamentalData,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> src/engine/scoring.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Duration`
[INFO] [stdout]  --> src/scrapers/stock_data.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | use chrono::{DateTime, Utc, TimeZone, Duration};
[INFO] [stdout]   |              ^^^^^^^^                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> src/scrapers/proxy_pool.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::DynamicConfigManager`
[INFO] [stdout]   --> src/api/handlers.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::config::DynamicConfigManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FundamentalConfig`
[INFO] [stdout]   --> src/api/handlers.rs:22:26
[INFO] [stdout]    |
[INFO] [stdout] 22 |     FundamentalAnalyzer, FundamentalConfig, parse_fundamental_from_json,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload`
[INFO] [stdout]    --> src/crew_integration/mod.rs:218:33
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn verify_webhook_signature(payload: &[u8], signature: &str, secret: &str) -> bool {
[INFO] [stdout]     |                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload`
[INFO] [stdout]    --> src/crew_integration/mod.rs:218:33
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn verify_webhook_signature(payload: &[u8], signature: &str, secret: &str) -> bool {
[INFO] [stdout]     |                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `default_stock_attributes`, `find_attribute`, `update_weight`, and `normalize_weights` are never used
[INFO] [stdout]    --> src/config/attributes.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  59 | impl AttributeSet {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn default_stock_attributes() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn find_attribute(&self, name: &str) -> Option<&AttributeDefinition> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn update_weight(&mut self, name: &str, new_weight: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn normalize_weights(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_weight` and `normalize` are never used
[INFO] [stdout]    --> src/config/attributes.rs:315:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl WeightConfig {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn set_weight(&mut self, name: &str, value: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn normalize(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MarketplaceType` is never used
[INFO] [stdout]   --> src/config/marketplace_profiles.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum MarketplaceType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `default_opensea`, `default_magic_eden`, and `default_blur` are never used
[INFO] [stdout]   --> src/config/marketplace_profiles.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl MarketplaceProfile {
[INFO] [stdout]    | ----------------------- associated functions in this implementation
[INFO] [stdout] 52 |     /// Tạo profile mặc định cho OpenSea
[INFO] [stdout] 53 |     pub fn default_opensea() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn default_magic_eden() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn default_blur() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `asset_type` is never used
[INFO] [stdout]    --> src/engine/mod.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub trait PricingEngine: Send + Sync {
[INFO] [stdout]     |           ------------- method in this trait
[INFO] [stdout] 112 |     /// Loại tài sản mà engine xử lý
[INFO] [stdout] 113 |     fn asset_type(&self) -> AssetType;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `scoring` is never read
[INFO] [stdout]   --> src/engine/nft_valuator.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct NftValuator {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     scoring: ScoringEngine,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total_volume` is never read
[INFO] [stdout]   --> src/engine/nft_valuator.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct CollectionData {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub total_volume: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CollectionData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token_id`, `name`, and `last_sale_price` are never read
[INFO] [stdout]   --> src/engine/nft_valuator.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NftItemData {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 52 |     /// Token ID
[INFO] [stdout] 53 |     pub token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 54 |     /// Tên item
[INFO] [stdout] 55 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub last_sale_price: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NftItemData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScoreBreakdown` is never constructed
[INFO] [stdout]   --> src/engine/scoring.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ScoreBreakdown {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/engine/scoring.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct ScoringEngine {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 27 |     config: Arc<DynamicConfigManager>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `calculate_composite_score`, `rank_assets`, `min_max_normalize`, `z_score_normalize`, and `calculate_data_confidence` are never used
[INFO] [stdout]    --> src/engine/scoring.rs:37:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl ScoringEngine {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn calculate_composite_score(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn rank_assets(&self, scores: &[(String, f64)]) -> Vec<(String, f64, usize)> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn min_max_normalize(values: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn z_score_normalize(values: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn calculate_data_confidence(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MarketplaceScraper` is never used
[INFO] [stdout]   --> src/scrapers/mod.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub trait MarketplaceScraper: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CollectionInfo` is never constructed
[INFO] [stdout]   --> src/scrapers/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct CollectionInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NftInfo` is never constructed
[INFO] [stdout]   --> src/scrapers/mod.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct NftInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitedClient` is never constructed
[INFO] [stdout]   --> src/scrapers/mod.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RateLimitedClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_with_proxy`, `get_client_for_request`, and `get_with_retry` are never used
[INFO] [stdout]    --> src/scrapers/mod.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  96 | impl RateLimitedClient {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  97 |     /// Tạo client mới không proxy
[INFO] [stdout]  98 |     pub fn new(rate_limit_ms: u64, user_agent: &str, timeout_secs: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn new_with_proxy(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn get_client_for_request(&self) -> (reqwest::Client, Option<String>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub async fn get_with_retry(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OpenSeaScraper` is never constructed
[INFO] [stdout]   --> src/scrapers/opensea.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct OpenSeaScraper {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `api_headers` are never used
[INFO] [stdout]   --> src/scrapers/opensea.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl OpenSeaScraper {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 18 |     /// Khởi tạo OpenSea scraper
[INFO] [stdout] 19 |     pub fn new(base_url: &str, api_key: &str, rate_limit_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn api_headers(&self) -> Vec<(String, String)> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MagicEdenScraper` is never constructed
[INFO] [stdout]   --> src/scrapers/magic_eden.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct MagicEdenScraper {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `api_headers` are never used
[INFO] [stdout]   --> src/scrapers/magic_eden.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl MagicEdenScraper {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 18 |     /// Khởi tạo Magic Eden scraper
[INFO] [stdout] 19 |     pub fn new(base_url: &str, api_key: &str, rate_limit_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn api_headers(&self) -> Vec<(String, String)> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StockDataFetcher` is never constructed
[INFO] [stdout]   --> src/scrapers/stock_data.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct StockDataFetcher {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StockQuote` is never constructed
[INFO] [stdout]   --> src/scrapers/stock_data.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct StockQuote {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fetch_historical`, `fetch_quote`, and `fetch_full` are never used
[INFO] [stdout]    --> src/scrapers/stock_data.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl StockDataFetcher {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  41 |     /// Khởi tạo fetcher
[INFO] [stdout]  42 |     pub fn new(base_url: &str, rate_limit_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub async fn fetch_historical(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub async fn fetch_quote(&self, symbol: &str) -> Result<StockQuote> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn fetch_full(&self, symbol: &str, history_days: u32) -> Result<StockQuote> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_yahoo_chart_response` is never used
[INFO] [stdout]    --> src/scrapers/stock_data.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn parse_yahoo_chart_response(data: &serde_json::Value, symbol: &str) -> Result<Vec<OhlcvBar>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_url` is never used
[INFO] [stdout]   --> src/scrapers/proxy_pool.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl ProxyConfig {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 49 |     /// Tạo URL proxy đầy đủ
[INFO] [stdout] 50 |     pub fn to_url(&self) -> String {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxyState` is never constructed
[INFO] [stdout]   --> src/scrapers/proxy_pool.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct ProxyState {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `success_rate`, `mark_success`, and `mark_failure` are never used
[INFO] [stdout]    --> src/scrapers/proxy_pool.rs:81:8
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl ProxyState {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  81 |     fn new(config: ProxyConfig) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     fn success_rate(&self) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     fn mark_success(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn mark_failure(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxyPool` is never constructed
[INFO] [stdout]    --> src/scrapers/proxy_pool.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub struct ProxyPool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/scrapers/proxy_pool.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl ProxyPool {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 165 |     /// Khởi tạo proxy pool từ config
[INFO] [stdout] 166 |     pub fn new(config: ProxyPoolConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn alive_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn get_next_proxy(&self) -> Option<ProxyConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn report_success(&self, proxy_url: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn report_failure(&self, proxy_url: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     fn find_proxy_state(&self, proxy_url: &str) -> Option<&Arc<ProxyState>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn get_stats(&self) -> Vec<ProxyStats> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn create_proxied_client(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxyStats` is never constructed
[INFO] [stdout]    --> src/scrapers/proxy_pool.rs:270:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub struct ProxyStats {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `verify_webhook_signature` is never used
[INFO] [stdout]    --> src/crew_integration/mod.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn verify_webhook_signature(payload: &[u8], signature: &str, secret: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `save_price_data` is never used
[INFO] [stdout]    --> src/storage/models.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl ValuationRepository {
[INFO] [stdout]     | ------------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub async fn save_price_data(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ApiResponse` is never constructed
[INFO] [stdout]   --> src/api/models.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct ApiResponse<T: Serialize> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `success` and `error` are never used
[INFO] [stdout]   --> src/api/models.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl<T: Serialize> ApiResponse<T> {
[INFO] [stdout]    | --------------------------------- associated functions in this implementation
[INFO] [stdout] 71 |     /// Tạo response thành công
[INFO] [stdout] 72 |     pub fn success(data: T) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn error(message: &str) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `default_stock_attributes`, `find_attribute`, `update_weight`, and `normalize_weights` are never used
[INFO] [stdout]    --> src/config/attributes.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  59 | impl AttributeSet {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn default_stock_attributes() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn find_attribute(&self, name: &str) -> Option<&AttributeDefinition> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn update_weight(&mut self, name: &str, new_weight: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn normalize_weights(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_weight` and `normalize` are never used
[INFO] [stdout]    --> src/config/attributes.rs:315:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl WeightConfig {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn set_weight(&mut self, name: &str, value: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn normalize(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MarketplaceType` is never used
[INFO] [stdout]   --> src/config/marketplace_profiles.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum MarketplaceType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `default_opensea`, `default_magic_eden`, and `default_blur` are never used
[INFO] [stdout]   --> src/config/marketplace_profiles.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl MarketplaceProfile {
[INFO] [stdout]    | ----------------------- associated functions in this implementation
[INFO] [stdout] 52 |     /// Tạo profile mặc định cho OpenSea
[INFO] [stdout] 53 |     pub fn default_opensea() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn default_magic_eden() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn default_blur() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `asset_type` is never used
[INFO] [stdout]    --> src/engine/mod.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub trait PricingEngine: Send + Sync {
[INFO] [stdout]     |           ------------- method in this trait
[INFO] [stdout] 112 |     /// Loại tài sản mà engine xử lý
[INFO] [stdout] 113 |     fn asset_type(&self) -> AssetType;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `scoring` is never read
[INFO] [stdout]   --> src/engine/nft_valuator.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct NftValuator {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     scoring: ScoringEngine,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total_volume` is never read
[INFO] [stdout]   --> src/engine/nft_valuator.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct CollectionData {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub total_volume: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CollectionData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `token_id`, `name`, and `last_sale_price` are never read
[INFO] [stdout]   --> src/engine/nft_valuator.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NftItemData {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 52 |     /// Token ID
[INFO] [stdout] 53 |     pub token_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 54 |     /// Tên item
[INFO] [stdout] 55 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub last_sale_price: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NftItemData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScoreBreakdown` is never constructed
[INFO] [stdout]   --> src/engine/scoring.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ScoreBreakdown {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/engine/scoring.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct ScoringEngine {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 27 |     config: Arc<DynamicConfigManager>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `calculate_composite_score`, `rank_assets`, `min_max_normalize`, `z_score_normalize`, and `calculate_data_confidence` are never used
[INFO] [stdout]    --> src/engine/scoring.rs:37:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl ScoringEngine {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn calculate_composite_score(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn rank_assets(&self, scores: &[(String, f64)]) -> Vec<(String, f64, usize)> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn min_max_normalize(values: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn z_score_normalize(values: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn calculate_data_confidence(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MarketplaceScraper` is never used
[INFO] [stdout]   --> src/scrapers/mod.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub trait MarketplaceScraper: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CollectionInfo` is never constructed
[INFO] [stdout]   --> src/scrapers/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct CollectionInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NftInfo` is never constructed
[INFO] [stdout]   --> src/scrapers/mod.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct NftInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitedClient` is never constructed
[INFO] [stdout]   --> src/scrapers/mod.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RateLimitedClient {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_with_proxy`, `get_client_for_request`, and `get_with_retry` are never used
[INFO] [stdout]    --> src/scrapers/mod.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  96 | impl RateLimitedClient {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  97 |     /// Tạo client mới không proxy
[INFO] [stdout]  98 |     pub fn new(rate_limit_ms: u64, user_agent: &str, timeout_secs: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn new_with_proxy(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn get_client_for_request(&self) -> (reqwest::Client, Option<String>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub async fn get_with_retry(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OpenSeaScraper` is never constructed
[INFO] [stdout]   --> src/scrapers/opensea.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct OpenSeaScraper {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `api_headers` are never used
[INFO] [stdout]   --> src/scrapers/opensea.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl OpenSeaScraper {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 18 |     /// Khởi tạo OpenSea scraper
[INFO] [stdout] 19 |     pub fn new(base_url: &str, api_key: &str, rate_limit_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn api_headers(&self) -> Vec<(String, String)> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MagicEdenScraper` is never constructed
[INFO] [stdout]   --> src/scrapers/magic_eden.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct MagicEdenScraper {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `api_headers` are never used
[INFO] [stdout]   --> src/scrapers/magic_eden.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl MagicEdenScraper {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 18 |     /// Khởi tạo Magic Eden scraper
[INFO] [stdout] 19 |     pub fn new(base_url: &str, api_key: &str, rate_limit_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn api_headers(&self) -> Vec<(String, String)> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StockDataFetcher` is never constructed
[INFO] [stdout]   --> src/scrapers/stock_data.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct StockDataFetcher {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StockQuote` is never constructed
[INFO] [stdout]   --> src/scrapers/stock_data.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct StockQuote {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fetch_historical`, `fetch_quote`, and `fetch_full` are never used
[INFO] [stdout]    --> src/scrapers/stock_data.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl StockDataFetcher {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  41 |     /// Khởi tạo fetcher
[INFO] [stdout]  42 |     pub fn new(base_url: &str, rate_limit_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub async fn fetch_historical(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub async fn fetch_quote(&self, symbol: &str) -> Result<StockQuote> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn fetch_full(&self, symbol: &str, history_days: u32) -> Result<StockQuote> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_yahoo_chart_response` is never used
[INFO] [stdout]    --> src/scrapers/stock_data.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn parse_yahoo_chart_response(data: &serde_json::Value, symbol: &str) -> Result<Vec<OhlcvBar>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_url` is never used
[INFO] [stdout]   --> src/scrapers/proxy_pool.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl ProxyConfig {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 49 |     /// Tạo URL proxy đầy đủ
[INFO] [stdout] 50 |     pub fn to_url(&self) -> String {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxyState` is never constructed
[INFO] [stdout]   --> src/scrapers/proxy_pool.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct ProxyState {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `success_rate`, `mark_success`, and `mark_failure` are never used
[INFO] [stdout]    --> src/scrapers/proxy_pool.rs:81:8
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl ProxyState {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  81 |     fn new(config: ProxyConfig) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     fn success_rate(&self) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     fn mark_success(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn mark_failure(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxyPool` is never constructed
[INFO] [stdout]    --> src/scrapers/proxy_pool.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub struct ProxyPool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/scrapers/proxy_pool.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl ProxyPool {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 165 |     /// Khởi tạo proxy pool từ config
[INFO] [stdout] 166 |     pub fn new(config: ProxyPoolConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn alive_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn get_next_proxy(&self) -> Option<ProxyConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn report_success(&self, proxy_url: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn report_failure(&self, proxy_url: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     fn find_proxy_state(&self, proxy_url: &str) -> Option<&Arc<ProxyState>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn get_stats(&self) -> Vec<ProxyStats> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn create_proxied_client(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxyStats` is never constructed
[INFO] [stdout]    --> src/scrapers/proxy_pool.rs:270:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub struct ProxyStats {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `verify_webhook_signature` is never used
[INFO] [stdout]    --> src/crew_integration/mod.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn verify_webhook_signature(payload: &[u8], signature: &str, secret: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `save_price_data` is never used
[INFO] [stdout]    --> src/storage/models.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl ValuationRepository {
[INFO] [stdout]     | ------------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub async fn save_price_data(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ApiResponse` is never constructed
[INFO] [stdout]   --> src/api/models.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct ApiResponse<T: Serialize> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `success` and `error` are never used
[INFO] [stdout]   --> src/api/models.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl<T: Serialize> ApiResponse<T> {
[INFO] [stdout]    | --------------------------------- associated functions in this implementation
[INFO] [stdout] 71 |     /// Tạo response thành công
[INFO] [stdout] 72 |     pub fn success(data: T) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn error(message: &str) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 30s
[INFO] running `Command { std: "docker" "inspect" "58a01b35ee21804173ab2fbb4554f40623a3dde43ef33ed509509bc68ef66760", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "58a01b35ee21804173ab2fbb4554f40623a3dde43ef33ed509509bc68ef66760", kill_on_drop: false }`
[INFO] [stdout] 58a01b35ee21804173ab2fbb4554f40623a3dde43ef33ed509509bc68ef66760
