Record verified public site deployment The public FSHD site is now served through the Docker Caddy and FRP path, so the handoff needs to document the actual runtime instead of the earlier sudo-based blocker. This records the working domain routing, certificate state, and regression checks for both the new static site and the existing questionnaire. Constraint: Existing fshd.eryu.fun questionnaire must remain available while adding fshdscreem.eryu.fun Rejected: Document host-level /usr/bin/caddy reload | the active Caddy instance runs in Docker and the host binary is absent Confidence: high Scope-risk: narrow Directive: Do not use the old reload-caddy.sh sudo path for this deployment; reload Docker container fshd-domain-caddy and restart seal-owned frpc instead Tested: curl HTTPS 200 for fshdscreem.eryu.fun; curl HTTPS 200 for fshd.eryu.fun; API OPTIONS 204; Playwright desktop/mobile snapshots for new site; Playwright old questionnaire entry flow to step 1/15 Not-tested: Full photo upload submission with real files
Record verified public site deployment
The public FSHD site is now served through the Docker Caddy and FRP path, so the handoff needs to document the actual runtime instead of the earlier sudo-based blocker. This records the working domain routing, certificate state, and regression checks for both the new static site and the existing questionnaire.
Constraint: Existing fshd.eryu.fun questionnaire must remain available while adding fshdscreem.eryu.fun
Rejected: Document host-level /usr/bin/caddy reload | the active Caddy instance runs in Docker and the host binary is absent
Confidence: high
Scope-risk: narrow
Directive: Do not use the old reload-caddy.sh sudo path for this deployment; reload Docker container fshd-domain-caddy and restart seal-owned frpc instead
Tested: curl HTTPS 200 for fshdscreem.eryu.fun; curl HTTPS 200 for fshd.eryu.fun; API OPTIONS 204; Playwright desktop/mobile snapshots for new site; Playwright old questionnaire entry flow to step 1/15
Not-tested: Full photo upload submission with real files
这是一个面向 FSHD(面肩肱型肌营养不良症)早期筛查场景的开源 Web 应用原型。项目基于 Vue 3 前端和 FastAPI 后端,支持上传面部与上肢动作图片,并生成结构化的早筛辅助报告、风险提示和后续建议。
本项目只用于早筛辅助、科普展示和研究探索,不构成医疗诊断或治疗建议。
frontend/
backend/
photo-intake-tool/
codex/
后端默认连接本地 Docker OpenClaw 的 OpenAI 兼容网关,不会静默退回到模拟结果。
只有显式设置下面的环境变量时,才允许使用模拟筛查:
SCREENING_ALLOW_MOCK=true
默认接口地址:
OPENCLAW_BASE_URL=http://127.0.0.1:42060/v1 CHAT_OPENCLAW_URL=http://127.0.0.1:42060/v1/chat/completions
如果 OpenClaw 网关需要鉴权,可以通过以下任一环境变量提供令牌:
OPENCLAW_TOKEN=你的-openclaw-token OPENAI_API_KEY=你的-openclaw-token CHAT_OPENCLAW_TOKEN=你的-openclaw-token
后端还会尝试从以下本地配置文件读取令牌:
openclaw-data/.openclaw/openclaw.json
openclaw/config/openclaw.json
这些本地配置文件不应提交到公开仓库。
OPENCLAW_BASE_URL=http://127.0.0.1:42060/v1 OPENCLAW_MODEL=openai/qwen3.5-plus OPENAI_MODEL=openai/qwen3.5-plus OPENAI_BASE_URL=http://127.0.0.1:42060/v1 OPENAI_API_KEY=你的-openclaw-token OPENAI_TWO_PASS=true CHAT_OPENCLAW_ENABLED=true CHAT_OPENCLAW_URL=http://127.0.0.1:42060/v1/chat/completions CHAT_OPENCLAW_ALLOW_LOCAL_FALLBACK=false SCREENING_ALLOW_MOCK=false LOG_LEVEL=INFO
前端:
cd frontend npm install npm run dev
后端:
cd backend uv sync uv run uvicorn main:app --reload
在项目根目录执行:
$env:PYTHONPATH='E:\workspace\Projects\fshd' uv run --project backend pytest backend
cd frontend node tests/test_chat_contract.mjs
http://127.0.0.1:42060/v1
cd backend uv run uvicorn main:app --reload
curl -X POST http://127.0.0.1:8000/api/analyze ^ -F "files=@E:/workspace/Projects/fshd/素材/images/boy.png"
"source": "openclaw"
screening_pipeline_complete
/api/chat/turn
"screening_source": "openclaw"
如果 OpenClaw 不可用,接口会返回清晰的 503 错误,不会假装完成真实筛查。
503
公开仓库不包含真实患者数据、原始数据集、本地日志、上传文件、部署密钥或本地 OpenClaw 配置。涉及医学影像、训练数据和实验结果的材料需要先完成授权确认与脱敏治理,再决定是否公开。
本项目仅用于早筛辅助、科普展示和研究探索。任何输出都不能替代专业医生的诊断、检查或治疗建议。
FSHD 肌营养病早筛辅助系统是一个面向面肩肱型肌营养不良症早期筛查场景的开源 Web 应用原型。项目基于 Vue 3 前端和 FastAPI 后端,支持用户上传面部与上肢动作图片,生成结构化早筛辅助报告与风险提示。项目定位为早筛辅助和研究探索工具,不构成医疗诊断或治疗建议;后续将继续完善图像评估、数据治理、模型验证和可解释报告能力。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
FSHD 肌营养病早筛辅助系统
这是一个面向 FSHD(面肩肱型肌营养不良症)早期筛查场景的开源 Web 应用原型。项目基于 Vue 3 前端和 FastAPI 后端,支持上传面部与上肢动作图片,并生成结构化的早筛辅助报告、风险提示和后续建议。
本项目只用于早筛辅助、科普展示和研究探索,不构成医疗诊断或治疗建议。
项目组成
frontend/:Vue 3 + Vite 前端,提供聊天式上传、结果展示和风险解释界面。backend/:FastAPI 后端,提供会话、图片分析、风险评估和计划生成接口。photo-intake-tool/:照片采集辅助工具,用于引导用户按标准动作拍摄照片。codex/:项目接手说明、验证记录和后续计划。默认后端行为
后端默认连接本地 Docker OpenClaw 的 OpenAI 兼容网关,不会静默退回到模拟结果。
只有显式设置下面的环境变量时,才允许使用模拟筛查:
默认接口地址:
如果 OpenClaw 网关需要鉴权,可以通过以下任一环境变量提供令牌:
后端还会尝试从以下本地配置文件读取令牌:
openclaw-data/.openclaw/openclaw.jsonopenclaw/config/openclaw.json这些本地配置文件不应提交到公开仓库。
推荐环境变量
本地开发
前端:
后端:
最小验证
1. 确认后端测试
在项目根目录执行:
2. 确认前端契约
3. 确认真实 OpenClaw 链路
http://127.0.0.1:42060/v1可访问。"source": "openclaw"。screening_pipeline_complete。/api/chat/turn顶层"source": "openclaw"表示聊天编排使用了 OpenClaw。/api/chat/turn中"screening_source": "openclaw"表示图片筛查使用了 OpenClaw。如果 OpenClaw 不可用,接口会返回清晰的
503错误,不会假装完成真实筛查。公开仓库说明
公开仓库不包含真实患者数据、原始数据集、本地日志、上传文件、部署密钥或本地 OpenClaw 配置。涉及医学影像、训练数据和实验结果的材料需要先完成授权确认与脱敏治理,再决定是否公开。
免责声明
本项目仅用于早筛辅助、科普展示和研究探索。任何输出都不能替代专业医生的诊断、检查或治疗建议。