chore: 迁移项目路径 C:\NeoZQYY → C:\Project\NeoZQYY
开发环境从旧虚拟机 (DESKTOP-KGB0K5G) 迁移到新机器 (DESKTOP-D676QDA), 项目目录从 C:\NeoZQYY 变更为 C:\Project\NeoZQYY, 批量替换 126 个文件中的绝对路径引用。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
"""批量替换运行时代码中残留的旧 schema 引用。"""
|
||||
import os
|
||||
|
||||
ROOT = r"C:\NeoZQYY"
|
||||
ROOT = r"C:\Project\NeoZQYY"
|
||||
|
||||
import glob
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
分析手动获取的结账数据,检查时间分布
|
||||
|
||||
用法:
|
||||
cd C:/NeoZQYY
|
||||
cd C:/Project/NeoZQYY
|
||||
python scripts/ops/_analyze_settlement_data.py
|
||||
"""
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""快速检查 ETL 日志尾部 — 一次性脚本"""
|
||||
import os, sys
|
||||
|
||||
LOG = r"C:\NeoZQYY\export\ETL-Connectors\feiqiu\LOGS\2681a85399e64c76a040163f956e1907.log"
|
||||
LOG = r"C:\Project\NeoZQYY\export\ETL-Connectors\feiqiu\LOGS\2681a85399e64c76a040163f956e1907.log"
|
||||
|
||||
f = open(LOG, "rb")
|
||||
f.seek(0, 2)
|
||||
|
||||
@@ -18,7 +18,7 @@ SYSTEM_LOG_ROOT = os.environ.get("SYSTEM_LOG_ROOT")
|
||||
if not SYSTEM_LOG_ROOT:
|
||||
raise RuntimeError("SYSTEM_LOG_ROOT 环境变量未设置")
|
||||
|
||||
LOG_FILE = Path(r"C:\NeoZQYY\export\ETL-Connectors\feiqiu\LOGS\2681a85399e64c76a040163f956e1907.log")
|
||||
LOG_FILE = Path(r"C:\Project\NeoZQYY\export\ETL-Connectors\feiqiu\LOGS\2681a85399e64c76a040163f956e1907.log")
|
||||
if not LOG_FILE.exists():
|
||||
raise FileNotFoundError(f"日志文件不存在: {LOG_FILE}")
|
||||
|
||||
|
||||
@@ -7,6 +7,6 @@ sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[2] / "apps" / "b
|
||||
from app.main import app
|
||||
|
||||
spec = app.openapi()
|
||||
out = pathlib.Path(r"C:\NeoZQYY\docs\contracts\openapi\backend-api.json")
|
||||
out = pathlib.Path(r"C:\Project\NeoZQYY\docs\contracts\openapi\backend-api.json")
|
||||
out.write_text(json.dumps(spec, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
print(f"Done: {len(spec['paths'])} paths, {len(spec['components']['schemas'])} schemas")
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
需要手动调用 API 获取最新的结账数据,确认是否为 API 数据源问题。
|
||||
|
||||
用法:
|
||||
cd C:/NeoZQYY
|
||||
cd C:/Project/NeoZQYY
|
||||
python scripts/ops/_fetch_settlement_data_manual.py
|
||||
"""
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
SPI 问题最终诊断报告 - 基于数据库实际查询
|
||||
|
||||
用法:
|
||||
cd C:/NeoZQYY
|
||||
cd C:/Project/NeoZQYY
|
||||
python scripts/ops/_final_spi_diagnosis_report.py
|
||||
"""
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
with open(path, 'rb') as f:
|
||||
raw = f.read()
|
||||
crlf = b'\r\n' in raw
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
with open(path, 'rb') as f:
|
||||
raw = f.read()
|
||||
crlf = b'\r\n' in raw
|
||||
@@ -33,11 +33,11 @@ for i, line in enumerate(lines):
|
||||
break
|
||||
|
||||
if not found:
|
||||
open('c:/NeoZQYY/scripts/ops/_fix_status.txt','w').write('target not found')
|
||||
open('c:/Project/NeoZQYY/scripts/ops/_fix_status.txt','w').write('target not found')
|
||||
else:
|
||||
doc = '\n'.join(lines)
|
||||
if crlf:
|
||||
doc = doc.replace('\n', '\r\n')
|
||||
with open(path, 'wb') as f:
|
||||
f.write(doc.encode('utf-8'))
|
||||
open('c:/NeoZQYY/scripts/ops/_fix_status.txt','w').write('done')
|
||||
open('c:/Project/NeoZQYY/scripts/ops/_fix_status.txt','w').write('done')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
with open(path, 'rb') as f:
|
||||
raw = f.read()
|
||||
crlf = b'\r\n' in raw
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
with open(path, 'rb') as f:
|
||||
raw = f.read()
|
||||
content = raw.decode('utf-8')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
生成飞球 API 结账数据问题综合报告
|
||||
|
||||
用法:
|
||||
cd C:/NeoZQYY
|
||||
cd C:/Project/NeoZQYY
|
||||
python scripts/ops/_generate_settlement_issue_report.py
|
||||
"""
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
with open(path, 'rb') as f:
|
||||
raw = f.read()
|
||||
doc = raw.decode('utf-8').replace('\r\n', '\n')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
检查结账数据 JSON 文件的结构,了解实际字段名称
|
||||
|
||||
用法:
|
||||
cd C:/NeoZQYY
|
||||
cd C:/Project/NeoZQYY
|
||||
python scripts/ops/_inspect_settlement_json.py
|
||||
"""
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
调查 ETL 在 2026-02-14 后停止处理的原因
|
||||
|
||||
用法:
|
||||
cd C:/NeoZQYY
|
||||
cd C:/Project/NeoZQYY
|
||||
python scripts/ops/_investigate_etl_gap.py
|
||||
"""
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
p1 = 'c:/NeoZQYY/scripts/ops/txt/progress_p1.txt'
|
||||
p2 = 'c:/NeoZQYY/scripts/ops/txt/progress_p2.txt'
|
||||
p3 = 'c:/NeoZQYY/scripts/ops/txt/progress_p3.txt'
|
||||
out = 'c:/NeoZQYY/docs/h5_ui/compare/PROGRESS.md'
|
||||
p1 = 'c:/Project/NeoZQYY/scripts/ops/txt/progress_p1.txt'
|
||||
p2 = 'c:/Project/NeoZQYY/scripts/ops/txt/progress_p2.txt'
|
||||
p3 = 'c:/Project/NeoZQYY/scripts/ops/txt/progress_p3.txt'
|
||||
out = 'c:/Project/NeoZQYY/docs/h5_ui/compare/PROGRESS.md'
|
||||
parts = []
|
||||
for p in [p1, p2, p3]:
|
||||
with open(p, 'rb') as f:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
with open(path, 'rb') as f:
|
||||
content = f.read().decode('utf-8')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import sys
|
||||
sys.stdout.reconfigure(encoding='utf-8')
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
with open(path, 'rb') as f:
|
||||
raw = f.read()
|
||||
content = raw.decode('utf-8')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import sys
|
||||
sys.stdout.reconfigure(encoding='utf-8')
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
with open(path, 'rb') as f:
|
||||
content = f.read().decode('utf-8')
|
||||
lines = content.split('\n')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import sys
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
with open(path, 'rb') as f:
|
||||
c = f.read().decode('utf-8')
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md'
|
||||
with open(path, 'rb') as f:
|
||||
raw = f.read()
|
||||
crlf = b'\r\n' in raw
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import sys
|
||||
files = [
|
||||
('c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md',
|
||||
('c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md',
|
||||
'*v4.1\uff082026-03-11\uff09',
|
||||
'*v4.2\uff082026-03-11\uff09\uff1a\u95f4\u8ddd\u6d4b\u91cf\u4e13\u7528\u5b50\u4ee3\u7406\uff08SPACING-AGENT.md\uff09\uff1b\u901a\u7528\u5de5\u5177 measure_gaps.py\uff1b\u00a70.8 \u65b0\u589e\u95f4\u8ddd\u4ee3\u7406\u8c03\u7528\u63d0\u793a'
|
||||
),
|
||||
('c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md',
|
||||
('c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md',
|
||||
'*v1.9\uff082026-03-11\uff09',
|
||||
'*v2.0\uff082026-03-11\uff09\uff1a\u65b0\u589e\u95f4\u8ddd\u6d4b\u91cf\u4ee3\u7406\uff08\u6309\u9700\u8c03\u7528\uff09\uff1b\u4fee\u590d\u6587\u4ef6\u5934\u90e8\u63cf\u8ff0\u4e3a 4 \u79cd\u4e13\u804c\u5b50\u4ee3\u7406\u6a21\u5f0f'
|
||||
),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
with open(path, 'rb') as f:
|
||||
raw = f.read()
|
||||
crlf = b'\r\n' in raw
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
with open(path, 'rb') as f:
|
||||
content = f.read().decode('utf-8')
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
with open(path, 'rb') as f:
|
||||
content = f.read().decode('utf-8')
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
with open(path, 'rb') as f:
|
||||
content = f.read().decode('utf-8')
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
璇诲彇鏁版嵁鐩綍: C:\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis
|
||||
璇诲彇鏁版嵁鐩綍: C:\Project\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis
|
||||
|
||||
============================================================
|
||||
鎶ュ憡鐢熸垚瀹屾垚
|
||||
============================================================
|
||||
杈撳嚭璺緞: C:\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\dataflow_2026-02-26_102219.md
|
||||
杈撳嚭璺緞: C:\Project\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\dataflow_2026-02-26_102219.md
|
||||
鏂囦欢澶у皬: 516.3 KB
|
||||
============================================================
|
||||
EXIT_CODE=0
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
============================================================
|
||||
鏁版嵁娴佺粨鏋勫垎鏋愬畬鎴?
|
||||
============================================================
|
||||
杈撳嚭鐩綍: C:\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis
|
||||
杈撳嚭鐩綍: C:\Project\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis
|
||||
鎶ュ憡鏂囦欢鍚? dataflow_2026-02-26_102114.md
|
||||
鍒嗘瀽琛ㄦ暟: 21 (21 鎴愬姛, 0 澶辫触)
|
||||
鎬昏褰曟暟: 3289
|
||||
钀界洏璺緞:
|
||||
json_trees: C:\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\json_trees
|
||||
db_schemas: C:\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\db_schemas
|
||||
field_mappings: C:\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\field_mappings
|
||||
bd_descriptions: C:\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\bd_descriptions
|
||||
manifest: C:\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis
|
||||
json_trees: C:\Project\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\json_trees
|
||||
db_schemas: C:\Project\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\db_schemas
|
||||
field_mappings: C:\Project\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\field_mappings
|
||||
bd_descriptions: C:\Project\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis\bd_descriptions
|
||||
manifest: C:\Project\NeoZQYY\export\SYSTEM\REPORTS\dataflow_analysis
|
||||
============================================================
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
path = 'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path_hist = 'c:/NeoZQYY/docs/h5_ui/compare/HISTORY.md'
|
||||
path = 'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md'
|
||||
path_hist = 'c:/Project/NeoZQYY/docs/h5_ui/compare/HISTORY.md'
|
||||
|
||||
with open(path, 'rb') as f:
|
||||
lines = f.read().decode('utf-8').split('\n')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
更新飞球结账数据分析报告 - 澄清业务合理性
|
||||
|
||||
用法:
|
||||
cd C:/NeoZQYY
|
||||
cd C:/Project/NeoZQYY
|
||||
python scripts/ops/_update_settlement_report_final.py
|
||||
"""
|
||||
|
||||
|
||||
@@ -3,12 +3,12 @@ checks = []
|
||||
|
||||
# 1. Check all 5 doc files exist
|
||||
for f in [
|
||||
'c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md',
|
||||
'c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md',
|
||||
'c:/NeoZQYY/docs/h5_ui/compare/SPACING-AGENT.md',
|
||||
'c:/NeoZQYY/docs/h5_ui/compare/PROGRESS.md',
|
||||
'c:/NeoZQYY/docs/h5_ui/compare/CHANGELOG.md',
|
||||
'c:/NeoZQYY/docs/h5_ui/compare/HISTORY.md',
|
||||
'c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md',
|
||||
'c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md',
|
||||
'c:/Project/NeoZQYY/docs/h5_ui/compare/SPACING-AGENT.md',
|
||||
'c:/Project/NeoZQYY/docs/h5_ui/compare/PROGRESS.md',
|
||||
'c:/Project/NeoZQYY/docs/h5_ui/compare/CHANGELOG.md',
|
||||
'c:/Project/NeoZQYY/docs/h5_ui/compare/HISTORY.md',
|
||||
]:
|
||||
exists = os.path.exists(f)
|
||||
size = os.path.getsize(f) if exists else 0
|
||||
@@ -17,14 +17,14 @@ for f in [
|
||||
|
||||
# 2. Check key content in each exec doc
|
||||
for path, needles, label in [
|
||||
('c:/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md', [
|
||||
('c:/Project/NeoZQYY/docs/h5_ui/compare/AGENT-PLAYBOOK.md', [
|
||||
'PROGRESS.md', 'mcp_recompile', '5.2.5', 'diff \u56fe\u7279\u5f81',
|
||||
'\u9547\u70b9\u5bf9\u9f50\u6cd5', 'crop', '645', '1128'
|
||||
], 'PLAYBOOK'),
|
||||
('c:/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md', [
|
||||
('c:/Project/NeoZQYY/docs/h5_ui/compare/ORCHESTRATION-PLAN.md', [
|
||||
'PROGRESS.md', '\u6bcf\u6b21\u4f1a\u8bdd\u5f00\u59cb', 'mcp_recompile', '5.2.5'
|
||||
], 'ORCH'),
|
||||
('c:/NeoZQYY/docs/h5_ui/compare/PROGRESS.md', [
|
||||
('c:/Project/NeoZQYY/docs/h5_ui/compare/PROGRESS.md', [
|
||||
'\u4e3b\u4ee3\u7406\u4f1a\u8bdd\u6062\u590d\u6d41\u7a0b', 'MCP \u5c31\u7eea\u68c0\u67e5', '\U0001f501 \u91cd\u5199\u4e2d'
|
||||
], 'PROGRESS'),
|
||||
]:
|
||||
|
||||
@@ -3,7 +3,7 @@ r"""
|
||||
黑盒集成测试报告 -- 从 API 输入侧与 DB 输出侧(ODS/DWD/DWS)进行全链路对比。
|
||||
|
||||
用法:
|
||||
cd C:\NeoZQYY
|
||||
cd C:\Project\NeoZQYY
|
||||
uv run python scripts/ops/blackbox_test_report.py
|
||||
|
||||
输出: ETL_REPORT_ROOT / blackbox_report_<timestamp>.md
|
||||
|
||||
@@ -5,7 +5,7 @@ import os
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(r"C:\NeoZQYY")
|
||||
ROOT = Path(r"C:\Project\NeoZQYY")
|
||||
ETL_AUDIT = ROOT / "apps" / "etl" / "pipelines" / "feiqiu" / "docs" / "audit" / "changes"
|
||||
ROOT_AUDIT = ROOT / "docs" / "audit" / "changes"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
使用方式:
|
||||
cd apps/etl/connectors/feiqiu
|
||||
python C:/NeoZQYY/scripts/ops/fetch_complex_orders.py
|
||||
python C:/Project/NeoZQYY/scripts/ops/fetch_complex_orders.py
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 生成 ETL 全流程联调综合报告
|
||||
# 输出路径:{SYSTEM_LOG_ROOT}/{date}__etl_integration_report.md
|
||||
# 环境变量 SYSTEM_LOG_ROOT 缺失时报错终止。
|
||||
# 用法:cd C:\NeoZQYY && python scripts/ops/gen_integration_report.py
|
||||
# 用法:cd C:\Project\NeoZQYY && python scripts/ops/gen_integration_report.py
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
@@ -19,7 +19,7 @@ CACHE_ROOT = Path(
|
||||
r"\kiro.kiroagent\f2aaff8dac256b544f00059b8ef5d1e2"
|
||||
r"\74a08cf8613c7dec4db7b264470db812"
|
||||
)
|
||||
WORKSPACE = Path(r"C:\NeoZQYY")
|
||||
WORKSPACE = Path(r"C:\Project\NeoZQYY")
|
||||
TARGET_PREFIX = Path("docs") / "h5_ui"
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import os
|
||||
import psycopg2
|
||||
|
||||
CONN = dict(host="100.64.0.4", port=5432, user="local-Python", password="Neo-local-1991125")
|
||||
BASE = r"C:\NeoZQYY"
|
||||
BASE = r"C:\Project\NeoZQYY"
|
||||
|
||||
# 实际密码替换占位符 '***'
|
||||
APP_READER_PWD = "AppR3ad_2026!"
|
||||
|
||||
@@ -6,7 +6,7 @@ $ErrorActionPreference = "Stop"
|
||||
|
||||
try {
|
||||
# CHANGE 2026-03-07 | 定位项目根目录:从 bat 启动目录推算,不穿透 junction
|
||||
# 背景:C:\NeoZQYY 是 junction → D:\NeoZQYY\...\repo,
|
||||
# 背景:C:\Project\NeoZQYY 是 junction → D:\NeoZQYY\...\repo,
|
||||
# $MyInvocation.MyCommand.Path 和 Split-Path 都会穿透 junction 解析到 D 盘,
|
||||
# 导致后端 CWD、.venv python、.env 全部指向 D 盘副本。
|
||||
# 解决:优先用环境变量 NEOZQYY_ROOT;其次用 bat 传入的 %~dp0(不穿透 junction);
|
||||
|
||||
@@ -13,7 +13,7 @@ def run(cmd: str, retries: int = 3, delay: float = 2.0) -> bool:
|
||||
print(f" [{attempt}/{retries}] {cmd}")
|
||||
result = subprocess.run(
|
||||
cmd, shell=True, capture_output=True, text=True,
|
||||
cwd=r"C:\NeoZQYY", encoding="utf-8", errors="replace",
|
||||
cwd=r"C:\Project\NeoZQYY", encoding="utf-8", errors="replace",
|
||||
)
|
||||
if result.returncode == 0:
|
||||
if result.stdout.strip():
|
||||
@@ -49,7 +49,7 @@ def main():
|
||||
# 获取 dev 的 HEAD commit
|
||||
result = subprocess.run(
|
||||
"git rev-parse dev", shell=True, capture_output=True, text=True,
|
||||
cwd=r"C:\NeoZQYY", encoding="utf-8",
|
||||
cwd=r"C:\Project\NeoZQYY", encoding="utf-8",
|
||||
)
|
||||
if result.returncode != 0:
|
||||
print("无法获取 dev 的 HEAD,退出")
|
||||
@@ -71,7 +71,7 @@ def main():
|
||||
# 恢复 stash(如果有)
|
||||
stash_result = subprocess.run(
|
||||
"git stash list", shell=True, capture_output=True, text=True,
|
||||
cwd=r"C:\NeoZQYY", encoding="utf-8",
|
||||
cwd=r"C:\Project\NeoZQYY", encoding="utf-8",
|
||||
)
|
||||
if stash_result.stdout.strip():
|
||||
print("恢复 stash…")
|
||||
|
||||
Reference in New Issue
Block a user