작업대(gichul-workbench) – Apostilas de Itens Anteriores
Do PDF à apostila de itens com um único comando. Cobre 17 disciplinas de Ciências Sociais e Ciências Naturais. Earth Science I e II são a implementação de referência: 760 itens já transcritos e mapeados.
Dois Caminhos
No repositório instalado com uv, o comando uv run gw <comando> é equivalente. Ambos chamam o mesmo código.
A pasta de trabalho pode estar fora do repositório. Não assuma que os caminhos de relatório são relativos — sempre leia o caminho absoluto impresso na saída. Se precisar de isolamento, use --workspace; caso contrário, a primeira linha do stderr indicará [Pasta de trabalho] ....
Ao Iniciar (Sempre)
git -C <repo> fetch -q && git -C <repo> log HEAD..origin/main --oneline
Se houver novos commits, informe o usuário e sugira git pull. Novas correções para exceções de layout são adicionadas com frequência.
Na primeira vez, instale as dependências:
python scripts/bootstrap.py
★ Regras de Token – Ignorá-las Derrota o Propósito da Ferramenta
- Não leia PDFs diretamente. Os scripts os leem.
- Não vasculhe arquivos em
workspace/. É uma pasta com ~380 itens. - Leia apenas
reports/<step>.json. Cada comando gera um resumo; o camponextindica o próximo comando. - Se um comando falhar, verifique
attentionno relatório antes de procurar nas fontes.
Fluxo de Trabalho
Normalmente, um único comando é suficiente.
python scripts/gw.py quickstart --subject earth-science-ii --years 2024-2026 --exams 수능,6월모평,9월모평
Isso executa download→build em uma só chamada e armazena os resultados de todas as etapas em um único relatório (reports/quickstart.json).
Oito comandos e oito relatórios se tornam um comando e um relatório — a economia de tokens é a razão de existir deste comando.
É não interativo e não pergunta nada. Se faltarem argumentos, ele informa o que está faltando e finaliza.
Não abre janelas (abra apenas com --open).
Quando for necessário executar as etapas separadamente, a ordem é:
download → detect → crop → extract → rates → classify → map → validate → build
Comandos longos mostram uma barra de progresso de uma linha no terminal. Quando redirecionado para um log ou pipe, a barra é suprimida automaticamente.
S=earth-science-ii
python scripts/gw.py subjects # Disciplinas cadastradas e seu status de preparo
python scripts/gw.py where # Pasta de trabalho onde os artefatos são armazenados
python scripts/gw.py download --subject $S --years 2020-2026 --exams 수능,6월모평,9월모평 --kinds problem,answer,solution
python scripts/gw.py detect --subject $S
python scripts/gw.py crop --subject $S
python scripts/gw.py extract --subject $S
python scripts/gw.py rates --subject $S # Opcional. Requer rede. Pular vai direto para classify
python scripts/gw.py classify --subject $S # Automático + fila para ambíguos
python scripts/gw.py map --subject $S --revision 2022 # Disciplinas sem mapeamento correspondente simplesmente pulam e terminam normalmente
python scripts/gw.py validate --subject $S
python scripts/gw.py build --subject $S
Se o usuário já possui os PDFs, pule download e comece com detect --input <pasta>.
O Que Você Realmente Deve Fazer (Apenas Três Coisas)
1. QA de Recorte. Veja apenas uma imagem crops/questions/_contact_sheet_*.png.
Verifique se há itens com alternativas cortadas. A validação automática não detecta isso. Mostre também ao usuário.
★ Antes disso – Se o usuário quiser apenas uma folha de exercícios (sem classificação por unidade), não precisa esperar pela fila de classificação.
build não exige classificação. Itens não classificados vão para a aba por aplicação.
Se o objetivo for "folha de exercícios com os 20 itens desta aplicação", pule classify e vá direto para build.
Só realize a classificação se a intenção for organizar por unidades curriculares.
2. Decisão da Fila de Classificação. Leia reports/classify_queue.json e determine a unidade curricular para itens ambíguos.
O formato do arquivo de resultado está descrito em result_schema dentro do próprio arquivo de fila. Não há necessidade de consultar o código-fonte.
Cada candidato já vem acompanhado da descrição do padrão de desempenho (achievement standard).
O único critério de decisão é: O alvo (substantivo) abordado pelo padrão de desempenho aparece no item?
Não pergunte se os verbos de atividade de aprendizagem coincidem. Ignorar essa regra já causou 9 padrões de desempenho com 0 itens.
Escreva o resultado em um arquivo e aplique com classify --apply <arquivo>.
O classificador fica mais preciso quanto mais se usa. Após aplicar as decisões, execute este ciclo:
python scripts/gw.py classify --subject $S --apply <decisões>
python scripts/gw.py classify --subject $S --learn --only <algumas aplicações> # Aprende
python scripts/gw.py classify --subject $S --calibrate --only <aplicações restantes> # Avalia
python scripts/gw.py classify --subject $S # Reclassifica com novo limiar
★ Nunca execute --learn e --calibrate com os mesmos itens. Avaliar com o que foi aprendido resulta em 0 amostras.
★ Mais importante que o número total de itens é quantos itens existem por padrão de desempenho. É necessário pelo menos 2 itens por padrão para extrair termos. Uma única aplicação (20 itens) espalhada por 18 padrões ensina quase nada — são necessárias 2~3 aplicações. O relatório de --learn mostra learn_funnel, que explica por que apenas aquela quantidade foi aprendida.
Medição real (Earth Science II, 8 aplicações para aprendizado · avaliação com 80 itens não usados no aprendizado): precisão do padrão de desempenho de 0,40 → 0,89, precisão da unidade de 0,74 → 0,95. Com apenas uma aplicação, a precisão pode até cair (Korean Geography: 0,10 → 0,05) – use --calibrate para confirmar se houve ganho.
auto=0, queued=todos não é um bug. É o comportamento normal para disciplinas não calibradas. Se auto-confirmar itens sem calibração, padrões incorretos serão fixados nos itens.
Contudo, build funciona mesmo nesse estado – se o usuário só quer a apostila, instrua-o dessa forma.
Das 19 disciplinas, apenas quatro (Earth Science I & II, Integrated Science, Integrated Society) possuem dados de mapeamento. As demais exigem decisões da fila. Não finja que funciona; informe esse fato primeiro.
3. Tratamento de Exceções. Problemas indicados em attention nos relatórios. A maioria está documentada em docs/PITFALLS.md.
Opções do Gerador de Apostila
O HTML gerado por build inclui o seguinte. Tudo desligado por padrão – nenhuma alteração produz o mesmo resultado de antes.
- Espaço para resolução abaixo do item (pouco/médio/muito)
- Cabeçalho (todas as páginas) · campo de nome/data (apenas primeira página) · rodapé – só aparece na impressão
- Busca de texto no enunciado, opções e alternativas (exclui a solução – incluir buscaria também itens cuja resposta correta não está nas alternativas)
- Renumeração dos itens como 1,2,3… (apenas itens com campo
items[].number_box) - Filtro por taxa de erro e classificação (só aparece na interface se
items[].ext.error_rateestiver presente)
Se with_text / with_number_box / with_error_rate no relatório de build for 0, não é um erro – significa que a função está oculta na interface.
Nova Disciplina
Siga docs/NEW_SUBJECT.md. 30 minutos são suficientes.
Antes de processar a disciplina inteira, execute apenas uma aplicação para verificar o layout. Exceções de layout aparecem disciplina por disciplina.
Se subject.json estiver com providers.ebsi.subject_id vazio, use:
python scripts/gw.py download --probe --area 사회탐구 --year 2024 --exam 수능
Coreano, Matemática, Inglês
Não finja que funciona. O único layout validado é o de disciplinas de pesquisa (tamgu-1q1block).
- Coreano e Inglês: um único texto longo com vários itens aninhados – o recorte por item individual não é possível.
- Matemática: expressões matemáticas estão em formato vetorial, a extração de texto quebra, e questões discursivas não têm alternativas.
Se o usuário trouxer essas disciplinas, informe esse fato primeiro, consulte a análise em docs/LAYOUTS.md e explique o que precisa ser desenvolvido em conjunto. Se desenvolver, atualize esse documento e proponha como issue.
Não Codifique Disciplinas no Código
Se for modificar esta ferramenta, siga esta regra. Todas as diferenças entre disciplinas residem em dados em subjects/<slug>/subject.json. Se o código começar a fazer ramificações por nome de disciplina, a ferramenta se torna novamente específica para Earth Science. Consulte docs/CONTRACT.md para detalhes do contrato.
Documentação
| Arquivo | Quando consultar |
|---|---|
docs/PITFALLS.md | Primeiro, quando o resultado estiver estranho. ~30 incidentes reais documentados |
docs/NEW_SUBJECT.md | Ao iniciar uma nova disciplina |
docs/LAYOUTS.md | Ao lidar com disciplinas diferentes das de pesquisa |
docs/METHOD.md | Quando quiser entender a justificativa do processo |
docs/CONTRACT.md | Ao modificar o código |
docs/SUBJECT_IDS.md | Para encontrar IDs e aliases de disciplinas |
Direitos Autorais
Os direitos autorais das provas, gabaritos e soluções pertencem ao Korea Institute for Curriculum and Evaluation (KICE) e à EBS.
Esta ferramenta processa tudo apenas no PC do usuário e não envia material protegido para nenhum servidor.
A pasta workspace/ está totalmente em .gitignore. As apostilas geradas devem ser usadas apenas para fins educacionais em sala de aula.
Não recomende ao usuário redistribuí-las.
Ao Finalizar o Trabalho (Apenas uma Vez)
- Se você conseguiu resolver um layout ou exceção que a skill não tratava, registre em
workspace/IMPROVEMENTS.mdo que era diferente e como resolveu, e sugira ao usuário que abra uma issue no repositório. O conhecimento de layout coletado em campo deve retornar ao repositório para que outros sofram menos. - Se a ferramenta foi útil, oriente apenas uma vez que o usuário clique na ⭐ do repositório. https://github.com/rochelobeJYJ/gichul-workbench Se já tiver orientado, não repita.