feat: 生产部署 + 会议全链路 (执行方分配/费用结算/签到脱敏/H5相机)

- 生产 nginx 三路径: ry-vue3 /hg/, ry-h5 /camera/, API /hg-api, .env 分环境
- 签约链接/摄像头 base-url 走 yml, 不再硬编码 /hg 与 localhost
- 新增 biz_project_executor_assign (镜像 sponsor_assign) 执行方项目级分配
- 会议费用后台汇总 FeeCalcScheduler + 结算回写项目金额 + 状态流转调度
- 签到表拍照高斯模糊脱敏 extra_oss_url, 新增 PosterService/StageDeriver
- 清理 biz_support_intent 旧表 (6 Java/XML 删除)
- ry-h5 相机黑屏修复: 显式 video.play() + 动态 apiBase 上传
- 资源: simhei 字体 / logo.png / qrcode_1.png / favicon.ico

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
郭庆泰
2026-08-24 01:00:09 +08:00
co-authored by Claude
parent 80a276e661
commit 904e28710f
123 changed files with 6008 additions and 1706 deletions
+8 -1
View File
@@ -5,7 +5,7 @@
<view class="back-btn" @click="goBack">
<text class="back-icon"></text>
</view>
<text class="topbar-title">全景取景 (16:9)</text>
<text class="topbar-title">{{ title }}</text>
<view class="placeholder" />
</view>
@@ -19,6 +19,7 @@
playsinline
/>
<image
v-if="isFront"
class="frame panorama-frame"
src="/static/overlay/panorama.svg"
mode="widthFix"
@@ -65,11 +66,17 @@
<script setup lang="uts">
import { useCamera } from '@/composables/useCamera'
import { getCameraParams } from '@/utils/upload'
const videoId = 'panorama-video'
const { captured, errorMsg, startCamera, flipCamera, takePhoto, retake, confirm } =
useCamera(videoId)
// 前全景 (L_PANORAMA_FRONT) 带定位框, 后全景 (L_PANORAMA_BACK) 不带
const subType = getCameraParams().subType
const isFront = subType === 'L_PANORAMA_FRONT'
const title = isFront ? '前全景取景 (带定位框)' : '后全景取景'
function goBack() {
uni.navigateBack()
}
+2 -1
View File
@@ -67,8 +67,9 @@
import { useCamera } from '@/composables/useCamera'
const videoId = 'signin-video'
// A4 纸 20%~50% 区间 (签到人手机号/身份证号所在的姓名栏) 做高斯模糊脱敏
const { captured, errorMsg, startCamera, flipCamera, takePhoto, retake, confirm } =
useCamera(videoId)
useCamera(videoId, { start: 0.2, end: 0.5, radius: 20 })
function goBack() {
uni.navigateBack()