feat: virtual company module, team projects, PWA dishes app, and startup scripts overhaul

- Add company module (3-tier org, CEO planning, parallel departments)
- Add company orchestrator, knowledge extractor, presets, scheduler
- Add company API endpoints, models, and frontend views
- Add 今天吃啥 PWA app (69 dishes, real images, offline support)
- Add team_projects output directory structure
- Add unified manage.ps1 for service lifecycle
- Add Windows startup guide v1.0
- Add TTS troubleshooting doc
- Update frontend (AgentChat UX overhaul, new views)
- Update backend (voice engine fix, multi-tenant, RBAC)
- Remove deprecated startup scripts and old docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 22:37:56 +08:00
parent 3483c6b3be
commit f2e65a8fbb
259 changed files with 39239 additions and 3148 deletions

View File

@@ -11,7 +11,7 @@ import logging
from app.core.database import get_db
from app.api.auth import get_current_user
from app.api.users import _require_admin
from app.api.deps import require_admin
from app.models.user import User
from app.models.workspace import Workspace, WorkspaceMembership
from app.services.workspace_service import check_workspace_access, get_user_workspaces
@@ -435,7 +435,7 @@ def admin_list_workspaces(
search: Optional[str] = Query(None, description="搜索工作区名称"),
status: Optional[str] = Query(None, description="过滤状态: active/disabled/deleted"),
db: Session = Depends(get_db),
_admin: User = Depends(_require_admin),
_admin: User = Depends(require_admin()),
):
"""平台管理员查看所有工作区(分页)。"""
q = db.query(Workspace)
@@ -482,7 +482,7 @@ def admin_list_workspaces(
def admin_get_workspace(
workspace_id: str,
db: Session = Depends(get_db),
_admin: User = Depends(_require_admin),
_admin: User = Depends(require_admin()),
):
"""平台管理员查看任意工作区详情。"""
ws = db.query(Workspace).filter(Workspace.id == workspace_id).first()
@@ -516,7 +516,7 @@ def admin_update_workspace(
workspace_id: str,
data: WorkspaceUpdate,
db: Session = Depends(get_db),
_admin: User = Depends(_require_admin),
_admin: User = Depends(require_admin()),
):
"""平台管理员编辑任意工作区。"""
ws = db.query(Workspace).filter(Workspace.id == workspace_id).first()
@@ -541,7 +541,7 @@ def admin_update_workspace(
def admin_delete_workspace(
workspace_id: str,
db: Session = Depends(get_db),
_admin: User = Depends(_require_admin),
_admin: User = Depends(require_admin()),
):
"""平台管理员强制删除工作区(软删除)。"""
ws = db.query(Workspace).filter(Workspace.id == workspace_id).first()