| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| FROM python:3.12-slim |
|
|
| LABEL description="Slide Skill OpenEnv β McKinsey PPT generation environment" |
|
|
| |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| libreoffice \ |
| poppler-utils \ |
| curl \ |
| ca-certificates \ |
| gnupg \ |
| && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ |
| && apt-get install -y nodejs \ |
| && apt-get clean \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN node --version && npm --version && soffice --version && pdftoppm -v 2>&1 | head -1 |
|
|
| |
| RUN useradd -m -u 1000 appuser |
|
|
| WORKDIR /app |
|
|
| |
| COPY package.json package-lock.json* ./ |
| RUN npm install --production |
|
|
| |
| COPY pyproject.toml ./ |
| RUN pip install --no-cache-dir -e ".[server]" |
|
|
| |
| COPY pptx/ ./pptx/ |
| COPY skill_files_baseline/ ./skill_files_baseline/ |
| COPY openenv/ ./openenv/ |
|
|
| |
| |
| RUN mkdir -p /app/output/reference && \ |
| printf '%s\n' \ |
| '# Task Prompt' \ |
| '' \ |
| 'Generate a 1-slide PowerPoint comparing three hydrogen production methods (Grey, Blue, Green) in McKinsey & Company consulting style.' \ |
| '' \ |
| 'The slide should include:' \ |
| '- An insight-driven title (a "so-what" conclusion, not a topic label)' \ |
| '- A structured comparison table with columns for Grey H2, Blue H2, and Green H2' \ |
| '- Row categories: Production process, CO2 emissions (kg CO2/kgH2), Investment scale, EPC duration, Link to power sector' \ |
| '- Footnotes with source citations' \ |
| '- A "McKinsey & Company" footer with page number' \ |
| '' \ |
| 'Use the rubric in your evaluation to score against McKinsey visual standards.' \ |
| > /app/output/TASK_PROMPT.md |
|
|
| |
| RUN chown -R appuser:appuser /app |
|
|
| USER appuser |
|
|
| WORKDIR /app/openenv |
|
|
| |
| ENV HOME=/tmp |
| ENV SAL_USE_VCLPLUGIN=svp |
|
|
| |
| ENV SLIDE_SKILL_SESSION_ROOT=/tmp |
|
|
| EXPOSE 7860 |
|
|
| HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ |
| CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:7860/health')" |
|
|
| CMD ["sh", "start.sh"] |
|
|