market-assistant/docs/DEPLOY_AND_GIT.md

102 lines
4.3 KiB
Markdown
Raw 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.

# 部署与 Git 仓库整理
## 1. 环境变量:仅一份 `.env`
| 文件 | 说明 |
|------|------|
| `market_assistant/.env` | 本地与服务器上的**唯一**配置密钥、路径、Django、LLM |
| `market_assistant/.env.example` | 模板,可提交仓库 |
已移除「仓库根目录 `.env`」与「`backend/.env`」第二加载源Django 与 `crawler_copy/jd_pc_search/AI_crawler.py` 均从 `market_assistant/.env` 读取(`AI_crawler` 在导入时先加载该文件再解析 `LOW_GI_PROJECT_ROOT`)。
部署到新机器:
1. 复制 `market_assistant/.env.example``market_assistant/.env`
2. **可选**:设置 `LOW_GI_PROJECT_ROOT` 为单独数据盘的绝对路径;不设置时默认为**本仓库根目录**,数据写在 `./data/JD/`(启动 Django 时会自动创建该目录)
3. 设置 `DJANGO_SECRET_KEY``DJANGO_DEBUG=False`、生产域名下的 `DJANGO_ALLOWED_HOSTS` / `CORS_*` / `CSRF_*`
4. 若使用 LLM填写 `OPENAI_*``LLM_*`
## 2. 功能是否只需本目录?
**是。** `market_assistant` 内含:
- Django API、流水线任务、入库与导出
- 前端 Vue 工作台
- 京东采集脚本副本 `backend/crawler_copy/jd_pc_search`(含 Node/Playwright 子进程调用)
**不要求**仓库外仍存在旧的 `crawler/jd_pc_search`
**运行时另需**(部分不在 Git 中):
- 默认可写目录为仓库根下 `data/JD/``.gitignore` 已忽略);若配置了 `LOW_GI_PROJECT_ROOT` 则数据在该路径下
- 按任务配置放置 Cookie路径须在有效数据根之下`common/jd_cookie.txt`
- 本机已装 Node、流水线所需的 Playwright 等(与现有一致)
## 3. 远程 Git 只维护 `market_assistant`(推荐两种做法)
> **先备份仓库**,再在副本上操作;改写历史后需与团队约定 **`git push --force`**。
### 方案 A保留历史把子目录提成仓库根git filter-repo
适用于「当前仓库在上一级 `Low GI/`,只想提交 `market_assistant/` 里的内容且路径变为仓库根」。
1. 安装 [git-filter-repo](https://github.com/newren/git-filter-repo)(需单独安装,不是 Git 自带)。
2. 在**原仓库克隆的副本**中执行:
```bash
cd /path/to/Low-GI-repo-copy
git filter-repo --path market_assistant/ --path-rename market_assistant/:
```
3. 此时仓库根目录即为原 `market_assistant` 下的 `backend/``frontend/``docs/` 等。
4.`origin` 改为新远程或清空原远程后强制推送:
```bash
git remote add origin <你的新仓库 URL>
git branch -M main
git push -u origin main --force
```
5. 旧远程若废弃,在 Git 平台将旧库归档或删除,避免误用。
### 方案 B新仓库不保留旧历史
适用于「从零起一个干净远程,只装当前代码」。
```bash
cd market_assistant
git init
git add .
git commit -m "chore: initial standalone market_assistant"
git remote add origin <新仓库 URL>
git branch -M main
git push -u origin main
```
之后本地开发只在 `market_assistant` 目录内 `git pull` / `git push`
### 拆库后目录约定
- 克隆下来的**仓库根** = 现在的 `market_assistant`(含 `backend/``frontend/``docs/`)。
- 文档中的路径仍写 `market_assistant/.env` 时,在「已拆库」情形下指**仓库根目录下的** `.env`(即 `.env` 在 clone 下来的根上)。
### 已从跟踪中移除误提交文件(旧 monorepo 根目录上执行)
若仍暂时保留大仓库,可在**原根目录**执行:
```bash
git rm -r --cached venv/ 2>/dev/null || true
git rm -r --cached data/ 2>/dev/null || true
git rm -r --cached .idea/ 2>/dev/null || true
git rm --cached .env 2>/dev/null || true
```
## 4. 生产构建(简要)
- **后端**`pip install -r backend/requirements.txt``migrate`,用 gunicorn/uwsgi 等托管 WSGI前面 Nginx 反代。
- **前端**`cd frontend && npm ci && npm run build`,将 `dist/` 由 Nginx 托管静态资源,并把 `/api` 反代到 Django同时把生产环境的 CORS/CSRF 与 `vite.config.js` 开发代理区分配置(生产一般同源或显式写 API 域名)。
## 5. 与 `LOW_GI_PROJECT_ROOT` 的关系
流水线 CSV、跑批目录默认写在 `LOW_GI_PROJECT_ROOT/data/JD/...`。该路径**可以**在服务器上位于 Web 代码库之外(例如单独数据盘),只要在 `.env` 中指向正确绝对路径即可。