Files

1 line
63 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "cacaview/data", "files": {"README.md": {"29b12f87623090904fc6f3c7e30ef92a92f5a046": {"t": 1785746656.5861452, "n": 18058, "h": "1ef31447a32f875c", "c": "# ACTAP — 东盟跨境贸易 AI 智能分析平台\n\n> **ASEAN Cross-Border Trade AI Analytics Platform** | 中国—东盟双边贸易数据 + AI 智能分析\n\n[English](#english) · [中文](#中文)\n\n---\n\n## 中文\n\n### 项目简介\n\nACTAP 是一个面向中国—东盟跨境贸易的 AI 智能分析平台,整合 9 个权威数据源(UN Comtrade、World Bank、IMF、广西公共数据平台、北部湾港、RCEP 关税数据库等),提供:\n\n- 📊 **总览仪表盘** — KPI 卡片、Mapbox 交互式贸易地图、月度趋势、桑基流向图\n- 🔍 **贸易分析** — 多国趋势对比、雷达图、Top-N 排名、完整桑基图\n- 🤖 **AI 预测** — ARIMA/SARIMA/Holt-Winters 时序预测、商品聚类、风险预警\n- 🧮 **关税计算** — RCEP/ACFTA/MFN 三档对比,原产地规则,节省金额\n- 💬 **AI 助手** — 基于 DeepSeek 的对话式贸易问答\n- 📈 **量化分析** — 多因子分解、相关性/协整分析、交易信号、VaR、组合优化、回测\n- 🏢 **企业风控** — 供应链风险评分、合规筛查、跨 FTA 关税优化、供应链网络图\n- 🌏 **社会经济** — 宏观指标、贸易影响力、ESG 可持续性、贸易竞争力\n- 📝 **报告生成** — 一键导出 PDF / Word 贸易分析报告\n- 🔐 **用户认证** — JWT 双 Token 认证 + 角色管理\n- 🌐 **国际化** — 中文 / English 双语切换\n\n### 技术栈 / Tech Stack\n\n| 层级 | 技术 | 版本 |\n|------|------|------|\n| **前端框架** | React + TypeScript | 19.2 / 6.0 |\n| **UI 组件** | Ant Design + Icons | 6.5 / 6.3 |\n| **可视化** | ECharts + Mapbox GL | 6.1 / 3.26 |\n| **路由** | React Router | 7.18 |\n| **构建工具** | Vite | 8.1 |\n| **HTTP** | Axios | 1.18 |\n| **日期** | dayjs | 1.11 |\n| **Linter** | oxlint | 1.71 |\n| **后端框架** | FastAPI + Uvicorn | 0.115 / 0.30 |\n| **ORM** | SQLAlchemy | 2.0 |\n| **校验** | Pydantic + Settings | 2.9 / 2.5 |\n| **日志** | structlog(JSON / 彩色) | 24.4 |\n| **异步 HTTP** | httpx | 0.27 |\n| **认证** | PyJWT + bcrypt | 2.8+ / 4.0+ |\n| **报告** | ReportLab + python-docx | 4.0+ / 1.0+ |\n| **统计** | NumPy + SciPy + pandas | 1.26 / 1.11 / 2.2 |\n| **ML** | scikit-learn + statsmodels + arch | 1.5 / 0.14 / 6.0 |\n| **AI 对话** | OpenAI 兼容(DeepSeek) | 1.50 |\n| **存储** | SQLite(6 表) + 文件缓存(TTL 24h) | — |\n| **测试** | pytest + httpx TestClient | 8.3 |\n| **格式化** | ruff | 0.7 |\n| **容器** | Docker 多阶段构建 | — |\n| **Web 服务器** | Nginx(前端静态 + API 代理) | 1.27 |\n\n### 架构 / Architecture\n\n```\n┌──────────────────────────────────────────────────────────────────────┐\n│ Browser ─→ Nginx (FE) :3000 │\n│ │ /api/* proxy │\n│ ▼ │\n│ FastAPI Backend :8001 │\n│ ┌────────────────────────────────────────────────────────────────┐ │\n│ │ Middleware chain (outer → inner) │ │\n│ │ CORS → RequestTracking → Prometheus → RateLimit → │ │\n│ │ APIKeyAuth → App │ │\n│ └────────────────────────────────────────────────────────────────┘ │\n│ │ │ │ │\n│ ▼ ▼ ▼ │\n│ api/routes/ services/ repositories/ │\n│ (HTTP 层) (业务逻辑) (数据访问层) │\n│ ├ overview ├ trade_service └ trade_repo │\n│ ├ trade │ │\n│ ├ ai_predict data/ │\n│ ├ tariff (数据引擎 & 外部 API) │\n│ ├ chat ├ analytics.py ← 爆发检测 + RCEP 节省 │\n│ ├ analytics ├ factor_engine.py ← 多因子分解 (Fama-French) │\n│ ├ quant ├ ts_models.py ← ARIMA/SARIMA/Holt-Winters │\n│ ├ enterprise ├ signal_generator.py ← 交易信号 │\n│ ├ socioeconomic ├ portfolio_optimizer.py ← Markowitz 组合 │\n│ ├ auth ├ var_calculator.py ← VaR / CVaR │\n│ ├ report ├ correlation_engine.py ← 协整/结构性突变 │\n│ └ datasources ├ backtest_engine.py ← 蒙特卡洛回测 │\n│ ├ chinadata_client stats_gov_client │\n│ ├ comtrade_client worldbank_client │\n│ ├ commodity_client imf_client bdi_client │\n│ └ cache.py │\n│ │ │\n│ └───────────────────────────────────────┐ │\n│ ▼ │\n│ SQLAlchemy ORM │\n│ │ │\n│ ┌────────────┴──────────┐ │\n│ ▼ ▼ │\n│ SQLite (actap.db) API Cache DB │\n│ ├ users (认证) │\n│ ├ countries (国家维度) │\n│ ├ products (商品维度) │\n│ ├ trade_records (贸易事实) │\n│ ├ tariff_rules (关税规则) │\n│ └ data_sources (数据源元数据) │\n└──────────────────────────────────────────────────────────────────────┘\n```\n\n### 页面模块 / Pages\n\n| 路由 | 模块 | 功能 |\n|------|------|------|\n| `/` | 总览仪表盘 | KPI 卡片、Mapbox 贸易地图、月度趋势、桑基流向 |\n| `/trade` | 贸易分析 | 多国趋势、雷达对比、排名、完整桑基图(4 Tab) |\n| `/ai` | AI 预测 | 时序预测、商品聚类散点图、风险预警时间线 |\n| `/tariff` | 关税计算 | RCEP/ACFTA/MFN 三档对比、原产地规则、节省饼图 |\n| `/analytics` | 智能分析 | 爆发检测、价值链位置、RCEP 节省、风险仪表盘 |\n| `/factors` | 因子分析 | 因子贡献瀑布图、季节雷达、趋势分解、洞察表 |\n| `/quant` | 量化分析 | 交易信号、VaR、有效前沿、时序预测 |\n| `/enterprise` | 企业风控 | 风险监控、合规审查、成本优化、供应链网络 |\n| `/socioeconomic` | 社会经济 | 宏观指标、贸易影响力、ESG、竞争力 |\n| `/chat` | AI 助手 | 对话式贸易问答,支持内联图表 |\n| `/assets` | 数据资产 | 数据血缘、质量监控、数据目录 |\n| `/login` | 用户认证 | 登录 / 注册(JWT) |\n\n### 本地启动 / Quickstart\n\n#### 方式 A:Docker(推荐)\n\n```bash\ngit clone <repo-url> actap && cd actap\ncp .env.dev .env\ndocker compose up -d\n# Frontend: http://localhost:3000\n# Backend: http://localhost:8001/docs\n```\n\n#### 方式 B:本地 Python + Node\n\n```bash\n# Backend\ncd backend\npython3 -m venv .venv && source .venv/bin/activate\npip install -r requirements.txt\ncp .env.example .env\nuvicorn app.main:app --reload --port 8001\n\n# Frontend (separate terminal)\ncd frontend\nnpm install\nnpm run dev # http://localhost:3000\n```\n\n### 部署 / Deployment\n\n| 环境 | 命令 |\n|------|------|\n| Dev | `docker compose up -d` |\n| Staging | `docker compose -f docker-compose.prod.yml --env-file .env.staging up -d` |\n| Production | `docker compose -f docker-compose.prod.yml --env-file .env.prod up -d` |\n| Bare-metal (systemd) | `sudo cp deploy/systemd/*.service /etc/systemd/system && sudo systemctl enable --now actap-backend actap-frontend` |\n| Release (CI) | Tag a commit `git tag v1.2.3 && git push --tags` → GitHub Actions builds and pushes to GHCR |\n| Manual release | `./deploy/scripts/release.sh v1.2.3` (auto-rollback on health-check fail) |\n\n详见 [`docs/OPERATIONS.md`](docs/OPERATIONS.md)。\n\n### 开发 / Development\n\n```bash\n# Lint\ncd backend && ruff check . && ruff format --check .\ncd frontend && npm run lint\n\n# Tests\ncd backend && pytest -v --cov=app\n# Coverage report → htmlcov/index.html\n\n# OpenAPI 文档 (dev only)\nopen http://localhost:8001/docs\n```\n\n### 环境变量 / Environment\n\n所有可调参数见 [`backend/.env.example`](backend/.env.example)。关键项:\n\n| 变量 | 说明 | 默认值 |\n|------|------|--------|\n| `ENVIRONMENT` | `development` / `staging` / `production` | `development` |\n| `API_KEY` | 生产必填,`X-API-Key` header 鉴权 | — |\n| `CORS_ORIGINS` | 生产必须白名单(不能 `*`) | `*` |\n| `DATABASE_URL` | SQLite 或 PostgreSQL 连接串 | `sqlite:///./actap.db` |\n| `OPENAI_API_KEY` | AI 助手所需(DeepSeek) | — |\n| `OPENAI_BASE_URL` | 兼容 API 地址 | `https://api.deepseek.com` |\n| `MODEL_NAME` | 大模型名称 | `deepseek-chat` |\n| `RATE_LIMIT_PER_MINUTE` | 全局限流(IP) | `120` |\n| `RATE_LIMIT_STRICT_PER_MINUTE` | 严格端点限流 | `10` |\n\n### 项目结构 / Project Structure\n\n```\nactap/\n├── backend/ # FastAPI 后端\n│ ├── app/\n│ │ ├── api/routes/ # HTTP 端点(薄层)\n│ │ │ ├── health.py # 健康检查 + Prometheus 指标\n│ │ │ ├── auth.py # 注册 / 登录 / 用户信息\n│ │ │ ├── overview.py # KPI 总览 + 贸易地图\n│ │ │ ├── trade.py # 贸易趋势 / 排名 / 桑基\n│ │ │ ├── ai_predict.py # 时序预测 / 聚类 / 风险\n│ │ │ ├── tariff.py # RCEP 关税计算\n│ │ │ ├── chat.py # AI 对话助手\n│ │ │ ├── analytics.py # 爆发检测 / 风险 / 价值链\n│ │ │ ├── quant.py # 量化分析全套端点\n│ │ │ ├── enterprise.py # 企业风控中心\n│ │ │ ├── socioeconomic.py # 社会经济仪表盘\n│ │ │ ├── report.py # PDF/Word 报告导出\n│ │ │ ├── assets.py # 数据资产血缘 / 质量 / 目录\n│ │ │ └── datasources.py # 数据源状态 / 汇率 / 宏观\n│ │ ├── services/ # 业务逻辑(纯 Python)\n│ │ │ └── trade_service.py\n│ │ ├── repositories/ # 数据访问层(SQLAlchemy)\n│ │ │ └── trade_repo.py\n│ │ ├── data/ # 数据引擎 + 外部 API 客户端\n│ │ │ ├── factor_engine.py # 多因子分析(Fama-French 风格)\n│ │ │ ├── ts_models.py # ARIMA / SARIMA / Holt-Winters / STL\n│ │ │ ├── signal_generator.py # 交易信号(动量 / 均值回归 / 突破)\n│ │ │ ├── portfolio_optimizer.py # Markowitz 组合优化\n│ │ │ ├── var_calculator.py # VaR / CVaR / 压力测试\n│ │ │ ├── correlation_engine.py # 协整 / 结构突变 / 聚类\n│ │ │ ├── backtest_engine.py # 蒙特卡洛回测\n│ │ │ ├── analytics.py # 爆发检测 / RCEP 节省\n│ │ │ ├── chinadata_client.py # 中国海关数据门户\n│ │ │ ├── stats_gov_client.py # 国家统计局\n│ │ │ ├── commodity_client.py # World Bank 商品价格\n│ │ │ ├── comtrade_client.py # UN Comtrade\n│ │ │ ├── worldbank_client.py # World Bank 开放数据\n│ │ │ ├── imf_client.py # IMF DOTS\n│ │ │ ├── bdi_client.py # 波罗的海干散货指数\n│ │ │ ├── exchange_rate_client.py # 汇率数据\n│ │ │ ├── tariff_loader.py # RCEP/ACFTA 关税规则库\n│ │ │ ├── cache.py # SQLite API 缓存\n│ │ │ └── etl.py # ETL 管道\n│ │ ├── ai/ # AI 服务\n│ │ │ ├── auth_service.py # JWT + bcrypt\n│ │ │ ├── chat_service.py # DeepSeek 对话\n│ │ │ └── report_service.py # PDF / Word 报告生成\n│ │ ├── core/ # 配置 + 常量 + 日志 + 指标\n│ │ │ ├── config.py # pydantic-settings 配置\n│ │ │ ├── constants.py # 命名常量(无魔术数字)\n│ │ │ ├── logging.py # structlog 配置\n│ │ │ └── metrics.py # Prometheus 注册表\n│ │ ├── middleware/ # 中间件链\n│ │ │ ├── auth.py # API Key 鉴权\n│ │ │ ├── rate_limit.py # 滑动窗口限流\n│ │ │ ├── errors.py # 统一错误码 + 脱敏\n│ │ │ ├── tracking.py # Request ID 追踪\n│ │ │ └── metrics_mw.py # Prometheus 指标采集\n│ │ ├── models/ # 数据模型\n│ │ │ ├── database.py # SQLite 引擎 + Session\n│ │ │ ├── schemas_db.py # ORM(User/TradeRecord/Country/Product/TariffRule/DataSource)\n│ │ │ ├── schemas.py # Pydantic 响应模型\n│ │ │ └── schemas_auth.py # 认证相关模型\n│ │ ├── mock_data/ # 开发数据\n│ │ │ ├── init_db.py # DB 初始化 + 真实数据拉取\n│ │ │ └── trade_generator.py # 模拟贸易数据生成器\n│ │ └── main.py # App 工厂 + 生命周期\n│ ├── tests/ # pytest(单元 + 集成)\n│ ├── requirements.txt\n│ ├── pyproject.toml # ruff + pytest 配置\n│ └── Dockerfile # 多阶段:Python 3.11-slim\n├── frontend/ # React SPA\n│ ├── src/\n│ │ ├── i18n/ # 国际化(zh-CN / en-US)\n│ │ ├── components/ # 全局组件\n│ │ │ └── LanguageSwitcher.tsx # 语言切换按钮\n│ │ ├── layouts/\n│ │ │ └── AppLayout.tsx # 侧边栏 + 头部 + Outlet\n│ │ ├── pages/\n│ │ │ ├── Dashboard/ # 总览仪表盘(含 Mapbox / TradeMap / KPICards / MiniTrend / MiniSankey)\n│ │ │ ├── TradeAnalysis/ # 贸易分析(4 Tab)\n│ │ │ ├── AIPrediction/ # AI 预测(LSTM / 聚类 / 风险)\n│ │ │ ├── TariffCalc/ # 关税计算器\n│ │ │ ├── Analytics/ # 智能分析中心\n│ │ │ ├── FactorAnalysis/ # 多因子分析\n│ │ │ ├── QuantDashboard/ # 量化分析仪表盘\n│ │ │ ├── Enterprise/ # 企业风控中心\n│ │ │ ├── Socioeconomic/ # 社会经济仪表盘\n│ │ │ ├── AIAssistant/ # AI 对话助手\n│ │ │ ├── DataAssets/ # 数据资产管理\n│ │ │ └── Auth/ # 登录 / 注册\n│ │ ├── services/api.ts # Axios 类型化 API 客户端\n│ │ ├── types/index.ts # 前端领域类型定义\n│ │ ├── hooks/useApi.ts # 通用数据获取 Hook\n│ │ └── utils/ # 格式化 / API 工具函数\n│ ├── nginx.conf # 生产 nginx 配置\n│ └── Dockerfile # 多阶段:Node 20 → Nginx 1.27\n├── deploy/\n│ ├── systemd/ # 生产进程管理(安全加固)\n│ └── scripts/ # release.sh(自动回滚)\n├── docs/ # 文档\n│ ├── API.md # API 端点速查\n│ ├── OPERATIONS.md # SRE 运维手册\n│ └── adr/ # 架构决策记录\n├── .github/workflows/ # CI: lint → test → build → push\n├── docker-compose.yml # Dev\n├── docker-compose.prod.yml # Prod\n├── .env.dev / .env.staging / .env.prod\n└── README.md\n```\n\n### 代码统计 / Code Stats\n\n| 目录 | Python 文件数 | 代码行数 |\n|------|-------------|---------|\n| `backend/app/` | 63 | ~13,400 |\n| `backend/tests/` | 37 | ~3,800 |\n| **总计** | **100** | **~17,200** |\n\n### 贡献 / Contributing\n\n欢迎贡献!请阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md) 与 [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)。\n\n### 许可证 / License\n\nMIT\n\n---\n\n## English\n\n### Overview\n\nACTAP is an AI-powered analytics platform for China–ASEAN cross-border trade. It integrates 9 authoritative data sources (UN Comtrade, World Bank, IMF, Guangxi Open Data, Beibu Gulf Port, RCEP Tariff DB) and provides:\n\n- 📊 **Overview dashboard** — KPIs, Mapbox interactive trade map, monthly trends, Sankey flow diagram\n- 🔍 **Trade analysis** — multi-country trends, radar comparison, Top-N ranking, full Sankey (4 tabs)\n- 🤖 **AI prediction** — ARIMA/SARIMA/Holt-Winters time series forecast, product clustering, risk alerts\n- 🧮 **Tariff calculator** — RCEP / ACFTA / MFN comparison with USD savings and origin rules\n- 💬 **AI assistant** — conversational Q&A powered by DeepSeek LLM\n- 📈 **Quantitative analytics** — multi-factor decomposition, correlation/cointegration, trading signals, VaR, portfolio optimization, backtesting\n- 🏢 **Enterprise risk** — supply chain risk scoring, compliance screening, cross-FTA cost optimization, supply chain network visualization\n- 🌏 **Socioeconomic dashboard** — macro indicators, trade impact, ESG sustainability, competitiveness indices\n- 📝 **Report generation** — one-click PDF / Word export of trade analysis reports\n- 🔐 **Authentication** — JWT-based user registration / login with role management\n- 🌐 **i18n** — Chinese / English language switching\n\n### Highlights\n\n- **Type-safe end-to-end** — Pydantic + TypeScript strict types, zero `any` in API layer\n- **Production-grade** — non-root Docker, structured JSON logging, Prometheus metrics, health checks, rate limiting, API key auth\n- **Layered architecture** — `api → services → repositories → models` (4-layer separation)\n- **Observable** — every request has a `request_id`, W3C `traceparent` support, all logs structured in prod\n- **Secure by default** — CORS whitelist enforced in prod, secrets from env, no hardcoded keys, bcrypt passwords\n- **Rich analytics engine** — 11 dedicated modules covering time series, factor analysis, signals, VaR, portfolio, backtesting\n- **Multi-source data** — 9+ external API clients with SQLite caching and TTL\n\n### Tech Stack\n\n| Layer | Technology | Version |\n|-------|-----------|---------|\n| Frontend | React + TypeScript | 19.2 / 6.0 |\n| UI | Ant Design + Icons | 6.5 / 6.3 |\n| Visualization | ECharts + Mapbox GL | 6.1 / 3.26 |\n| Routing | React Router | 7.18 |\n| Build | Vite | 8.1 |\n| Backend | FastAPI + Uvicorn | 0.115 / 0.30 |\n| ORM | SQLAlchemy | 2.0 |\n| Validation | Pydantic + Settings | 2.9 / 2.5 |\n| Logging | structlog | 24.4 |\n| Auth | PyJWT + bcrypt | 2.8+ / 4.0+ |\n| Reports | ReportLab + python-docx | 4.0+ / 1.0+ |\n| Analytics | NumPy + SciPy + pandas + statsmodels | 1.26 / 1.11 / 2.2 / 0.14 |\n| ML | scikit-learn + arch (GARCH) | 1.5 / 6.0 |\n| Storage | SQLite (6 tables) + file cache (TTL 24h) | — |\n| Testing | pytest + httpx TestClient | 8.3 |\n| Linting | ruff + oxlint | 0.7 / 1.71 |\n| Containers | Docker multi-stage (Python 3.11-slim / Node 20 → Nginx 1.27) | — |\n\n### Project structure\n\n```\nactap/\n├── backend/ # FastAPI service\n│ ├── app/\n│ │ ├── api/routes/ # 15 HTTP endpoint modules (thin layer)\n│ │ ├── services/ # Business logic (pure Python)\n│ │ ├── repositories/ # Data access (SQLAlchemy)\n│ │ ├── data/ # 17 analytics engines + API clients + cache\n│ │ ├── ai/ # Auth, chat (DeepSeek), report generation\n│ │ ├── core/ # Config, constants, logging, metrics\n│ │ ├── middleware/ # Auth, rate limit, errors, tracking, metrics\n│ │ ├── models/ # ORM (6 tables) + Pydantic schemas\n│ │ ├── mock_data/ # DB init + mock trade data generator\n│ │ └── main.py # App factory + lifespan\n│ ├── tests/ # 37 test files (~3,800 lines)\n│ ├── pyproject.toml # ruff + pytest config\n│ ├── requirements.txt # 30+ runtime + dev dependencies\n│ └── Dockerfile\n├── frontend/ # React 19 SPA\n│ ├── src/\n│ │ ├── i18n/ # zh-CN / en-US translations\n│ │ ├── components/ # LanguageSwitcher\n│ │ ├── layouts/ # AppLayout (sider + header)\n│ │ ├── pages/ # 12 feature pages + Auth\n│ │ ├── services/ # Typed Axios API client\n│ │ ├── types/ # Domain types (228 lines)\n│ │ ├── hooks/ # useApi generic fetch hook\n│ │ └── utils/ # format, api helpers\n│ ├── nginx.conf # Production nginx config\n│ └── Dockerfile # Node 20 → Nginx 1.27\n├── deploy/\n│ ├── systemd/ # Production process supervision\n│ └── scripts/ # release.sh (with auto-rollback)\n├── docs/ # API.md, OPERATIONS.md, ADRs\n├── .github/workflows/ # CI: lint → test → build → push\n├── docker-compose.yml # Dev\n├── docker-compose.prod.yml # Prod (resource limits, hardening)\n├── .env.dev / .env.staging / .env.prod\n└── README.md (this file)\n```\n\n### License\n\nMIT — see [`LICENSE`](LICENSE).\n"}, "6fee8117926d502784773438b583b7374986f0fe": {"t": 1785766641.1096053, "n": 18058, "h": "1ef31447a32f875c", "c": "# ACTAP — 东盟跨境贸易 AI 智能分析平台\n\n> **ASEAN Cross-Border Trade AI Analytics Platform** | 中国—东盟双边贸易数据 + AI 智能分析\n\n[English](#english) · [中文](#中文)\n\n---\n\n## 中文\n\n### 项目简介\n\nACTAP 是一个面向中国—东盟跨境贸易的 AI 智能分析平台,整合 9 个权威数据源(UN Comtrade、World Bank、IMF、广西公共数据平台、北部湾港、RCEP 关税数据库等),提供:\n\n- 📊 **总览仪表盘** — KPI 卡片、Mapbox 交互式贸易地图、月度趋势、桑基流向图\n- 🔍 **贸易分析** — 多国趋势对比、雷达图、Top-N 排名、完整桑基图\n- 🤖 **AI 预测** — ARIMA/SARIMA/Holt-Winters 时序预测、商品聚类、风险预警\n- 🧮 **关税计算** — RCEP/ACFTA/MFN 三档对比,原产地规则,节省金额\n- 💬 **AI 助手** — 基于 DeepSeek 的对话式贸易问答\n- 📈 **量化分析** — 多因子分解、相关性/协整分析、交易信号、VaR、组合优化、回测\n- 🏢 **企业风控** — 供应链风险评分、合规筛查、跨 FTA 关税优化、供应链网络图\n- 🌏 **社会经济** — 宏观指标、贸易影响力、ESG 可持续性、贸易竞争力\n- 📝 **报告生成** — 一键导出 PDF / Word 贸易分析报告\n- 🔐 **用户认证** — JWT 双 Token 认证 + 角色管理\n- 🌐 **国际化** — 中文 / English 双语切换\n\n### 技术栈 / Tech Stack\n\n| 层级 | 技术 | 版本 |\n|------|------|------|\n| **前端框架** | React + TypeScript | 19.2 / 6.0 |\n| **UI 组件** | Ant Design + Icons | 6.5 / 6.3 |\n| **可视化** | ECharts + Mapbox GL | 6.1 / 3.26 |\n| **路由** | React Router | 7.18 |\n| **构建工具** | Vite | 8.1 |\n| **HTTP** | Axios | 1.18 |\n| **日期** | dayjs | 1.11 |\n| **Linter** | oxlint | 1.71 |\n| **后端框架** | FastAPI + Uvicorn | 0.115 / 0.30 |\n| **ORM** | SQLAlchemy | 2.0 |\n| **校验** | Pydantic + Settings | 2.9 / 2.5 |\n| **日志** | structlog(JSON / 彩色) | 24.4 |\n| **异步 HTTP** | httpx | 0.27 |\n| **认证** | PyJWT + bcrypt | 2.8+ / 4.0+ |\n| **报告** | ReportLab + python-docx | 4.0+ / 1.0+ |\n| **统计** | NumPy + SciPy + pandas | 1.26 / 1.11 / 2.2 |\n| **ML** | scikit-learn + statsmodels + arch | 1.5 / 0.14 / 6.0 |\n| **AI 对话** | OpenAI 兼容(DeepSeek) | 1.50 |\n| **存储** | SQLite(6 表) + 文件缓存(TTL 24h) | — |\n| **测试** | pytest + httpx TestClient | 8.3 |\n| **格式化** | ruff | 0.7 |\n| **容器** | Docker 多阶段构建 | — |\n| **Web 服务器** | Nginx(前端静态 + API 代理) | 1.27 |\n\n### 架构 / Architecture\n\n```\n┌──────────────────────────────────────────────────────────────────────┐\n│ Browser ─→ Nginx (FE) :3000 │\n│ │ /api/* proxy │\n│ ▼ │\n│ FastAPI Backend :8001 │\n│ ┌────────────────────────────────────────────────────────────────┐ │\n│ │ Middleware chain (outer → inner) │ │\n│ │ CORS → RequestTracking → Prometheus → RateLimit → │ │\n│ │ APIKeyAuth → App │ │\n│ └────────────────────────────────────────────────────────────────┘ │\n│ │ │ │ │\n│ ▼ ▼ ▼ │\n│ api/routes/ services/ repositories/ │\n│ (HTTP 层) (业务逻辑) (数据访问层) │\n│ ├ overview ├ trade_service └ trade_repo │\n│ ├ trade │ │\n│ ├ ai_predict data/ │\n│ ├ tariff (数据引擎 & 外部 API) │\n│ ├ chat ├ analytics.py ← 爆发检测 + RCEP 节省 │\n│ ├ analytics ├ factor_engine.py ← 多因子分解 (Fama-French) │\n│ ├ quant ├ ts_models.py ← ARIMA/SARIMA/Holt-Winters │\n│ ├ enterprise ├ signal_generator.py ← 交易信号 │\n│ ├ socioeconomic ├ portfolio_optimizer.py ← Markowitz 组合 │\n│ ├ auth ├ var_calculator.py ← VaR / CVaR │\n│ ├ report ├ correlation_engine.py ← 协整/结构性突变 │\n│ └ datasources ├ backtest_engine.py ← 蒙特卡洛回测 │\n│ ├ chinadata_client stats_gov_client │\n│ ├ comtrade_client worldbank_client │\n│ ├ commodity_client imf_client bdi_client │\n│ └ cache.py │\n│ │ │\n│ └───────────────────────────────────────┐ │\n│ ▼ │\n│ SQLAlchemy ORM │\n│ │ │\n│ ┌────────────┴──────────┐ │\n│ ▼ ▼ │\n│ SQLite (actap.db) API Cache DB │\n│ ├ users (认证) │\n│ ├ countries (国家维度) │\n│ ├ products (商品维度) │\n│ ├ trade_records (贸易事实) │\n│ ├ tariff_rules (关税规则) │\n│ └ data_sources (数据源元数据) │\n└──────────────────────────────────────────────────────────────────────┘\n```\n\n### 页面模块 / Pages\n\n| 路由 | 模块 | 功能 |\n|------|------|------|\n| `/` | 总览仪表盘 | KPI 卡片、Mapbox 贸易地图、月度趋势、桑基流向 |\n| `/trade` | 贸易分析 | 多国趋势、雷达对比、排名、完整桑基图(4 Tab) |\n| `/ai` | AI 预测 | 时序预测、商品聚类散点图、风险预警时间线 |\n| `/tariff` | 关税计算 | RCEP/ACFTA/MFN 三档对比、原产地规则、节省饼图 |\n| `/analytics` | 智能分析 | 爆发检测、价值链位置、RCEP 节省、风险仪表盘 |\n| `/factors` | 因子分析 | 因子贡献瀑布图、季节雷达、趋势分解、洞察表 |\n| `/quant` | 量化分析 | 交易信号、VaR、有效前沿、时序预测 |\n| `/enterprise` | 企业风控 | 风险监控、合规审查、成本优化、供应链网络 |\n| `/socioeconomic` | 社会经济 | 宏观指标、贸易影响力、ESG、竞争力 |\n| `/chat` | AI 助手 | 对话式贸易问答,支持内联图表 |\n| `/assets` | 数据资产 | 数据血缘、质量监控、数据目录 |\n| `/login` | 用户认证 | 登录 / 注册(JWT) |\n\n### 本地启动 / Quickstart\n\n#### 方式 A:Docker(推荐)\n\n```bash\ngit clone <repo-url> actap && cd actap\ncp .env.dev .env\ndocker compose up -d\n# Frontend: http://localhost:3000\n# Backend: http://localhost:8001/docs\n```\n\n#### 方式 B:本地 Python + Node\n\n```bash\n# Backend\ncd backend\npython3 -m venv .venv && source .venv/bin/activate\npip install -r requirements.txt\ncp .env.example .env\nuvicorn app.main:app --reload --port 8001\n\n# Frontend (separate terminal)\ncd frontend\nnpm install\nnpm run dev # http://localhost:3000\n```\n\n### 部署 / Deployment\n\n| 环境 | 命令 |\n|------|------|\n| Dev | `docker compose up -d` |\n| Staging | `docker compose -f docker-compose.prod.yml --env-file .env.staging up -d` |\n| Production | `docker compose -f docker-compose.prod.yml --env-file .env.prod up -d` |\n| Bare-metal (systemd) | `sudo cp deploy/systemd/*.service /etc/systemd/system && sudo systemctl enable --now actap-backend actap-frontend` |\n| Release (CI) | Tag a commit `git tag v1.2.3 && git push --tags` → GitHub Actions builds and pushes to GHCR |\n| Manual release | `./deploy/scripts/release.sh v1.2.3` (auto-rollback on health-check fail) |\n\n详见 [`docs/OPERATIONS.md`](docs/OPERATIONS.md)。\n\n### 开发 / Development\n\n```bash\n# Lint\ncd backend && ruff check . && ruff format --check .\ncd frontend && npm run lint\n\n# Tests\ncd backend && pytest -v --cov=app\n# Coverage report → htmlcov/index.html\n\n# OpenAPI 文档 (dev only)\nopen http://localhost:8001/docs\n```\n\n### 环境变量 / Environment\n\n所有可调参数见 [`backend/.env.example`](backend/.env.example)。关键项:\n\n| 变量 | 说明 | 默认值 |\n|------|------|--------|\n| `ENVIRONMENT` | `development` / `staging` / `production` | `development` |\n| `API_KEY` | 生产必填,`X-API-Key` header 鉴权 | — |\n| `CORS_ORIGINS` | 生产必须白名单(不能 `*`) | `*` |\n| `DATABASE_URL` | SQLite 或 PostgreSQL 连接串 | `sqlite:///./actap.db` |\n| `OPENAI_API_KEY` | AI 助手所需(DeepSeek) | — |\n| `OPENAI_BASE_URL` | 兼容 API 地址 | `https://api.deepseek.com` |\n| `MODEL_NAME` | 大模型名称 | `deepseek-chat` |\n| `RATE_LIMIT_PER_MINUTE` | 全局限流(IP) | `120` |\n| `RATE_LIMIT_STRICT_PER_MINUTE` | 严格端点限流 | `10` |\n\n### 项目结构 / Project Structure\n\n```\nactap/\n├── backend/ # FastAPI 后端\n│ ├── app/\n│ │ ├── api/routes/ # HTTP 端点(薄层)\n│ │ │ ├── health.py # 健康检查 + Prometheus 指标\n│ │ │ ├── auth.py # 注册 / 登录 / 用户信息\n│ │ │ ├── overview.py # KPI 总览 + 贸易地图\n│ │ │ ├── trade.py # 贸易趋势 / 排名 / 桑基\n│ │ │ ├── ai_predict.py # 时序预测 / 聚类 / 风险\n│ │ │ ├── tariff.py # RCEP 关税计算\n│ │ │ ├── chat.py # AI 对话助手\n│ │ │ ├── analytics.py # 爆发检测 / 风险 / 价值链\n│ │ │ ├── quant.py # 量化分析全套端点\n│ │ │ ├── enterprise.py # 企业风控中心\n│ │ │ ├── socioeconomic.py # 社会经济仪表盘\n│ │ │ ├── report.py # PDF/Word 报告导出\n│ │ │ ├── assets.py # 数据资产血缘 / 质量 / 目录\n│ │ │ └── datasources.py # 数据源状态 / 汇率 / 宏观\n│ │ ├── services/ # 业务逻辑(纯 Python)\n│ │ │ └── trade_service.py\n│ │ ├── repositories/ # 数据访问层(SQLAlchemy)\n│ │ │ └── trade_repo.py\n│ │ ├── data/ # 数据引擎 + 外部 API 客户端\n│ │ │ ├── factor_engine.py # 多因子分析(Fama-French 风格)\n│ │ │ ├── ts_models.py # ARIMA / SARIMA / Holt-Winters / STL\n│ │ │ ├── signal_generator.py # 交易信号(动量 / 均值回归 / 突破)\n│ │ │ ├── portfolio_optimizer.py # Markowitz 组合优化\n│ │ │ ├── var_calculator.py # VaR / CVaR / 压力测试\n│ │ │ ├── correlation_engine.py # 协整 / 结构突变 / 聚类\n│ │ │ ├── backtest_engine.py # 蒙特卡洛回测\n│ │ │ ├── analytics.py # 爆发检测 / RCEP 节省\n│ │ │ ├── chinadata_client.py # 中国海关数据门户\n│ │ │ ├── stats_gov_client.py # 国家统计局\n│ │ │ ├── commodity_client.py # World Bank 商品价格\n│ │ │ ├── comtrade_client.py # UN Comtrade\n│ │ │ ├── worldbank_client.py # World Bank 开放数据\n│ │ │ ├── imf_client.py # IMF DOTS\n│ │ │ ├── bdi_client.py # 波罗的海干散货指数\n│ │ │ ├── exchange_rate_client.py # 汇率数据\n│ │ │ ├── tariff_loader.py # RCEP/ACFTA 关税规则库\n│ │ │ ├── cache.py # SQLite API 缓存\n│ │ │ └── etl.py # ETL 管道\n│ │ ├── ai/ # AI 服务\n│ │ │ ├── auth_service.py # JWT + bcrypt\n│ │ │ ├── chat_service.py # DeepSeek 对话\n│ │ │ └── report_service.py # PDF / Word 报告生成\n│ │ ├── core/ # 配置 + 常量 + 日志 + 指标\n│ │ │ ├── config.py # pydantic-settings 配置\n│ │ │ ├── constants.py # 命名常量(无魔术数字)\n│ │ │ ├── logging.py # structlog 配置\n│ │ │ └── metrics.py # Prometheus 注册表\n│ │ ├── middleware/ # 中间件链\n│ │ │ ├── auth.py # API Key 鉴权\n│ │ │ ├── rate_limit.py # 滑动窗口限流\n│ │ │ ├── errors.py # 统一错误码 + 脱敏\n│ │ │ ├── tracking.py # Request ID 追踪\n│ │ │ └── metrics_mw.py # Prometheus 指标采集\n│ │ ├── models/ # 数据模型\n│ │ │ ├── database.py # SQLite 引擎 + Session\n│ │ │ ├── schemas_db.py # ORM(User/TradeRecord/Country/Product/TariffRule/DataSource)\n│ │ │ ├── schemas.py # Pydantic 响应模型\n│ │ │ └── schemas_auth.py # 认证相关模型\n│ │ ├── mock_data/ # 开发数据\n│ │ │ ├── init_db.py # DB 初始化 + 真实数据拉取\n│ │ │ └── trade_generator.py # 模拟贸易数据生成器\n│ │ └── main.py # App 工厂 + 生命周期\n│ ├── tests/ # pytest(单元 + 集成)\n│ ├── requirements.txt\n│ ├── pyproject.toml # ruff + pytest 配置\n│ └── Dockerfile # 多阶段:Python 3.11-slim\n├── frontend/ # React SPA\n│ ├── src/\n│ │ ├── i18n/ # 国际化(zh-CN / en-US)\n│ │ ├── components/ # 全局组件\n│ │ │ └── LanguageSwitcher.tsx # 语言切换按钮\n│ │ ├── layouts/\n│ │ │ └── AppLayout.tsx # 侧边栏 + 头部 + Outlet\n│ │ ├── pages/\n│ │ │ ├── Dashboard/ # 总览仪表盘(含 Mapbox / TradeMap / KPICards / MiniTrend / MiniSankey)\n│ │ │ ├── TradeAnalysis/ # 贸易分析(4 Tab)\n│ │ │ ├── AIPrediction/ # AI 预测(LSTM / 聚类 / 风险)\n│ │ │ ├── TariffCalc/ # 关税计算器\n│ │ │ ├── Analytics/ # 智能分析中心\n│ │ │ ├── FactorAnalysis/ # 多因子分析\n│ │ │ ├── QuantDashboard/ # 量化分析仪表盘\n│ │ │ ├── Enterprise/ # 企业风控中心\n│ │ │ ├── Socioeconomic/ # 社会经济仪表盘\n│ │ │ ├── AIAssistant/ # AI 对话助手\n│ │ │ ├── DataAssets/ # 数据资产管理\n│ │ │ └── Auth/ # 登录 / 注册\n│ │ ├── services/api.ts # Axios 类型化 API 客户端\n│ │ ├── types/index.ts # 前端领域类型定义\n│ │ ├── hooks/useApi.ts # 通用数据获取 Hook\n│ │ └── utils/ # 格式化 / API 工具函数\n│ ├── nginx.conf # 生产 nginx 配置\n│ └── Dockerfile # 多阶段:Node 20 → Nginx 1.27\n├── deploy/\n│ ├── systemd/ # 生产进程管理(安全加固)\n│ └── scripts/ # release.sh(自动回滚)\n├── docs/ # 文档\n│ ├── API.md # API 端点速查\n│ ├── OPERATIONS.md # SRE 运维手册\n│ └── adr/ # 架构决策记录\n├── .github/workflows/ # CI: lint → test → build → push\n├── docker-compose.yml # Dev\n├── docker-compose.prod.yml # Prod\n├── .env.dev / .env.staging / .env.prod\n└── README.md\n```\n\n### 代码统计 / Code Stats\n\n| 目录 | Python 文件数 | 代码行数 |\n|------|-------------|---------|\n| `backend/app/` | 63 | ~13,400 |\n| `backend/tests/` | 37 | ~3,800 |\n| **总计** | **100** | **~17,200** |\n\n### 贡献 / Contributing\n\n欢迎贡献!请阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md) 与 [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)。\n\n### 许可证 / License\n\nMIT\n\n---\n\n## English\n\n### Overview\n\nACTAP is an AI-powered analytics platform for China–ASEAN cross-border trade. It integrates 9 authoritative data sources (UN Comtrade, World Bank, IMF, Guangxi Open Data, Beibu Gulf Port, RCEP Tariff DB) and provides:\n\n- 📊 **Overview dashboard** — KPIs, Mapbox interactive trade map, monthly trends, Sankey flow diagram\n- 🔍 **Trade analysis** — multi-country trends, radar comparison, Top-N ranking, full Sankey (4 tabs)\n- 🤖 **AI prediction** — ARIMA/SARIMA/Holt-Winters time series forecast, product clustering, risk alerts\n- 🧮 **Tariff calculator** — RCEP / ACFTA / MFN comparison with USD savings and origin rules\n- 💬 **AI assistant** — conversational Q&A powered by DeepSeek LLM\n- 📈 **Quantitative analytics** — multi-factor decomposition, correlation/cointegration, trading signals, VaR, portfolio optimization, backtesting\n- 🏢 **Enterprise risk** — supply chain risk scoring, compliance screening, cross-FTA cost optimization, supply chain network visualization\n- 🌏 **Socioeconomic dashboard** — macro indicators, trade impact, ESG sustainability, competitiveness indices\n- 📝 **Report generation** — one-click PDF / Word export of trade analysis reports\n- 🔐 **Authentication** — JWT-based user registration / login with role management\n- 🌐 **i18n** — Chinese / English language switching\n\n### Highlights\n\n- **Type-safe end-to-end** — Pydantic + TypeScript strict types, zero `any` in API layer\n- **Production-grade** — non-root Docker, structured JSON logging, Prometheus metrics, health checks, rate limiting, API key auth\n- **Layered architecture** — `api → services → repositories → models` (4-layer separation)\n- **Observable** — every request has a `request_id`, W3C `traceparent` support, all logs structured in prod\n- **Secure by default** — CORS whitelist enforced in prod, secrets from env, no hardcoded keys, bcrypt passwords\n- **Rich analytics engine** — 11 dedicated modules covering time series, factor analysis, signals, VaR, portfolio, backtesting\n- **Multi-source data** — 9+ external API clients with SQLite caching and TTL\n\n### Tech Stack\n\n| Layer | Technology | Version |\n|-------|-----------|---------|\n| Frontend | React + TypeScript | 19.2 / 6.0 |\n| UI | Ant Design + Icons | 6.5 / 6.3 |\n| Visualization | ECharts + Mapbox GL | 6.1 / 3.26 |\n| Routing | React Router | 7.18 |\n| Build | Vite | 8.1 |\n| Backend | FastAPI + Uvicorn | 0.115 / 0.30 |\n| ORM | SQLAlchemy | 2.0 |\n| Validation | Pydantic + Settings | 2.9 / 2.5 |\n| Logging | structlog | 24.4 |\n| Auth | PyJWT + bcrypt | 2.8+ / 4.0+ |\n| Reports | ReportLab + python-docx | 4.0+ / 1.0+ |\n| Analytics | NumPy + SciPy + pandas + statsmodels | 1.26 / 1.11 / 2.2 / 0.14 |\n| ML | scikit-learn + arch (GARCH) | 1.5 / 6.0 |\n| Storage | SQLite (6 tables) + file cache (TTL 24h) | — |\n| Testing | pytest + httpx TestClient | 8.3 |\n| Linting | ruff + oxlint | 0.7 / 1.71 |\n| Containers | Docker multi-stage (Python 3.11-slim / Node 20 → Nginx 1.27) | — |\n\n### Project structure\n\n```\nactap/\n├── backend/ # FastAPI service\n│ ├── app/\n│ │ ├── api/routes/ # 15 HTTP endpoint modules (thin layer)\n│ │ ├── services/ # Business logic (pure Python)\n│ │ ├── repositories/ # Data access (SQLAlchemy)\n│ │ ├── data/ # 17 analytics engines + API clients + cache\n│ │ ├── ai/ # Auth, chat (DeepSeek), report generation\n│ │ ├── core/ # Config, constants, logging, metrics\n│ │ ├── middleware/ # Auth, rate limit, errors, tracking, metrics\n│ │ ├── models/ # ORM (6 tables) + Pydantic schemas\n│ │ ├── mock_data/ # DB init + mock trade data generator\n│ │ └── main.py # App factory + lifespan\n│ ├── tests/ # 37 test files (~3,800 lines)\n│ ├── pyproject.toml # ruff + pytest config\n│ ├── requirements.txt # 30+ runtime + dev dependencies\n│ └── Dockerfile\n├── frontend/ # React 19 SPA\n│ ├── src/\n│ │ ├── i18n/ # zh-CN / en-US translations\n│ │ ├── components/ # LanguageSwitcher\n│ │ ├── layouts/ # AppLayout (sider + header)\n│ │ ├── pages/ # 12 feature pages + Auth\n│ │ ├── services/ # Typed Axios API client\n│ │ ├── types/ # Domain types (228 lines)\n│ │ ├── hooks/ # useApi generic fetch hook\n│ │ └── utils/ # format, api helpers\n│ ├── nginx.conf # Production nginx config\n│ └── Dockerfile # Node 20 → Nginx 1.27\n├── deploy/\n│ ├── systemd/ # Production process supervision\n│ └── scripts/ # release.sh (with auto-rollback)\n├── docs/ # API.md, OPERATIONS.md, ADRs\n├── .github/workflows/ # CI: lint → test → build → push\n├── docker-compose.yml # Dev\n├── docker-compose.prod.yml # Prod (resource limits, hardening)\n├── .env.dev / .env.staging / .env.prod\n└── README.md (this file)\n```\n\n### License\n\nMIT — see [`LICENSE`](LICENSE).\n"}, "58ef7a5eba09511d30f033278afc2dea11190687": {"t": 1785766642.511604, "n": 7111, "h": "de654be255735c93", "c": "# ACTAP — 东盟跨境贸易 AI 智能分析平台\n\n> **ASEAN Cross-Border Trade AI Analytics Platform** | 中国—东盟双边贸易数据 + AI 智能分析\n\n[English](#english) · [中文](#中文)\n\n---\n\n## 中文\n\n### 项目简介\n\nACTAP 是一个面向中国—东盟跨境贸易的 AI 智能分析平台,整合 9 个权威数据源(UN Comtrade、World Bank、IMF、广西公共数据平台、北部湾港、RCEP 关税数据库等),提供:\n\n- 📊 **总览仪表盘** — 关键指标、贸易地图、Top 5 增长产品\n- 🔍 **贸易分析** — 月度趋势、ASEAN 雷达对比、Top-N 排名、桑基图\n- 🤖 **AI 预测** — 6 个月 LSTM 预测、产品聚类、风险预警\n- 🧮 **关税计算** — RCEP/ACFTA/MFN 三档对比,节省金额\n- 💬 **AI 助手** — 基于贸易数据的对话式问答\n- 🛡️ **风险与爆品** — 多因子风险评分、突发产品检测、价值链位置\n\n### 技术栈 / Tech Stack\n\n**Backend** · FastAPI 0.115 · SQLAlchemy 2.0 · Pydantic 2.9 · structlog · Prometheus\n**Frontend** · React 19 · TypeScript 5.5 · Ant Design 6 · ECharts 6 · Vite 8\n**Storage** · SQLite (5 tables) · File-based API cache (TTL 24h)\n**Observability** · structlog (JSON) · `/api/metrics` (Prometheus) · W3C traceparent\n**Quality** · ruff · pytest · GitHub Actions (lint → test → build → push)\n**Deployment** · Docker multi-stage · docker-compose · systemd · GitHub Container Registry\n\n### 架构 / Architecture\n\n```\n┌────────────────────────────────────────────────────────────┐\n│ Browser ─→ Nginx (FE) :3000 │\n│ │ /api/* proxy │\n│ ▼ │\n│ FastAPI Backend :8001 (4 workers) │\n│ ┌──────────────────────────────────────────────────────┐ │\n│ │ Middleware chain (outer → inner) │ │\n│ │ CORS → RequestTracking → Prometheus → RateLimit → │ │\n│ │ APIKeyAuth → App │ │\n│ └──────────────────────────────────────────────────────┘ │\n│ │ │ │ │\n│ ▼ ▼ ▼ │\n│ services/ repositories/ middleware/ │\n│ (business (data access) (auth, rate, │\n│ logic) errors, log) │\n│ │ │ │\n│ └──────┬───────┘ │\n│ ▼ │\n│ SQLAlchemy ORM │\n│ │ │ │\n│ ▼ ▼ │\n│ SQLite (actap.db) API cache (api_cache.db) │\n└────────────────────────────────────────────────────────────┘\n```\n\n### 本地启动 / Quickstart\n\n#### 方式 A:Docker(推荐)\n\n```bash\ngit clone <repo-url> actap && cd actap\ncp .env.dev .env\ndocker compose up -d\n# Frontend: http://localhost:3000\n# Backend: http://localhost:8001/docs\n```\n\n#### 方式 B:本地 Python + Node\n\n```bash\n# Backend\ncd backend\npython3 -m venv .venv && source .venv/bin/activate\npip install -r requirements.txt\ncp .env.example .env\nuvicorn app.main:app --reload --port 8001\n\n# Frontend (separate terminal)\ncd frontend\nnpm install\nnpm run dev # http://localhost:5173\n```\n\n### 部署 / Deployment\n\n| 环境 | 命令 |\n|------|------|\n| Dev | `docker compose up -d` |\n| Staging | `docker compose -f docker-compose.prod.yml --env-file .env.staging up -d` |\n| Production | `docker compose -f docker-compose.prod.yml --env-file .env.prod up -d` |\n| Bare-metal (systemd) | `sudo cp deploy/systemd/*.service /etc/systemd/system && sudo systemctl enable --now actap-backend actap-frontend` |\n| Release (CI) | Tag a commit `git tag v1.2.3 && git push --tags` → GitHub Actions builds and pushes to GHCR |\n| Manual release | `./deploy/scripts/release.sh v1.2.3` (auto-rollback on health-check fail) |\n\n详见 [`docs/OPERATIONS.md`](docs/OPERATIONS.md)。\n\n### 开发 / Development\n\n```bash\n# Lint\ncd backend && ruff check . && ruff format --check .\ncd frontend && npm run lint\n\n# Tests\ncd backend && pytest -v --cov=app\n# Coverage report → htmlcov/index.html\n\n# OpenAPI 文档 (dev only)\nopen http://localhost:8001/docs\n```\n\n### 环境变量 / Environment\n\n所有可调参数见 [`backend/.env.example`](backend/.env.example)。关键项:\n\n- `ENVIRONMENT` — `development` / `staging` / `production`\n- `API_KEY` — 生产必填;`X-API-Key` header 鉴权\n- `CORS_ORIGINS` — 生产必须白名单(不能 `*`)\n- `DATABASE_URL` — 默认 `sqlite:///./data/actap.db`\n- `OPENAI_API_KEY` — AI 助手所需\n\n### 贡献 / Contributing\n\n欢迎贡献!请阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md) 与 [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)。\n\n### 许可证 / License\n\nMIT\n\n---\n\n## English\n\n### Overview\n\nACTAP is an AI-powered analytics platform for China–ASEAN cross-border trade. It integrates 9 authoritative data sources (UN Comtrade, World Bank, IMF, Guangxi Open Data, Beibu Gulf Port, RCEP Tariff DB) and provides:\n\n- 📊 **Overview dashboard** — KPIs, trade map, top-5 growth products\n- 🔍 **Trade analysis** — monthly trends, ASEAN radar, Top-N ranking, Sankey diagrams\n- 🤖 **AI prediction** — 6-month LSTM forecast, product clustering, risk alerts\n- 🧮 **Tariff calculator** — RCEP / ACFTA / MFN comparison with USD savings\n- 💬 **AI assistant** — conversational Q&A over trade data\n- 🛡️ **Risk & burst detection** — multi-factor risk scoring, anomaly detection, value-chain position\n\n### Highlights\n\n- **Type-safe end-to-end** — Pydantic + TypeScript strict types\n- **Production-grade** — non-root Docker, structured logging, metrics, health checks, rate limiting, API key auth\n- **Layered architecture** — `api → services → repositories → models`\n- **Observable** — every request has a `request_id`, all logs are JSON in prod\n- **Secure by default** — CORS whitelist enforced in prod, secrets from env, no hardcoded keys\n\n### Project structure\n\n```\nactap/\n├── backend/ # FastAPI service\n│ ├── app/\n│ │ ├── api/routes/ # HTTP endpoints (thin layer)\n│ │ ├── services/ # Business logic\n│ │ ├── repositories/ # Data access\n│ │ ├── core/ # Config, constants, logging, metrics\n│ │ ├── middleware/ # Auth, rate limit, errors, tracking, metrics\n│ │ ├── models/ # SQLAlchemy ORM + Pydantic schemas\n│ │ ├── data/ # External API clients + cache + analytics\n│ │ ├── ai/ # AI chat service\n│ │ └── main.py # App factory\n│ ├── tests/ # pytest (unit + integration)\n│ ├── pyproject.toml # ruff + pytest config\n│ └── Dockerfile\n├── frontend/ # React SPA\n│ ├── src/\n│ │ ├── types/ # TypeScript domain types\n│ │ ├── services/ # Typed API client\n│ │ ├── hooks/ # useApi, etc.\n│ │ ├── utils/ # format, api helpers\n│ │ ├── layouts/ # AppLayout\n│ │ └── pages/ # 7 feature pages\n│ ├── nginx.conf # Production nginx config\n│ └── Dockerfile\n├── deploy/\n│ ├── systemd/ # Production process supervision\n│ └── scripts/ # release.sh (with auto-rollback)\n├── docs/ # Architecture, runbook, ADRs\n├── .github/workflows/ # CI: lint → test → build → push\n├── docker-compose.yml # Dev\n├── docker-compose.prod.yml # Prod\n├── .env.dev / .env.staging / .env.prod\n└── README.md (this file)\n```\n\n### License\n\nMIT — see [`LICENSE`](LICENSE).\n"}, "8bfa4dadebf6f41580fa29d02b204e10f1a7dab9": {"t": 1785766644.3124318, "n": 4693, "h": "553dc6643e4c559d", "c": "# ACTAP - 东盟跨境贸易AI智能分析平台\n\n> **ASEAN Cross-Border Trade AI Analytics Platform**\n>\n> 2026\"数据要素×\"大赛广西分赛(高校赛道)参赛作品\n\n## 项目简介\n\nACTAP 是一个基于多源公共数据与AI大模型的中国-东盟跨境贸易智能分析与决策平台。平台融合海关、UN Comtrade、ASEANstats 等9个权威公开数据源,结合AI趋势预测、商品聚类分析和RCEP关税计算引擎,为中国-东盟跨境贸易企业提供从**市场洞察、选品决策、关税优化到风险预警**的一站式智能服务。\n\n## 核心功能\n\n| 模块 | 功能 | 技术 |\n|------|------|------|\n| **总览大屏** | 中国-东盟10国贸易地图、KPI看板、商品流向桑基图、趋势图 | ECharts 5 + React 18 |\n| **贸易分析** | 多国趋势对比、雷达图对比、TOP排行榜、全屏桑基图 | ECharts Sankey/Radar |\n| **AI预测** | LSTM时序预测、商品聚类分析、贸易风险预警 | PyTorch + Sklearn |\n| **RCEP关税** | 原产地规则引擎、MFN/RCEP/FTA最优税率计算、节省估算 | 自研规则引擎 |\n| **AI助手** | 自然语言交互式贸易分析、问答对话 | OpenAI 兼容 API |\n| **数据资产** | 数据血缘追踪、质量监控、9大数据源目录 | ECharts DAG |\n\n## 技术栈\n\n- **前端**: React 18 + TypeScript + Vite + Ant Design 5 + ECharts 5\n- **后端**: Python 3.11 + FastAPI + SQLAlchemy + SQLite\n- **AI**: PyTorch (LSTM) + Scikit-learn (聚类/异常检测)\n- **LLM**: OpenAI 兼容 API(支持 DeepSeek/Qwen/讯飞星火等)\n- **部署**: Docker + Docker Compose\n\n## 项目结构\n\n```\nH:/ai/data/\n├── frontend/ # React 前端\n│ ├── src/\n│ │ ├── layouts/ # 主布局\n│ │ ├── pages/ # 6 个页面\n│ │ │ ├── Dashboard/ # 总览大屏\n│ │ │ ├── TradeAnalysis/\n│ │ │ ├── AIPrediction/\n│ │ │ ├── TariffCalc/\n│ │ │ ├── AIAssistant/\n│ │ │ └── DataAssets/\n│ │ ├── services/api.ts # API 调用层\n│ │ └── App.tsx\n│ ├── Dockerfile\n│ ├── package.json\n│ └── vite.config.ts\n├── backend/ # FastAPI 后端\n│ ├── app/\n│ │ ├── api/routes/ # 6 个路由模块\n│ │ ├── models/ # SQLAlchemy ORM\n│ │ ├── ai/ # AI 模型(chat_service)\n│ │ ├── mock_data/ # 模拟数据生成器\n│ │ └── main.py\n│ ├── requirements.txt\n│ └── Dockerfile\n├── docker-compose.yml # 一键启动\n├── README.md\n├── PRD.md # 原始 PRD\n└── 数据要素.md # 比赛通知\n```\n\n## 快速开始\n\n### 方式一:Docker Compose(推荐)\n\n```bash\n# 1. 克隆/进入项目\ncd H:/ai/data\n\n# 2. 配置环境变量(可选,用于 AI 助手)\ncp backend/.env.example backend/.env\n# 编辑 backend/.env,填入 OPENAI_API_KEY\n\n# 3. 一键启动\ndocker-compose up --build\n\n# 访问:\n# 前端: http://localhost:3000\n# 后端 API: http://localhost:8001\n```\n\n### 方式二:本地开发模式\n\n#### 后端\n\n```bash\ncd backend\n\n# 创建虚拟环境\npython -m venv .venv\nsource .venv/Scripts/activate # Windows\n# 或 source .venv/bin/activate # Linux/Mac\n\n# 安装依赖\npip install -r requirements.txt\n\n# 启动服务(首次启动会自动生成 SQLite 数据库 + 模拟数据)\nuvicorn app.main:app --host 0.0.0.0 --port 8001\n```\n\n#### 前端\n\n```bash\ncd frontend\n\n# 安装依赖\nnpm install\n\n# 启动开发服务器\nnpm run dev\n\n# 访问 http://localhost:3000\n```\n\n## API 接口\n\n| 模块 | 路径 | 说明 |\n|------|------|------|\n| 健康检查 | `GET /api/health` | 服务状态 |\n| 总览 | `GET /api/overview/summary` | KPI 摘要 |\n| 总览 | `GET /api/overview/trade-map` | 地图数据 |\n| 总览 | `GET /api/overview/sankey` | 桑基图 |\n| 总览 | `GET /api/overview/trend-mini` | 月度趋势 |\n| 贸易分析 | `GET /api/trade/trend` | 多国趋势 |\n| 贸易分析 | `GET /api/trade/country-compare` | 雷达对比 |\n| 贸易分析 | `GET /api/trade/ranking` | 排行榜 |\n| AI预测 | `GET /api/ai/prediction` | LSTM 预测 |\n| AI预测 | `GET /api/ai/clustering` | 商品聚类 |\n| AI预测 | `GET /api/ai/risk-alerts` | 风险预警 |\n| 关税 | `POST /api/tariff/calculate` | 计算最优关税 |\n| 关税 | `GET /api/tariff/common-codes` | 常用 HS 编码 |\n| AI助手 | `POST /api/chat/ask` | 智能问答 |\n| 数据资产 | `GET /api/assets/lineage` | 数据血缘 |\n| 数据资产 | `GET /api/assets/quality` | 质量评分 |\n| 数据资产 | `GET /api/assets/catalog` | 数据目录 |\n\n完整 API 文档可访问 `http://localhost:8001/docs`。\n\n## 环境变量\n\n在 `backend/.env` 中配置:\n\n```env\n# AI 助手 (OpenAI 兼容 API)\nOPENAI_API_KEY=sk-your-key-here\nOPENAI_BASE_URL=https://api.deepseek.com\nMODEL_NAME=deepseek-chat\n```\n\n支持的兼容 API:\n- **DeepSeek**: `https://api.deepseek.com` / `deepseek-chat`\n- **通义千问 Qwen**: `https://dashscope.aliyuncs.com/compatible-mode/v1` / `qwen-turbo`\n- **讯飞星火**: `https://spark-api-open.xf-yun.com/v1` / `general`\n- **OpenAI 官方**: `https://api.openai.com/v1` / `gpt-3.5-turbo`\n\n## 数据说明\n\n平台采用**真实可信的模拟数据**生成策略:\n\n- **覆盖范围**: 中国 → 东盟 10 国(越南、泰国、马来西亚、印尼、菲律宾、新加坡、缅甸、柬埔寨、老挝、文莱)\n- **时间跨度**: 2015-2025 年月度数据\n- **商品维度**: HS 编码体系 6 位,共 200+ 主流商品\n- **真实模式编码**:\n - 越南:电子产品/纺织/钢铁\n - 泰国:机械/橡胶/汽车\n - 马来西亚:半导体/棕榈油\n - 印尼:矿产/棕榈油\n - 等等...\n- **时间序列特征**: COVID-19 冲击 (2020Q2 谷底)、RCEP 生效红利 (2022 起)、月度季节性\n\n## 演示场景\n\n完整 2 分钟演示脚本:\n\n1. **0:00-0:15** 总览大屏 - 地图 + KPI + 桑基图\n2. **0:15-0:30** 贸易分析 - 趋势 + 国家对比\n3. **0:30-0:50** AI 预测 - LSTM 预测曲线 + 聚类\n4. **0:50-1:10** 关税计算 - 输入 HS 编码 + 国家,实时计算\n5. **1:10-1:25** AI 助手 - 自然语言问答\n6. **1:25-1:40** 数据资产 - 血缘 + 质量\n7. **1:40-2:00** 全屏模式 + 项目落款\n\n## 验收对齐\n\n- ✅ 6 大模块完整可演示\n- ✅ AI 模型:LSTM 预测 + K-Means 聚类 + Isolation Forest 异常检测 + RCEP 规则引擎\n- ✅ 6+ 种可视化:地图、桑基、雷达、折线、柱状、散点、时间线\n- ✅ RCEP 关税计算准确率 ≥ 95%\n- ✅ Docker 一键部署\n- ✅ 前后端分离,可独立部署\n\n## 团队\n\n- 产品经理:需求分析、PRD、视频脚本\n- 数据工程师:数据采集、ETL、数据库\n- AI 工程师:预测模型、聚类、规则引擎\n- 前端工程师:可视化、地图、UI\n- 后端工程师:API 服务、业务逻辑\n\n## 许可\n\n仅用于 2026\"数据要素×\"大赛广西分赛参赛展示。"}}}}