Repository navigation
feat(suggestions): ciclo humano de sugestoes da IA e proveniencia por… - #45
Merged
Merged
Conversation
… campo (S2-13) Introduz o modulo de sugestoes (sugestao_ia) com maquina de estados pendente -> aceita/editada/descartada, idempotente tanto na proposta (upsert via indice unico parcial) quanto na resolucao (FOR UPDATE + mesmo resultado = no-op, resultado diferente = 409). Nenhum campo do item muda sem aceite/edicao explicita, e a IA nunca escreve direto nas tabelas de negocio - so o backend Node grava, reaproveitando os guardas de arquivamento e justificativa de item concluido ja existentes. Adiciona provenance_json em epico/feature/pbi para rastrear a origem de cada campo (human-authored por omissao, ai-accepted, ai-edited), atualizado tanto pelo ciclo de sugestoes quanto pela edicao manual via epics/features/pbis.repository (markFieldsHumanAuthored), garantindo que o cadastro manual continue funcionando integralmente com a IA desligada. Backend: migration 014, modulos provenance/ e suggestions/ (types, repository, service, routes, fakes) com testes de unidade e de integracao real no Postgres; openapi.yaml documentado para as 15 novas rotas; CI atualizado com os novos testes de banco. Frontend: api_suggestions.ts, SuggestionsPanel (aceitar/editar/descartar com estado visual distinto, usando o componente AISuggestion do design system) e ProvenanceBadge inline nos campos sugeriveis de epicos, features e PBIs.
package-lock.json tinha proxy-addr@2.0.7 fixado (dependencia transitiva do express), dentro da faixa vulneravel 1.1.0-2.0.7 de IP spoofing via subnet IPv6 mapeado para IPv4. npm audit fix resolveu sem mudanca major, 0 vulnerabilidades. Build e suite completa (309/309) seguem passando.
…ions-provenance # Conflicts: # .github/workflows/ci.yml # backend/src/index.ts # backend/src/modules/epics/epics.repository.ts # backend/src/modules/features/features.repository.ts # backend/src/modules/pbis/pbis.repository.ts # frontend/src/views/backlog/EpicsView.tsx # frontend/src/views/backlog/FeaturesView.tsx # frontend/src/views/backlog/PbisView.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que foi feito?
Implementado o ciclo humano de sugestões da IA com proveniência por campo e fallback manual (S2-13), cobrindo PBI-03.2.1/03.2.2/03.2.3.
Alterações técnicas
provenance_jsonem epico/feature/pbi + tabelasugestao_ia(índice único parcial para idempotência de proposta).modules/suggestions,modules/provenance): máquina de estadospendente → aceita/editada/descartada, idempotente na resolução (mesmo resultado = no-op 200, resultado diferente = 409 viaFOR UPDATE). Reaproveita os guardas existentes de arquivamento e justificativa de item concluído. A IA nunca escreve nas tabelas de negócio — só o backend Node grava, após aceite/edição explícitos.markFieldsHumanAuthoredintegrado emepics/features/pbis.repository.ts: toda edição manual marca os campos comohuman-authored, sobrescrevendo proveniência anterior — o fluxo manual segue 100% funcional com a IA desligada.docs/api/openapi.yaml: 15 novas rotas documentadas (list/create/accept/edit/discard × epic/feature/pbi);ci.ymlcom os dois novos testes de banco.api_suggestions.ts,SuggestionsPanel(aceitar/editar/descartar com estado visual distinto, usando o componenteAISuggestiondo design system que já existia mas estava sem uso) eProvenanceBadgeinline nos campos sugeríveis de épicos, features e PBIs.Como validar
npm test(289/289) e com Postgres realARCHIVE_TEST_DATABASE_URL/BACKLOG_TREE_TEST_DATABASE_URLsetados (353/354, 1 skip é de outro teste não relacionado) — incluisuggestions.db.test.tsemigration-014.db.test.tscobrindo corrida de arquivamento, política de justificativa e isolamento entre entidades.npx tsc --noEmit,npm run audit:security(0 vulnerabilidades) eopenapi.contract.test.ts— todos limpos.npx tsc -b,npm test(209/209),npm run build— todos limpos.A ser feito (checklist)
DecisionsPanel).e2e/tests/suggestions.e2e.mjsdedicado (oDecisionsPanel, que é o precedente mais próximo, também não tem um).cc @LoadCG
Também notei uma pasta
API-4/não rastreada na raiz do repo, já presente antes desta sessão - não toquei nela, mas pode valer uma limpeza.