diff --git a/backend/pyproject.toml b/backend/pyproject.toml index a1d4e4f..02cd526 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -10,6 +10,7 @@ dependencies = [ "pydantic>=2.7.0", "sqlalchemy>=2.0.30", "psycopg[binary]>=3.2.1", + "psycopg-pool>=3.2.1", "alembic>=1.13.1", "redis>=5.0.4", "httpx>=0.27.0", diff --git a/backend/requirements.txt b/backend/requirements.txt index 900f72b..04e346a 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -4,6 +4,7 @@ python-multipart>=0.0.9 pydantic>=2.7.0 sqlalchemy>=2.0.30 psycopg[binary]>=3.2.1 +psycopg-pool>=3.2.1 alembic>=1.13.1 redis>=5.0.4 httpx>=0.27.0 diff --git a/docker/app/Dockerfile.backend b/docker/app/Dockerfile.backend index 1f03dca..c5a7195 100644 --- a/docker/app/Dockerfile.backend +++ b/docker/app/Dockerfile.backend @@ -11,7 +11,7 @@ RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple \ && pip install -r /tmp/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple \ && rm -f /tmp/requirements.txt -RUN python -c "import fastapi, uvicorn, psycopg, sqlalchemy, redis, jwt, passlib, httpx, alembic; print('backend dependency check ok')" +RUN python -c "import fastapi, uvicorn, psycopg, psycopg_pool, sqlalchemy, redis, jwt, passlib, httpx, alembic; print('backend dependency check ok')" RUN mkdir -p /opt/yg-ft/logs/backend /data/yg-ft \ && chmod -R 0775 /opt/yg-ft /data/yg-ft diff --git a/frontend/src/views/approvals/ApprovalInstanceView.vue b/frontend/src/views/approvals/ApprovalInstanceView.vue index db29b4f..4664758 100644 --- a/frontend/src/views/approvals/ApprovalInstanceView.vue +++ b/frontend/src/views/approvals/ApprovalInstanceView.vue @@ -3,7 +3,8 @@ import { onMounted, reactive, ref } from 'vue' import { ElMessage } from 'element-plus' import DataTablePage from '@/components/DataTablePage.vue' import { getApprovalInstances, decideApproval, type ApprovalInstance } from '@/api/modules/approval' -import { getUsers, type SystemUser } from '@/api/modules/system' +import { getUsers } from '@/api/modules/system' +import type { SystemUser } from '@/types' const loading = ref(false) const instances = ref([]) @@ -48,6 +49,10 @@ function openDecide(inst: ApprovalInstance) { showDecide.value = true } +function asApprovalInstance(row: unknown): ApprovalInstance { + return row as ApprovalInstance +} + async function submitDecision() { if (!current.value) return if (!decision.value.approver_id) { @@ -72,7 +77,7 @@ onMounted(() => { diff --git a/frontend/src/views/projects/ProjectListView.vue b/frontend/src/views/projects/ProjectListView.vue index 5f9447b..9deff91 100644 --- a/frontend/src/views/projects/ProjectListView.vue +++ b/frontend/src/views/projects/ProjectListView.vue @@ -41,6 +41,10 @@ function openDetail(id: string) { router.push(`/projects/${id}`) } +function asProject(row: unknown): Project { + return row as Project +} + async function submitCreate() { if (!form.value.name || !form.value.code) { ElMessage.warning('请填写项目名与编码') @@ -61,7 +65,7 @@ onMounted(() => {