-
Notifications
You must be signed in to change notification settings - Fork 6
docs: adicionar proposta do projeto MarkAPI (Markdown) - #68
docs: adicionar proposta do projeto MarkAPI (Markdown) #68robertatakenaka with Copilot wants to merge 7 commits into
Conversation
Agent-Logs-Url: https://github.com/scieloorg/markapi/sessions/14fb5775-681c-4a32-b9b6-de0b5d8131f3 Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
robertatakenaka
commented
Apr 29, 2026
@copilot também há o serviço de marcação automática das referências, elabore a documentação sobre isso
Agent-Logs-Url: https://github.com/scieloorg/markapi/sessions/2647bc33-83b2-4acb-8e1d-a22e9de00c8c Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
@copilot também há o serviço de marcação automática das referências, elabore a documentação sobre isso
Adicionada na seção "Funcionalidades" uma subseção dedicada à Marcação automática de referências bibliográficas, descrevendo entrada/saída, exposição via API REST (ReferenceViewSet), uso do LlamaService com prompts em reference/config.py, geração do <element-citation> no padrão SPS via reference/data_utils.get_xml, persistência em Reference/ElementCitation com reuso, observabilidade via tracker.GeneralEvent e revisão manual pelo usuário. Commit: 0f79deb.
robertatakenaka
commented
Apr 29, 2026
@copilot informação relevante o público-alvo e forma de instalação. Apesar de ser uma aplicação Web, pode ser instalada como uma ferramenta Desktop para monousuário em um computador ou em um servidor em intranet ou ainda um servidor para internet. Em servidor com GPU funcionará melhor. Na ausência de GPU , usa-se um modelo LLM pequeno. Há a possibilidade de contratar API de LLM, mas o custo e a LLM que se responsabiliza é o usuário ou sua empresa.
...ience Agent-Logs-Url: https://github.com/scieloorg/markapi/sessions/c1eb80dd-6194-42f7-8dfa-e18931e11f87 Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
@copilot informação relevante o público-alvo e forma de instalação. Apesar de ser uma aplicação Web, pode ser instalada como uma ferramenta Desktop para monousuário em um computador ou em um s...
Atualizei docs/proposta.rst (commit cc14d9a):
- Modos de Instalação agora distingue desktop monousuário, servidor em intranet e servidor na internet, mantendo a distribuição via Docker.
- Nova subseção Requisitos de hardware e opções de LLM: melhor desempenho em servidor com GPU; em ambiente sem GPU, uso de modelo LLM pequeno; e possibilidade de configurar uma API externa de LLM contratada, com custo e responsabilidade pelo modelo a cargo do usuário/instituição.
- Público-alvo reescrito para refletir esses três cenários e as opções de LLM.
robertatakenaka
commented
Apr 29, 2026
@copilot adicione info da stack, wagtail, celery, etc, o máximo de detalhes técnicos possível
...ktools, LLMs, Docker/K8s) Agent-Logs-Url: https://github.com/scieloorg/markapi/sessions/47c3e7bb-f2f9-4359-8272-ada21307acef Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
@copilot adicione info da stack, wagtail, celery, etc, o máximo de detalhes técnicos possível
Expandi a seção Arquitetura em alto nível em docs/proposta.rst (commit f4d3cb6) com três blocos:
- Stack tecnológica: Python 3, Django 5, Wagtail 6 (+ wagtail-modeladmin, wagtailmenus, wagtail-localize, wagtail-autocomplete, wagtail-django-recaptcha), DRF 3.15 + SimpleJWT, PostgreSQL (psycopg2), Celery 5 + Redis 6 + Kombu, django-celery-beat / django_celery_results, Flower, Gunicorn/gevent, lxml, python-docx, packtools 4.12.6, langdetect/langid, tenacity, llama-cpp-python, huggingface-hub, google-generativeai, MailHog / django-anymail, Sentry / Elastic APM, django-environ, django-compressor, whitenoise, Docker Compose (
local.yml) e Kubernetes (kubernetes/), além de flake8/isort. - Organização do código: apps registrados em
INSTALLED_APPS(config,core,core_settings,users,xml_manager,referencecomapi/v1/views.py,marker.py,data_utils.py,config.py,config_gemini.py,models.py;model_aicomllama.py/LlamaServicee exceções;docx_layouts,tracker,django_celery_beat). - Fluxo de execução típico: upload DOCX → tarefa Celery → marcação de referências (LLM local ou Gemini) → validação/geração de PDFs via packtools → empacotamento
.zipSPS → eventos notrackere monitoramento via Flower.
Também corrigi a menção a production.yml (inexistente) — a produção é descrita via os manifestos em kubernetes/.
robertatakenaka
commented
Apr 29, 2026
@copilot o sistema ainda está em construção, o production.yml deveria existir. Inclusive se tiver algumas sugestões de funcionalidades (perspectivas) e requisitos não funcionais, por favor, acrescente no documento.
....yml mention Agent-Logs-Url: https://github.com/scieloorg/markapi/sessions/2734776c-1774-4ae9-96da-9bf7d163345b Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
@copilot o sistema ainda está em construção, o production.yml deveria existir. Inclusive se tiver algumas sugestões de funcionalidades (perspectivas) e requisitos não funcionais, por favor, acres...
Atualizado em docs/proposta.rst (commit bc5b461):
- Em Modos de Instalação,
production.ymlvoltou a ser citado, agora como artefato previsto/em construção, ao lado delocal.ymle dos manifestos Kubernetes. - Nova seção Requisitos não funcionais: portabilidade de instalação, reprodutibilidade, i18n/l10n, escalabilidade horizontal, resiliência (Celery/tenacity), observabilidade (tracker, Flower, Sentry, Elastic APM), segurança (JWT, CSRF, reCAPTCHA, segredos via env), privacidade (LLM local vs API contratada), desempenho (GPU, async, reuso de marcações), conformidade SPS (
packtools), manutenibilidade (flake8/isort), auditabilidade e compatibilidade com navegadores. - Nova seção Perspectivas (funcionalidades futuras) com sugestões: novos provedores de LLM (OpenAI, Anthropic, Mistral, Azure, Ollama/vLLM), marcação assistida de outros elementos do SPS (afiliações, autores, financiamento, figuras), editor visual de XML no navegador, suporte a outros formatos de entrada (ODT, RTF, LaTeX, PDF/OCR), validação incremental, enriquecimento via Crossref/PubMed/DOI/ORCID/ROR, ingestão automatizada em sistemas downstream, integração com OJS/ScholarOne, versionamento/auditoria, dashboards e métricas, fine-tuning do LLM local, API pública versionada (OpenAPI), SSO (SAML/OIDC, ORCID), modo offline desktop all-in-one, acessibilidade (WCAG) e telemetria opt-in.
robertatakenaka
commented
Apr 29, 2026
@copilot converta a documentação para markdown
Agent-Logs-Url: https://github.com/scieloorg/markapi/sessions/2fe40dff-b626-4580-86aa-d481b7f857ba Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
@copilot converta a documentação para markdown
Convertido em 725e824:
docs/proposta.rst→docs/proposta.md(mesmo conteúdo, agora em Markdown).docs/conf.py: adicionadomyst_parseràsextensionse configuradosource_suffixpara reconhecer.rste.md.requirements/local.txt: adicionada a dependênciamyst-parserpara que o Sphinx renderize Markdown.docs/index.rst: o toctree continua referenciandoproposta(sem extensão), agora resolvido paraproposta.md.
Build do Sphinx validada localmente sem erros.
Uh oh!
There was an error while loading. Please reload this page.
Não havia documentação de proposta descrevendo o propósito do MarkAPI, seus modos de instalação e suas funcionalidades. Esta PR adiciona um documento
proposta.mdemdocs/, redigido em português (Markdown, renderizado pelo Sphinx viamyst-parser), alinhado ao código do branchmain, à dependênciapacktoolse aos módulos existentes (xml_manager,reference,model_ai,docx_layouts).O que esse PR faz?
docs/proposta.mdcom a proposta do projeto, cobrindo:local.yml— eproduction.ymlprevisto/em construção, além dos manifestos Kubernetes emkubernetes/para ambientes maiores), incluindo subseção Requisitos de hardware e opções de LLM (GPU para melhor desempenho, modelo LLM pequeno em ambiente sem GPU, e possibilidade de configurar uma API externa de LLM contratada com custo e responsabilidade do usuário/instituição)..zipSPS (XML, PDFs por idioma, imagens e ativos digitais nomeados conforme SPS), validação de XML e geração de PDFs viapacktools, marcação automática de referências bibliográficas (serviço dedicado exposto via API REST), marcação automatizada por LLM configurável e ajustes manuais pelo usuário.wagtail-modeladmin,wagtailmenus,wagtail-localize,wagtail-autocomplete,wagtail-django-recaptcha), Django REST Framework 3.15 +djangorestframework-simplejwt, PostgreSQL (psycopg2-binary), Celery 5 + Redis 6 + Kombu,django-celery-beat/django_celery_results, Flower, Gunicorn/gevent, lxml, python-docx, packtools 4.12.6, langdetect/langid, tenacity, llama-cpp-python, huggingface-hub, google-generativeai, MailHog /django-anymail, Sentry / Elastic APM,django-environ,django-compressor, whitenoise, Docker Compose (local.yml,production.ymlprevisto) e Kubernetes (kubernetes/), além de flake8/isort.INSTALLED_APPS(config,core,core_settings,users,xml_manager,reference,model_ai,docx_layouts,tracker,django_celery_beat) para arquivos concretos do repositório.packtools→ empacotamento.zipSPS → eventos notrackere monitoramento via Flower.tenacity), observabilidade (tracker, Flower, Sentry, Elastic APM), segurança (JWT, CSRF, reCAPTCHA, segredos viadjango-environ), privacidade dos dados (LLM local on-premise vs. API contratada), desempenho (GPU, processamento assíncrono, reuso de marcações), conformidade com o SPS viapacktools, manutenibilidade (flake8/isort), auditabilidade e compatibilidade com navegadores modernos.myst_parseremdocs/conf.py(comsource_suffixmapeando.rste.md) emyst-parseremrequirements/local.txt.propostanotoctreededocs/index.rst, agora resolvido paradocs/proposta.md.mixed-citationem texto livre) e saída (<element-citation>no padrão SPS, ou estrutura intermediária);ReferenceViewSetemreference/api/v1/views.py);LlamaService(model_ai) usando prompts eresponse_formatdefinidos emreference/config.py(e alternativa Google Gemini viareference/config_gemini.py);reference/data_utils.get_xml;Reference/ElementCitationcontrolados porReferenceStatus;tracker.GeneralEvent;Onde a revisão poderia começar?
docs/proposta.md— verificar se o conteúdo reflete fielmente o escopo desejado da aplicação, em especial as seções Modos de Instalação (com a subseção Requisitos de hardware e opções de LLM), Marcação automática de referências bibliográficas, Arquitetura em alto nível (stack tecnológica, organização do código e fluxo de execução típico), Requisitos não funcionais, Perspectivas (funcionalidades futuras) e Público-alvo. Em seguida,docs/conf.py(extensãomyst_parseresource_suffix),requirements/local.txt(dependênciamyst-parser) edocs/index.rstpara conferir a inclusão no toctree.Como este poderia ser testado manualmente?
docker-compose -f local.yml up docs.Algum cenário de contexto que queira dar?
A proposta foi redigida a partir do código do
maine da descrição do issue, descrevendo a aplicação como ferramenta de marcação assistida por LLM (opcional) com revisão manual obrigatória para a equipe editorial. A subseção sobre marcação automática de referências, a expansão das seções de Modos de Instalação (com requisitos de hardware/opções de LLM) e Público-alvo, a seção detalhada de Arquitetura em alto nível (stack tecnológica completa, organização do código e fluxo de execução) e as novas seções Requisitos não funcionais e Perspectivas (funcionalidades futuras) foram adicionadas em resposta ao feedback do mantenedor, refletindo os serviços já implementados nos módulosreferenceemodel_ai, os cenários reais de instalação (desktop monousuário, servidor em intranet, servidor na internet, com ou sem GPU, e a opção de API externa de LLM contratada) e as dependências reais derequirements/base.txterequirements/production.txt. Como o sistema ainda está em construção,production.ymlé citado como artefato previsto/em construção, ao lado delocal.yml(existente) e dos manifestos Kubernetes emkubernetes/. Em resposta a um pedido posterior do mantenedor, o documento foi convertido de reStructuredText para Markdown (docs/proposta.md), passando o Sphinx a renderizá-lo viamyst-parser(configuração ajustada emdocs/conf.pye dependência adicionada emrequirements/local.txt), permitindo que próximos documentos da pastadocs/também possam ser escritos em Markdown.Screenshots
Não aplicável — alteração apenas de documentação textual.
Referências
requirements/base.txterequirements/production.txt(Django, Wagtail, DRF + SimpleJWT, Celery, Redis, Kombu, django-celery-beat, Flower, Gunicorn/gevent, lxml, python-docx, packtools, langdetect/langid, tenacity, llama-cpp-python, huggingface-hub, google-generativeai, MailHog/django-anymail, Sentry, Elastic APM) e módulosxml_manager,reference(incluindoreference/api/v1/views.py,reference/marker.py,reference/data_utils.py,reference/config.py,reference/config_gemini.py),model_ai(comllama.py/LlamaServiceeexceptions.py),tracker,core,core_settings,users,config(incluindoconfig/celery_app.pyeconfig/api_router.py) e os manifestos emkubernetes/do próprio repositório.