Commit 05a30ae00100b94fe1d756357294dc0c356239b8
1 parent
81205fc7
docs
Showing
2 changed files
with
82 additions
and
19 deletions
Show diff stats
README.md
| @@ -111,17 +111,26 @@ cp .env.example .env | @@ -111,17 +111,26 @@ cp .env.example .env | ||
| 111 | 111 | ||
| 112 | 若需本地商品图(如侧边栏「Similar」用本地图),可准备 `data/images/` 下的图片资源;图像风格分析不依赖该目录。 | 112 | 若需本地商品图(如侧边栏「Similar」用本地图),可准备 `data/images/` 下的图片资源;图像风格分析不依赖该目录。 |
| 113 | 113 | ||
| 114 | -### 启动 | 114 | +### 启动与日志 |
| 115 | 115 | ||
| 116 | ```bash | 116 | ```bash |
| 117 | -# 推荐 | ||
| 118 | -./scripts/start.sh | 117 | +# 推荐:使用服务脚本(含 Conda 环境激活与日志管理) |
| 118 | +./scripts/service.sh start # 后台启动 | ||
| 119 | +./scripts/service.sh status # 查看状态 | ||
| 120 | +./scripts/service.sh stop # 停止 | ||
| 119 | 121 | ||
| 120 | -# 或 | 122 | +# 本地调试:前台运行(Ctrl+C 停止) |
| 123 | +./scripts/service.sh run | ||
| 124 | + | ||
| 125 | +# 也可直接运行 Streamlit(需自行激活虚拟环境) | ||
| 121 | streamlit run app.py | 126 | streamlit run app.py |
| 122 | ``` | 127 | ``` |
| 123 | 128 | ||
| 124 | -默认访问 `http://localhost:8501`。商品搜索依赖外部 Search API,请在 `.env` 中配置 `SEARCH_API_BASE_URL` 与 `SEARCH_API_TENANT_ID`。 | 129 | +- 端口优先级:`STREAMLIT_PORT` 环境变量 > `app.config.settings.app_port` > 默认 `6008`。 |
| 130 | +- Host 默认为 `0.0.0.0`,可通过 `STREAMLIT_HOST` 覆盖。 | ||
| 131 | +- 日志目录:`logs/streamlit.log`(标准输出)、`logs/streamlit_error.log`(错误输出,由 `scripts/service.sh` 统一管理)。 | ||
| 132 | + | ||
| 133 | +默认访问 `http://<HOST>:<PORT>`(本地通常是 `http://localhost:6008`)。商品搜索依赖外部 Search API,请在 `.env` 中配置 `SEARCH_API_BASE_URL` 与 `SEARCH_API_TENANT_ID`。 | ||
| 125 | 134 | ||
| 126 | ### 部署 | 135 | ### 部署 |
| 127 | 136 | ||
| @@ -140,7 +149,13 @@ CentOS 8 等部署说明见 **[docs/DEPLOY_CENTOS8.md](docs/DEPLOY_CENTOS8.md)** | @@ -140,7 +149,13 @@ CentOS 8 等部署说明见 **[docs/DEPLOY_CENTOS8.md](docs/DEPLOY_CENTOS8.md)** | ||
| 140 | | `SEARCH_API_TENANT_ID` | 租户 ID | 见 config.py | | 149 | | `SEARCH_API_TENANT_ID` | 租户 ID | 见 config.py | |
| 141 | | `SEARCH_PRODUCTS_LIMIT` | 单次搜索返回条数上限 | 20 | | 150 | | `SEARCH_PRODUCTS_LIMIT` | 单次搜索返回条数上限 | 20 | |
| 142 | 151 | ||
| 143 | -更多见 `app/config.py`。 | 152 | +更多配置项见 `app/config.py` 中的 `Settings`,包括: |
| 153 | + | ||
| 154 | +- OpenAI 相关:`openai_model`、`openai_vision_model`、`openai_use_reasoning`、`openai_reasoning_effort`、`openai_api_base_url` 等。 | ||
| 155 | +- 应用运行:`app_host`、`app_port`、`debug`、`log_level`。 | ||
| 156 | +- 数据路径:`raw_data_path`、`processed_data_path`、`image_data_path` 等。 | ||
| 157 | + | ||
| 158 | +配置加载优先级(高 → 低):**代码初始化参数 > 项目根目录下 `.env` > 系统环境变量 > 默认值**,其中 `.env` 会覆盖同名系统环境变量(见 `Settings.settings_customise_sources`)。 | ||
| 144 | 159 | ||
| 145 | ## 项目结构(概览) | 160 | ## 项目结构(概览) |
| 146 | 161 | ||
| @@ -157,9 +172,9 @@ shop_agent/ | @@ -157,9 +172,9 @@ shop_agent/ | ||
| 157 | │ └── ... | 172 | │ └── ... |
| 158 | ├── app.py # Streamlit UI、流式渲染、引用解析与商品卡片 | 173 | ├── app.py # Streamlit UI、流式渲染、引用解析与商品卡片 |
| 159 | ├── docs/ | 174 | ├── docs/ |
| 160 | -│ └── 技术实现报告.md # 详细设计与实现说明 | 175 | +│ └── 技术实现报告.md # 详细设计、Prompt 与架构说明 |
| 161 | ├── scripts/ | 176 | ├── scripts/ |
| 162 | -│ └── start.sh | 177 | +│ └── service.sh # 统一的启停脚本(start/stop/status/run) |
| 163 | ├── .env.example | 178 | ├── .env.example |
| 164 | ├── requirements.txt | 179 | ├── requirements.txt |
| 165 | └── README.md | 180 | └── README.md |
docs/DEPLOY_CENTOS8.md
| @@ -91,28 +91,53 @@ python scripts/download_dataset.py | @@ -91,28 +91,53 @@ python scripts/download_dataset.py | ||
| 91 | 91 | ||
| 92 | ## | 92 | ## |
| 93 | 93 | ||
| 94 | -### 4.1 霂湔 | 94 | -### 4.1 霂湔 |
| 95 | +### 4.1 霂湔 | ||
| 95 | 96 | ||
| 96 | | | | | 97 | | | | |
| 97 | |------|------| | 98 | |------|------| |
| 98 | -| `start.sh` | 銝餃嚗 Streamlit | | ||
| 99 | -| `stop.sh` | 迫 Streamlit | | ||
| 100 | -| `check_services.sh` | 摨瑟 | | 99 | +| `scripts/service.sh` | 蝏蝞∠嚗 / 迫 / / 蔭 Conda 憓瘣颱敹 | |
| 100 | + | ||
| 101 | +> 霂湔 `start.sh` / `stop.sh` / `check_services.sh` 撌脫蛹 `scripts/service.sh`嚗遣霈桀憓敺蝙霂亥 | ||
| 101 | 102 | ||
| 102 | ### 4.2 摨 | 103 | ### 4.2 摨 |
| 103 | 104 | ||
| 104 | ```bash | 105 | ```bash |
| 105 | -# 撘 1嚗蝙 start.sh嚗 | ||
| 106 | -./scripts/start.sh | 106 | +cd /path/to/shop_agent |
| 107 | 107 | ||
| 108 | -# 撘 2嚗餈 | ||
| 109 | -source venv/bin/activate | ||
| 110 | -streamlit run app.py --server.port=8501 --server.address=0.0.0.0 | 108 | +# 嚗 |
| 109 | +./scripts/service.sh start | ||
| 110 | + | ||
| 111 | +# | ||
| 112 | +./scripts/service.sh status | ||
| 113 | + | ||
| 114 | +# 迫 | ||
| 115 | +./scripts/service.sh stop | ||
| 116 | + | ||
| 117 | +# 靚餈trl+C 迫嚗 | ||
| 118 | +./scripts/service.sh run | ||
| 119 | +``` | ||
| 120 | + | ||
| 121 | +`service.sh` 隡 | ||
| 122 | + | ||
| 123 | +- 瞈瘣餌漲摰 Conda 憓恕嚗CONDA_BASE=$HOME/miniconda3`嚗CONDA_ENV=aishopping-py312`嚗憓 | ||
| 124 | +- 蝏 `streamlit run app.py`嚗 | ||
| 125 | +- 撠銝秤颲 `logs/streamlit.log` `logs/streamlit_error.log` | ||
| 126 | + | ||
| 127 | +蝡臬銝 Host 漣銝綽 | ||
| 128 | + | ||
| 129 | +- 蝡臬嚗STREAMLIT_PORT` 憓 > `.env`/憓葉 `APP_PORT`嚗Settings.app_port`嚗> 暺恕 `6008`嚗 | ||
| 130 | +- Host嚗STREAMLIT_HOST` 憓 > 暺恕 `0.0.0.0` | ||
| 131 | + | ||
| 132 | +憒餈 Streamlit嚗嚗 | ||
| 133 | + | ||
| 134 | +```bash | ||
| 135 | +source venv/bin/activate # 瘣餃笆摨 Conda 憓 | ||
| 136 | +streamlit run app.py --server.port=6008 --server.address=0.0.0.0 | ||
| 111 | ``` | 137 | ``` |
| 112 | 138 | ||
| 113 | ### 4.3 霈輸 | 139 | ### 4.3 霈輸 |
| 114 | 140 | ||
| 115 | -- **Streamlit 摨**嚗ttp://IP:8501 | 141 | +- **Streamlit 摨**嚗http://IP:<PORT>`嚗恕 `http://IP:6008` 霈輸嚗 Nginx 誨 80/443 蝡臬嚗 |
| 116 | 142 | ||
| 117 | ## 鈭漣蝵脣遣霈 | 143 | ## 鈭漣蝵脣遣霈 |
| 118 | 144 | ||
| @@ -176,4 +201,27 @@ A: 蝖桐歇摰 `openssl-devel`libffi-devel`嚗雿輻 Miniconda | @@ -176,4 +201,27 @@ A: 蝖桐歇摰 `openssl-devel`libffi-devel`嚗雿輻 Miniconda | ||
| 176 | A: 璉 `.env` 銝 `SEARCH_API_BASE_URL` `SEARCH_API_TENANT_ID` 蔭嚗&靽霈輸揣 | 201 | A: 璉 `.env` 銝 `SEARCH_API_BASE_URL` `SEARCH_API_TENANT_ID` 蔭嚗&靽霈輸揣 |
| 177 | 202 | ||
| 178 | ### Q: 摨瑟嚗 | 203 | ### Q: 摨瑟嚗 |
| 179 | -A: 銵 `./scripts/check_services.sh` 辣 | 204 | +A: 挪 `/admin/health`/indexer/health` 蝑璉揣摨瑞嚗頨怠 `scripts/service.sh status` 敹辣嚗logs/streamlit.log`logs/streamlit_error.log`嚗憸 |
| 205 | + | ||
| 206 | +--- | ||
| 207 | + | ||
| 208 | +## 銝憓宏憓遣霈格郊撉 | ||
| 209 | + | ||
| 210 | +1. **郊隞** | ||
| 211 | + - 銝隞 | ||
| 212 | + - ﹝蝚 2 蝡遣 Python/Conda 憓僎摰 `requirements.txt` | ||
| 213 | +2. **餈宏蔭** | ||
| 214 | + - 隞憭 `.env`嚗釣鈭 `.env.example` 憛怠 | ||
| 215 | + - 撖孵僎靽格嚗 | ||
| 216 | + - 憭扳芋嚗OPENAI_API_KEY`OPENAI_API_BASE_URL`嚗芋妍蝑 | ||
| 217 | + - 揣嚗SEARCH_API_BASE_URL`SEARCH_API_TENANT_ID`嚗 | ||
| 218 | + - 摨嚗APP_PORT`敶楝敺 | ||
| 219 | +3. **擐活嚗靚** | ||
| 220 | + - 憓葉銵 `./scripts/service.sh run`嚗 | ||
| 221 | + - 蝖株恕憿菟霈輸揣銝笆霂甇虜嚗 | ||
| 222 | + - 憒撘虜嚗 `logs/streamlit_error.log` 銝 `logs/streamlit.log` | ||
| 223 | +4. **甇餈** | ||
| 224 | + - 雿輻 `./scripts/service.sh start` 嚗僎蝏蝡 `systemd` / Nginx 蝷箔蝥喳蝏餈輕雿頂嚗 | ||
| 225 | + - 憓誨蔭嚗笆憭挪 | ||
| 226 | + | ||
| 227 | +誑銝郊撉歹隞亙銝銋蝔喳宏 ShopAgent嚗靽撘垢銝敹蔭 |