Awesome CopilotAdventures

Documentação do produto verificada

Analise e documente a biblioteca Python

Explique a implementação que você tem, não a aplicação que um modelo espera. As variantes Python e C# têm conceitos semelhantes, mas não há garantia de que tenham APIs, diferenciação entre maiúsculas e minúsculas ou tratamento de erros idênticos.

Resumo do laboratório

Uma estrutura de módulos de código-fonte se conecta por caminhos traçados a duas pilhas de registros armazenados.

Ilustração conceitual original (SVG)

Explique a raiz real de importação e o fluxo de dados.

Em resumo Sua rota
Nível e tempo 200; 45 minutos (estimativa de facilitação)
Ação inicial Rastreie return_loan e diferencie os erros registrados das exceções propagadas.
Materiais do aluno Baixe 02-python.zip
Workspace Abra a raiz do kit extraído; execute a baseline de library relativa a essa raiz
Verificação inicial esperada Os testes unittest existentes são descobertos e passam.
Ajuda de configuração Baixe, extraia, Git local e GitHub opcional

[!NOTE] As fixtures de Python e C# compartilham um domínio, não necessariamente um comportamento idêntico.

Conceitos · Primeira tarefa · Lista de evidências · Redefinir

Objetivos de aprendizagem

  • Identifique a raiz correta de importação e execução do Python.
  • Rastreie ações do console pelos serviços até o armazenamento JSON.
  • Documente comportamentos testados e limitações sem garantias inventadas.

Antes de começar

Conclua a configuração de Python e prepare 02-python. Use a fixture da biblioteca Python incluída. Execute os comandos abaixo a partir do diretório library dela.

Conceitos e casos de uso

Pasta Papel
console Construir dependências, ler entrada e apresentar resultados
application_core Entidades, interfaces, decisões dos serviços
infrastructure Carregamento de JSON, preenchimento de referências e persistência
tests Cenários de serviços usando unittest e mocks

Cenário do exercício

Um colega precisa de instruções confiáveis de integração para a biblioteca. Documente busca de usuários, renovação de associação, devolução/prorrogação de empréstimos e as limitações que o código-fonte realmente apresenta.

Tarefa 1 - Execute e inspecione a linha de base

python -m unittest discover -s tests -p "test_*.py" -v
python console/main.py
  1. Registre os nomes dos testes e os códigos de saída.
  2. Leia console/main.py e rastreie como JsonData, repositórios e serviços são construídos.
  3. Inspecione os caminhos do carregador relativos ao módulo dele. Não presuma que a convenção de configurações do C# se aplica ao Python.
  4. Use somente os registros sintéticos fornecidos. Os fluxos de devolução/renovação podem persistir alterações.

Tarefa 2 - Investigue um fluxo de trabalho

Trace return_loan from the console into LoanService and JsonLoanRepository.
Identify populated entities and when data is saved. Cite source paths.
What happens when an ID is missing or a file cannot be loaded? Do not edit.

Verifique com o código. Um erro impresso por JsonData não implica que uma exceção foi propagada ou que um objeto parcialmente carregado seja utilizável.

Tarefa 3 - Modele os dados

---
config:
  theme: base
  look: classic
  themeVariables:
    darkMode: false
    background: "#ffffff"
    primaryColor: "#f5f5f5"
    primaryTextColor: "#111111"
    primaryBorderColor: "#555555"
    secondaryColor: "#e0e0e0"
    secondaryTextColor: "#111111"
    secondaryBorderColor: "#666666"
    tertiaryColor: "#bdbdbd"
    tertiaryTextColor: "#111111"
    tertiaryBorderColor: "#444444"
    lineColor: "#444444"
    textColor: "#111111"
    mainBkg: "#f5f5f5"
    nodeBorder: "#555555"
    clusterBkg: "#ffffff"
    clusterBorder: "#999999"
    edgeLabelBackground: "#ffffff"
    actorBkg: "#e0e0e0"
    actorBorder: "#555555"
    actorTextColor: "#111111"
    actorLineColor: "#777777"
    signalColor: "#333333"
    signalTextColor: "#111111"
    labelBoxBkgColor: "#f5f5f5"
    labelBoxBorderColor: "#777777"
    labelTextColor: "#111111"
    loopTextColor: "#111111"
    activationBkgColor: "#bdbdbd"
    activationBorderColor: "#555555"
    noteBkgColor: "#f5f5f5"
    noteTextColor: "#111111"
    noteBorderColor: "#777777"
    attributeBackgroundColorOdd: "#f5f5f5"
    attributeBackgroundColorEven: "#e0e0e0"
---
erDiagram
    accTitle: Títulos, exemplares físicos e empréstimos da biblioteca
    accDescr: Um livro pode ter vários exemplares físicos; cada empréstimo associa um exemplar físico a um usuário da biblioteca.
    BOOK ||--o{ BOOK_ITEM : tem
    BOOK_ITEM ||--o{ LOAN : aparece_em
    PATRON ||--o{ LOAN : pega_emprestado
    BOOK {
        int id
        string title
    }
    BOOK_ITEM {
        int id
        int book_id
    }
    LOAN {
        int id
        int book_item_id
        int patron_id
    }
    PATRON {
        int id
        string name
    }

Legenda. As caixas são tipos conceituais de registro; pés de galinha significam vários registros relacionados. Os nomes dos campos correspondem às entidades Python.

Explicação. A disponibilidade pertence a um exemplar físico e ao seu empréstimo ativo, não a todos os exemplares de um título. Este modelo não cria restrições de chave estrangeira no JSON.

Tarefa 4 - Produza documentação com uma edição delimitada

  1. Peça a Plan seções de README com referências às fontes e comandos exatos.
  2. Revise configuração, raiz de importação, fluxos implementados, efeitos colaterais no JSON, escopo dos testes e restauração.
  3. Peça a Agent que edite somente o README.
  4. Execute os comandos dele a partir do diretório documentado. Registre os erros em vez de alterar silenciosamente a aplicação durante a documentação.
  5. Compare o README com os testes reais; evite afirmações como “totalmente coberto”.

Verifique seu trabalho

  • A raiz de importação e o comando do console são reproduzíveis.
  • As relações dos dados são precisas.
  • O comportamento atual e as melhorias propostas estão separados.
  • As limitações de carregamento/persistência são explícitas.
  • Somente as alterações pretendidas de documentação/exploração de dados aparecem no diff.

Solução de problemas

Se application_core não puder ser importado, verifique se o diretório de trabalho é library. Se nenhum teste for encontrado, inspecione o executor e o padrão de arquivos. Se um fluxo modificar o JSON, restaure somente o arquivo da fixture copiada após salvar as evidências.

Prática independente

Compare um fluxo com a variante C#. Indique uma diferença real de implementação em vez de alegar que as duas stacks são semanticamente idênticas.

Restauração

Feche o console, preserve o README e as evidências e restaure somente os arquivos alterados na cópia descartável. Não modifique o currículo de origem.

Referências oficiais

Buscar

Busca em português do Brasil. Os caminhos e os exemplos executáveis mantêm o texto original.