docs: add new workstation development handoff guide
This commit is contained in:
parent
f0150f1c49
commit
a56328750e
@ -156,6 +156,8 @@ docker compose -f docker-compose.local.yml exec -u www-data app php artisan opti
|
|||||||
|
|
||||||
## 相关文档
|
## 相关文档
|
||||||
|
|
||||||
|
- 新电脑接续指南:[docs/新电脑开发接续指南.md](docs/新电脑开发接续指南.md)
|
||||||
|
- 文档索引:[docs/README.md](docs/README.md)
|
||||||
- 团队规则:`AGENTS.md`
|
- 团队规则:`AGENTS.md`
|
||||||
- 开发和正式发布:`docs/开发与部署SOP.md`
|
- 开发和正式发布:`docs/开发与部署SOP.md`
|
||||||
- 上游业务接入:`docs/ecommerce-finance-development.md`
|
- 上游业务接入:`docs/ecommerce-finance-development.md`
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
Codex 的接入验收不能只回答“成功”或“失败”,必须逐个来源报告:来源标识、数据库和 Schema、验证对象、读取字段、返回行数、耗时、数据状态及失败阶段。连接资料由系统自动处理,不属于新人操作项。
|
Codex 的接入验收不能只回答“成功”或“失败”,必须逐个来源报告:来源标识、数据库和 Schema、验证对象、读取字段、返回行数、耗时、数据状态及失败阶段。连接资料由系统自动处理,不属于新人操作项。
|
||||||
|
|
||||||
完整步骤和排错说明见 [LOCAL_DEPLOY.md](LOCAL_DEPLOY.md)。
|
完整步骤和排错说明见 [LOCAL_DEPLOY.md](LOCAL_DEPLOY.md)。需要在另一台电脑继续开发时,按 [新电脑开发接续指南](docs/新电脑开发接续指南.md) 操作;所有 Markdown 文档的入口见 [文档索引](docs/README.md)。
|
||||||
|
|
||||||
## 数据库边界
|
## 数据库边界
|
||||||
|
|
||||||
@ -30,6 +30,8 @@ Codex 的接入验收不能只回答“成功”或“失败”,必须逐个
|
|||||||
|
|
||||||
## 开发和发布
|
## 开发和发布
|
||||||
|
|
||||||
|
- 新电脑接续指南:[docs/新电脑开发接续指南.md](docs/新电脑开发接续指南.md)
|
||||||
|
- 文档索引:[docs/README.md](docs/README.md)
|
||||||
- 团队协作与安全规则:[AGENTS.md](AGENTS.md)
|
- 团队协作与安全规则:[AGENTS.md](AGENTS.md)
|
||||||
- 本地测试环境:[LOCAL_DEPLOY.md](LOCAL_DEPLOY.md)
|
- 本地测试环境:[LOCAL_DEPLOY.md](LOCAL_DEPLOY.md)
|
||||||
- 开发和正式部署:[docs/开发与部署SOP.md](docs/开发与部署SOP.md)
|
- 开发和正式部署:[docs/开发与部署SOP.md](docs/开发与部署SOP.md)
|
||||||
|
|||||||
48
docs/README.md
Normal file
48
docs/README.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# CaiWuXiTong 文档索引
|
||||||
|
|
||||||
|
本目录按“先启动、再协作、最后按业务深入”的顺序整理。文档中的规则发生冲突时,以根目录 [AGENTS.md](../AGENTS.md) 和负责人最新明确要求为准;历史截图、聊天记录和临时排错方案不覆盖当前规则。
|
||||||
|
|
||||||
|
## 新电脑与本地开发
|
||||||
|
|
||||||
|
| 文档 | 用途 |
|
||||||
|
| --- | --- |
|
||||||
|
| [新电脑开发接续指南](新电脑开发接续指南.md) | 在另一台 Windows 电脑克隆最新代码、启动本地环境、接入团队系统数据库并创建任务分支 |
|
||||||
|
| [LOCAL_DEPLOY.md](../LOCAL_DEPLOY.md) | 本地 Docker、临时引导库、共享系统数据库和常见命令的完整说明 |
|
||||||
|
| [AGENTS.md](../AGENTS.md) | Git、协作、敏感信息、数据和部署边界 |
|
||||||
|
| [DESIGN.md](../DESIGN.md) | VIP 黑金主题、组件和页面视觉规范 |
|
||||||
|
| [SECURITY.md](../SECURITY.md) | 安全相关的最小基线 |
|
||||||
|
|
||||||
|
## 协作、构建与发布
|
||||||
|
|
||||||
|
| 文档 | 用途 |
|
||||||
|
| --- | --- |
|
||||||
|
| [开发与部署 SOP](开发与部署SOP.md) | 团队协作、Docker 构建缓存、服务器初始化、正式发布、镜像和回滚 |
|
||||||
|
| [团队协作说明](team-collaboration.md) | 任务预检、分支、WIP PR、冲突协调和交付要求 |
|
||||||
|
|
||||||
|
生产发布只使用已经合并的最新 main,并遵守 SOP 中的授权、备份和回滚要求。服务器不构建源码,私有配置和证书不进入 Git。
|
||||||
|
|
||||||
|
## 上游数据、镜像与电商财务
|
||||||
|
|
||||||
|
| 文档 | 用途 |
|
||||||
|
| --- | --- |
|
||||||
|
| [通用上游数据接入](通用上游数据接入.md) | 新来源发现、数据字典、固定只读查询、镜像登记和验收 |
|
||||||
|
| [上游业务镜像清单](上游业务镜像清单.md) | 当前来源、表/视图、镜像表和分阶段迁移状态 |
|
||||||
|
| [电商财务扩展开发说明](ecommerce-finance-development.md) | 订单、结算、成本、资金和利润分析的业务模型与扩展边界 |
|
||||||
|
| [主体维度经营报表需求说明](主体维度经营报表需求说明.md) | 主体维度经营报表的字段、口径、来源和验收契约 |
|
||||||
|
|
||||||
|
上游数据库按只读黑盒处理。正式页面优先读取共享业务镜像;尚未迁移的旧页面才使用兼容快照。不要在网页中接受任意 SQL,也不要把真实业务数据或连接凭据写进文档、测试和截图。
|
||||||
|
|
||||||
|
## 集成与模块参考
|
||||||
|
|
||||||
|
| 文档 | 用途 |
|
||||||
|
| --- | --- |
|
||||||
|
| [电子签约集成说明](esign-agreement-integration.md) | 电子签约集成的接口和配置边界 |
|
||||||
|
| [OfflinePayments README](../modules/OfflinePayments/README.md) | 离线支付模块说明 |
|
||||||
|
| [PaypalStandard README](../modules/PaypalStandard/README.md) | PayPal Standard 模块说明 |
|
||||||
|
| [测试数据说明](../test-data/README.md) | 可公开共享的脱敏测试数据约定 |
|
||||||
|
|
||||||
|
## 文档维护约定
|
||||||
|
|
||||||
|
- 新增开发流程或交接信息时,优先更新本索引和对应主题文档,不在多个文件复制同一套命令。
|
||||||
|
- 命令、路径和页面名称以当前代码为准;改动后使用 git diff --check 检查格式。
|
||||||
|
- 密码、Token、数据库连接串、APP_KEY、.env、SSH 私钥、生产日志和真实财务数据永远不进入 Git。
|
||||||
146
docs/新电脑开发接续指南.md
Normal file
146
docs/新电脑开发接续指南.md
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
# 新电脑开发接续指南
|
||||||
|
|
||||||
|
本指南用于在另一台 Windows 电脑上继续开发 CaiWuXiTong。仓库代码、开发环境和团队系统数据库配置分开管理:新电脑只需要重新克隆代码、启动本机 Docker 环境,并在页面中完成一次团队系统数据库接入。
|
||||||
|
|
||||||
|
## 先看这几条边界
|
||||||
|
|
||||||
|
- Git 认证使用项目负责人分配的 Git 账号或令牌;不要把服务器 root 密码当作 Git 密码,也不要把凭据写进仓库地址、脚本或 Markdown。
|
||||||
|
- main 是稳定主线。开发任务从最新 main 创建独立的 feature/... 或 fix/... 分支,不直接在 main 上开发。
|
||||||
|
- 不要复制其他电脑的 runtime/.env、APP_KEY、runtime/bootstrap-credentials.env、数据库卷、SSH 私钥或生产配置。每台开发机使用自己的本地配置和密钥。
|
||||||
|
- 不要对团队共享系统数据库执行 php artisan migrate,不要执行 docker compose down -v,也不要删除 Docker 数据卷。
|
||||||
|
- 新人通常只需要启动 Docker Desktop 并在网页输入负责人提供的系统数据库密码;仓库拉取、初始化、缓存、容器和排错命令交给 Codex 执行。
|
||||||
|
|
||||||
|
## 1. 准备 Windows 环境
|
||||||
|
|
||||||
|
安装并启动以下软件:
|
||||||
|
|
||||||
|
1. Git(建议启用 Git Credential Manager);
|
||||||
|
2. Docker Desktop,使用 WSL2 后端;
|
||||||
|
3. Git Bash 或 WSL,用于执行项目中的 Bash 初始化脚本。
|
||||||
|
|
||||||
|
Docker Desktop 启动后确认没有暂停或报错。磁盘空间不足会导致镜像构建失败,建议为 Docker 虚拟磁盘预留约 60GB 上限,并为 Windows 保留至少 15GB 可用空间。
|
||||||
|
|
||||||
|
## 2. 克隆并拉取最新代码
|
||||||
|
|
||||||
|
在 Git Bash 或 WSL 中执行。首次克隆时,Git 可能会提示输入项目 Git 账号或令牌;凭据只交给 Git 的凭据管理器保存,不要写入命令行历史。
|
||||||
|
|
||||||
|
~~~bash
|
||||||
|
cd /c/Users/<你的用户名>/Documents
|
||||||
|
git clone http://git.1080p.hk/WuYongJie/CaiWuXiTong.git
|
||||||
|
cd CaiWuXiTong
|
||||||
|
git fetch origin --prune
|
||||||
|
git switch main
|
||||||
|
git pull --ff-only origin main
|
||||||
|
git status --short --branch
|
||||||
|
~~~
|
||||||
|
|
||||||
|
已有本地副本时,从仓库目录执行:
|
||||||
|
|
||||||
|
~~~bash
|
||||||
|
git status --short --branch
|
||||||
|
git fetch origin --prune
|
||||||
|
git switch main
|
||||||
|
git pull --ff-only origin main
|
||||||
|
git rev-list --left-right --count HEAD...origin/main
|
||||||
|
~~~
|
||||||
|
|
||||||
|
最后一条命令显示 0 0,表示本地 main 与远程 main 已同步。如果 git status 显示无法解释的改动,先停止并保留现场,不要用 reset --hard 或 clean -fd 覆盖它。
|
||||||
|
|
||||||
|
## 3. 启动本地环境
|
||||||
|
|
||||||
|
确保 Docker Desktop 已启动,然后在仓库根目录执行:
|
||||||
|
|
||||||
|
~~~bash
|
||||||
|
bash deploy/local-init.sh
|
||||||
|
~~~
|
||||||
|
|
||||||
|
初始化脚本会自动:
|
||||||
|
|
||||||
|
- 生成被 Git 忽略的 runtime/.env 和本机随机 APP_KEY;
|
||||||
|
- 构建或复用带有当前源码指纹的开发镜像;
|
||||||
|
- 启动应用和仅用于首次登录的本机 MySQL;
|
||||||
|
- 初始化本机临时引导库并生成临时登录凭据;
|
||||||
|
- 清理缓存、修复容器内运行目录权限并执行就绪检查。
|
||||||
|
|
||||||
|
代码、依赖、Dockerfile 或前端资源发生变化时,仍然运行同一条命令,脚本会自动判断是否需要重建。只有需要明确强制重建时才使用 bash deploy/local-init.sh --build;不要让新开发者自行判断构建参数。
|
||||||
|
|
||||||
|
## 4. 首次登录并接入团队系统数据库
|
||||||
|
|
||||||
|
1. 打开 [http://127.0.0.1:18088/auth/login](http://127.0.0.1:18088/auth/login)。
|
||||||
|
2. 从本机私有文件 runtime/bootstrap-credentials.env 读取临时账号,仅用于第一次登录;不要复制、提交或发到聊天工具。
|
||||||
|
3. 进入“系统设置 → 数据库管理 → 系统数据库”。
|
||||||
|
4. 只输入负责人提供的系统数据库密码,点击“连接系统数据库”。不填写主机、端口、库名、账号、TLS、证书或任何上游数据库密码。
|
||||||
|
5. 连接成功后临时 Session 会失效,使用团队系统数据库中属于自己的正式账号重新登录。
|
||||||
|
6. 返回“数据库管理”,确认系统数据库显示为“共享 · 已连接”,并检查已登记的上游来源和业务镜像状态。
|
||||||
|
|
||||||
|
每台电脑只需完成一次上述接入。连接资料、上游账号和共享密码由系统数据库加密保存;不要从其他电脑复制 .env 或修改 DB_JIANSUN_*、DB_OPERATIONS_REPLICA_*。
|
||||||
|
|
||||||
|
## 5. 基本验收(由 Codex 执行)
|
||||||
|
|
||||||
|
~~~bash
|
||||||
|
docker compose -f docker-compose.local.yml ps
|
||||||
|
docker compose -f docker-compose.local.yml exec -T -u www-data app php artisan app:ready
|
||||||
|
docker compose -f docker-compose.local.yml exec -T -u www-data app php artisan system-database:verify --no-ansi
|
||||||
|
~~~
|
||||||
|
|
||||||
|
app:ready 通过只表示本地应用已就绪;system-database:verify 通过才表示团队系统数据库接入成功。首次接入尚未完成时,初始化脚本会保留本机引导库并提示在网页输入一次密码,不应把这种状态当成代码或数据为空。
|
||||||
|
|
||||||
|
## 6. 开始新的开发任务
|
||||||
|
|
||||||
|
从最新主线创建任务分支:
|
||||||
|
|
||||||
|
~~~bash
|
||||||
|
git switch main
|
||||||
|
git pull --ff-only origin main
|
||||||
|
git switch -c feature/<用户名>-<任务名>
|
||||||
|
git push -u origin feature/<用户名>-<任务名>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
任务开始前阅读 [团队协作说明](team-collaboration.md)。涉及共享路由、Repository、数据表、上游来源、权限或公共组件时,先按项目规则完成碰撞检查,再开始大量修改。不要复用已经存在的其他人的任务分支。
|
||||||
|
|
||||||
|
常用的本地验证命令如下,均由 Codex 在容器内以 www-data 身份执行:
|
||||||
|
|
||||||
|
~~~bash
|
||||||
|
docker compose -f docker-compose.local.yml exec -T -u www-data app php artisan optimize:clear
|
||||||
|
docker compose -f docker-compose.local.yml exec -T -u www-data app php artisan test --do-not-cache-result
|
||||||
|
~~~
|
||||||
|
|
||||||
|
完成修改后提交当前任务文件并推送分支;不要把 runtime/、.env、凭据、日志、数据库文件、构建包或私钥加入提交。
|
||||||
|
|
||||||
|
## 7. 日常启动、停止和排错
|
||||||
|
|
||||||
|
~~~bash
|
||||||
|
# 查看容器
|
||||||
|
docker compose -f docker-compose.local.yml ps
|
||||||
|
|
||||||
|
# 停止但保留本地数据
|
||||||
|
docker compose -f docker-compose.local.yml stop
|
||||||
|
|
||||||
|
# 再次启动
|
||||||
|
docker compose -f docker-compose.local.yml start
|
||||||
|
|
||||||
|
# 查看应用日志
|
||||||
|
docker compose -f docker-compose.local.yml logs --tail=100 app
|
||||||
|
~~~
|
||||||
|
|
||||||
|
常见处理方式:
|
||||||
|
|
||||||
|
- Docker 未就绪:先启动 Docker Desktop,确认 WSL2 引擎正常,再重新运行 bash deploy/local-init.sh。
|
||||||
|
- 页面返回 500:先查看应用日志并执行 optimize:clear;不要直接迁移数据库或删除卷。
|
||||||
|
- 页面没有业务数据:先确认已使用正式团队账号登录,并检查共享数据库和业务镜像状态;本机临时库有数据不代表已接入团队数据。
|
||||||
|
- 拉取后代码看起来没更新:确认当前目录、git log -1 --oneline 和 git rev-list --left-right --count HEAD...origin/main,不要在未确认改动归属前覆盖文件。
|
||||||
|
- 共享数据库暂时不可达:保留现有配置并报告失败阶段(DNS、TCP、TLS、登录、数据库、Schema 或业务查询);不要把网络故障解释成“没有数据”。
|
||||||
|
|
||||||
|
更完整的本地部署、上游接入和正式发布流程见 [LOCAL_DEPLOY.md](../LOCAL_DEPLOY.md) 与 [开发与部署 SOP](开发与部署SOP.md)。
|
||||||
|
|
||||||
|
## 8. 文档阅读顺序
|
||||||
|
|
||||||
|
建议按以下顺序阅读:
|
||||||
|
|
||||||
|
1. 本文:新电脑接续和本地启动;
|
||||||
|
2. [AGENTS.md](../AGENTS.md):团队规则和安全边界;
|
||||||
|
3. [LOCAL_DEPLOY.md](../LOCAL_DEPLOY.md):本地环境细节与排错;
|
||||||
|
4. [docs/开发与部署SOP.md](开发与部署SOP.md):协作、上游、镜像和生产发布;
|
||||||
|
5. 与当前任务对应的业务需求、上游接入或视觉文档。
|
||||||
|
|
||||||
|
完整文档清单见 [docs/README.md](README.md)。
|
||||||
Loading…
x
Reference in New Issue
Block a user