wip: 2026-08-11 工作树快照(docs/memory/h5.py/scripts 等 447 项未评审改动,安全提交到 feat 分支)
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python3
|
||||
"""打包 P2/P3 部署文件"""
|
||||
import os
|
||||
import tarfile
|
||||
|
||||
# 待上传的后端文件
|
||||
backend_files = [
|
||||
'backend/app/utils/token_counter.py',
|
||||
'backend/app/services/automation/context_compressor.py',
|
||||
'backend/app/services/automation/snapshot_service.py',
|
||||
'backend/app/services/automation/correction_service.py',
|
||||
'backend/alembic/versions/049_add_p2_p3_tables.py',
|
||||
'backend/tests/test_p2_p3.py',
|
||||
# 修改的文件
|
||||
'backend/app/models/automation.py',
|
||||
'backend/app/constants.py',
|
||||
'backend/app/config.py',
|
||||
'backend/app/schemas/automation.py',
|
||||
'backend/app/api/automation.py',
|
||||
]
|
||||
|
||||
# 创建临时打包
|
||||
with tarfile.open('backend-p2-p3-deploy.tar.gz', 'w:gz') as tar:
|
||||
for f in backend_files:
|
||||
if os.path.exists(f):
|
||||
tar.add(f, arcname=f)
|
||||
print(f'Added: {f}')
|
||||
else:
|
||||
print(f'NOT FOUND: {f}')
|
||||
|
||||
print('Done!')
|
||||
@@ -0,0 +1,108 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
AI回复来源标识功能 - 前端部署脚本
|
||||
同时部署 H5 和 Agent 前端
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import subprocess
|
||||
import base64
|
||||
|
||||
# 读取 jms_ops 模块
|
||||
sys.path.insert(0, r"C:\Users\simon\.workbuddy\skills\jumpserver-ops\scripts")
|
||||
from jms_ops import PlinkSession, get_connection_tokens
|
||||
|
||||
|
||||
def deploy_frontend(local_dir, remote_dir, name):
|
||||
"""部署单个前端"""
|
||||
print(f"\n📦 开始上传 {name} ...")
|
||||
|
||||
# 压缩本地 dist 目录
|
||||
print(f" 压缩 {name} dist 目录...")
|
||||
tar_file = f"/tmp/{name.lower()}-dist.tar.gz"
|
||||
# 切换到 dist 的父目录,然后压缩 dist 目录
|
||||
subprocess.run(f'cd "{local_dir}" && tar -czf {tar_file} .',
|
||||
shell=True, check=True)
|
||||
|
||||
# 读取 tar 文件并进行 base64 编码
|
||||
print(f" Base64 编码...")
|
||||
with open(tar_file, 'rb') as f:
|
||||
content = f.read()
|
||||
b64_content = base64.b64encode(content).decode('ascii')
|
||||
|
||||
# 获取连接令牌
|
||||
tokens = get_connection_tokens(1)
|
||||
if not tokens:
|
||||
print("❌ 获取 token 失败")
|
||||
return False
|
||||
|
||||
token_id, token_secret = tokens[0]
|
||||
|
||||
# 创建会话并上传
|
||||
session = PlinkSession(f"JMS-{token_id}", token_secret)
|
||||
if not session.connect():
|
||||
print("❌ 会话启动失败")
|
||||
return False
|
||||
|
||||
# 先清空目标目录
|
||||
print(f" 清空目标目录...")
|
||||
session.run_command(f"rm -rf {remote_dir}/dist", timeout=30)
|
||||
|
||||
# 上传 base64 内容
|
||||
print(f" 上传文件...")
|
||||
chunk_size = 3800
|
||||
for i in range(0, len(b64_content), chunk_size):
|
||||
chunk = b64_content[i:i+chunk_size]
|
||||
decode_cmd = f'echo "{chunk}" | base64 -d >> /tmp/{name.lower()}-dist-upload.tar.gz'
|
||||
session.run_command(decode_cmd, timeout=30)
|
||||
|
||||
# 解压
|
||||
print(f" 解压文件...")
|
||||
session.run_command(f"cd /tmp && tar -xzf {name.lower()}-dist-upload.tar.gz -C {remote_dir}", timeout=60)
|
||||
|
||||
# 清理临时文件
|
||||
session.run_command(f"rm -f /tmp/{name.lower()}-dist.tar.gz /tmp/{name.lower()}-dist-upload.tar.gz", timeout=30)
|
||||
|
||||
session.close()
|
||||
print(f"✅ {name} 部署完成!")
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
print("=" * 50)
|
||||
print("🚀 AI回复来源标识 - 前端部署")
|
||||
print("=" * 50)
|
||||
|
||||
# H5 部署
|
||||
h5_local = r"D:\资料\03-项目开发\wecom_it_smart_desk\frontend-h5\dist"
|
||||
h5_remote = "/opt/wecom-it-desk/frontend-h5"
|
||||
deploy_frontend(h5_local, h5_remote, "H5")
|
||||
|
||||
# Agent 部署
|
||||
agent_local = r"D:\资料\03-项目开发\wecom_it_smart_desk\frontend-agent\dist"
|
||||
agent_remote = "/opt/wecom-it-desk/frontend-agent"
|
||||
deploy_frontend(agent_local, agent_remote, "Agent")
|
||||
|
||||
# 重启 nginx
|
||||
print("\n" + "=" * 50)
|
||||
print("🔄 重启 nginx...")
|
||||
tokens = get_connection_tokens(1)
|
||||
if not tokens:
|
||||
print("❌ 获取 token 失败")
|
||||
return
|
||||
token_id, token_secret = tokens[0]
|
||||
session = PlinkSession(f"JMS-{token_id}", token_secret)
|
||||
if not session.connect():
|
||||
print("❌ 会话启动失败")
|
||||
return
|
||||
session.run_command("cd /opt/wecom-it-desk && docker compose restart nginx", timeout=60)
|
||||
session.close()
|
||||
|
||||
print("\n✅ 所有部署完成!")
|
||||
print(" - H5: https://itportal.servyou.com.cn/h5/")
|
||||
print(" - Agent: https://itportal.servyou.com.cn/itagent/")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python3
|
||||
"""重新打包前端部署文件 - 使用正确目录结构"""
|
||||
import os
|
||||
import tarfile
|
||||
|
||||
os.chdir('D:/资料/03-项目开发/wecom_it_smart_desk')
|
||||
|
||||
# 重新打包 frontend-agent
|
||||
print("Repacking frontend-agent...")
|
||||
if os.path.exists('frontend-agent/dist'):
|
||||
with tarfile.open('frontend-agent-dist-v2.tar.gz', 'w:gz') as tar:
|
||||
tar.add('frontend-agent/dist', arcname='dist')
|
||||
print('Created: frontend-agent-dist-v2.tar.gz')
|
||||
|
||||
# 重新打包 frontend-h5
|
||||
print("Repacking frontend-h5...")
|
||||
if os.path.exists('frontend-h5/dist'):
|
||||
with tarfile.open('frontend-h5-dist-v2.tar.gz', 'w:gz') as tar:
|
||||
tar.add('frontend-h5/dist', arcname='dist')
|
||||
print('Created: frontend-h5-dist-v2.tar.gz')
|
||||
|
||||
print('Done!')
|
||||
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env python3
|
||||
"""重新打包部署前端"""
|
||||
import os
|
||||
import tarfile
|
||||
|
||||
os.chdir('D:/资料/03-项目开发/wecom_it_smart_desk')
|
||||
|
||||
# 重新打包 frontend-agent
|
||||
print("Repacking frontend-agent...")
|
||||
if os.path.exists('frontend-agent/dist'):
|
||||
with tarfile.open('frontend-agent-dist-v3.tar.gz', 'w:gz') as tar:
|
||||
tar.add('frontend-agent/dist', arcname='dist')
|
||||
print('Created: frontend-agent-dist-v3.tar.gz')
|
||||
print('Done!')
|
||||
Reference in New Issue
Block a user