Pine
|
5752b3816d
|
refactor(park): 园区数据层迁唯一总库(async SQLAlchemy) — 去 raw sqlite3/park.db
- tenants.py 改为 async SQLAlchemy(ParkTenant/Company/KbDoc/Screen,共享 _ASYNC_ENGINE),
不再开独立 park.db、不再 init_db;建表/种子走 alembic+seed.py。
- 同步只读 accessor(list_tenants_sync/list_companies_sync/get_tenant_data_sync/get_agent_sync)
供 sim_engine 同步 tick/tools 用。
- sim_engine.get_engine 改读 get_tenant_data_sync;refresh_engine(tenant_id, data)。
- routers 全部 tenants 调用改 await,_resolve_tenant 改 async;app.py 移除 init_db;
tools._query_companies 用 list_companies_sync。修复 ensure_default_tenant(T001)、Row→dict。
- 验证(migrate+seed+TestClient):tenants/companies/screens/screen/data/agent/kb/snapshot/display 全 200。
|
2026-08-24 20:01:03 +08:00 |
|
Pine
|
81f4dfd0ad
|
feat(park): 园区多租户 — SQLite(tenants表+companies+kb) + 每租户引擎 + 认证 + 作用域隔离
- tenants.py:park_tenants/park_companies/park_kb_docs 三表(serverdata/park/park.db),
每园区独立 name/intro(两段式)/auth(账密 salted hash)/data(大屏锚点)/agent/kb;
ensure_default_tenant 自愈建默认园区+灌 39 家企业。
- sim_engine 重构为 SimEngine(data)——每租户独立实例,get_engine(tid)/refresh_engine(tid)。
- auth.py:/park/auth/login(账密→长效 tenant JWT)、/park/auth/me、require_tenant(401)。
- mqtt:register/publish_command/publish_tick 按 tenant_id 作用域(拓扑为 command/tid/clientId)。
- routers:/park/tenants CRUD + 全部数据/指令端点租户作用域(authorization token 或 ?tenant_id)。
- app.py lifespan init_db + 逐租户 tick/publish;tools._query_companies 读租户库。
- .gitignore 增 serverdata/park/。TestClient:建租户/登录/快照隔离/企业CRUD/指令鉴权(无token401) 全过。
|
2026-08-24 18:06:51 +08:00 |
|
Pine
|
064b06ecf0
|
feat(park): 全量迁入园区重模块 llm/rag/asr/s2s/vision + 重依赖
迁入 app/park:llm(对话)、rag(双路向量知识库)、tools/ai_tools(智能体工具)、
asr(语音识别)、s2s_bridge(实时语音桥)、vision_yolo/vision_llm(人脸/多模态)、
knowledge/*.md、vendor/s2s-cloud(s2s 云化栈);routers 补 /api/ai|kb|asr|vision|
s2s|tools 端点。智能体提示词/企业名录改读 park_config 主数据源。pyproject 加重依赖
(dashscope/numpy/openai/torch/transformers/ultralytics/websockets/soundfile/scipy/
nltk/jinja2)。TestClient 冒烟:ai/chat(无 Key 走本地规则)、kb、s2s、tools、display 均 200。
|
2026-08-24 17:28:53 +08:00 |
|